You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 13 Next »

Status

Current state["Under Discussion"]

Discussion thread: here

JIRA: here 

Please keep the discussion on the mailing list rather than commenting on the wiki (wiki discussions get unwieldy fast).

Motivation

Pre-Kraft brokers currently register 0 for every controller metric. They do this because in the case of a controller failover, the metrics of a newly elected controller will no longer be 0. KRaft does not have this issue because processes with just the "broker" role are not eligible to become controllers. There is some performance overhead associated with registering metrics, so moving forward it would be best if KRaft processes with just the "broker" role do not expose controller metrics.

Public Interfaces

The behavior of which nodes expose controller metrics will be different in KRaft clusters than the behavior when using Kafka with Zookeeper. KRaft nodes will only expose the controller metrics if the process has the "controller" role. If a KRaft node has the "controller" role but is not the active controller, it will expose 0 for all controller metrics since the process is eligible to become the active controller. This is consistent with behavior for controller-eligible nodes in a Kafka cluster using Zookeeper.

Proposed Changes

Pre-Kraft brokers expose 0 for controller metrics unless they are the active controller. KRaft brokers should not since they are not controller eligible.

Compatibility, Deprecation, and Migration Plan

  • Certain tools that expect brokers to expose controller metrics may need to be extended for KRaft to no longer expect brokers to expose controller metrics.
  • In Kafka 3.0, standby controllers expose non-zero controller metrics. This KIP proposes changing this behavior which is allowed since KRaft is still in preview.

Rejected Alternatives

  • Expose 0 on KRaft brokers for controller metrics.
    • There is non-negligible performance impact associated with doing this, so it would be best to change the behavior of controller metrics moving forward instead.




  • No labels