Distributed Systems by Andrew S. Tanenbaum, Maarten van Steen & Tim Kindberg