Distributed systems: principles and paradigms - Tanenbaum, Andrew S. (Pearson Prentice Hall, 2007)