The purpose of the coordinator is to allow nodes to come online and offline dynamically. This is achieved by the following 3 functions:
- inform about nodes coming online/offline and mediate their addresses to each other
- generate assignment for each keyspace based on required replication factor and a state of previous assignment (to move as few partitions as possible)
- elect leaders for online replicas of the same partition