Distributed Systems: Concepts and Design (International Computer Science Series)