Distributed systems concepts and design - Coulouris, George (International computer science series, 2005)