Distributed Systems – Fundamental Algorithms