Distributed Systems: Principles and Paradigms - Tanenbaum, Andrew S.; Steen, Maarten Van