Distributed Systems: Principles and Paradigms (2nd Edition)