Leader Election In Distributed Systems