Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Once the last broker node has been rolled, there will be no more need for ZooKeeper.  We will remove it from the configuration of the controller quorum nodes, and then roll the controller quorum to fully remove it.

Rejected Alternatives

Combined Controller and Broker Nodes

We could have combined the broker and the controller in the same JVM.  This would have the advantage of minimizing the number of JVMs.

However, there are several advantages to keeping them separate.  One is that the deployment model is more familiar to Kafka administrators.  If they had a certain number of ZooKeeper nodes previously, they can just upgrade to having the same number of controller nodes without rethinking cluster sizing or topology.

Another reason is to avoid an unbalanced load.  As the amount of metadata managed by the controller grows, the nodes which must serve this metadata will experience a correspondingly heavier load.  This makes it less realistic to treat the controller nodes exactly the same as all other nodes when performing rebalancing or partition assignment.  Using separate nodes reduces the chance that the current controller will be disrupted by heavy load on a particular broker.  For clusters where the load is small enough that this is not an issue, the system administrator can simply choose to co-locate the controller and broker JVMs.

Pluggable Consensus

Rather than managing metadata ourselves, we could make the metadata storage layer pluggable so that it could work with systems other than ZooKeeper.  For example, we could make it possible to store metadata in etcd, Consul, or similar systems.

...