Distributed systems: principles and paradigms - Tanenbaum, Andrew S (Pearson, 2015)