Versions Compared

Key

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

...

Once a reassignment has been submitted, users can use one of the --describe options to monitor progress

Metrics

Here’s a list of proposed metrics for this new protocol:

NAME

TAGS

TYPE

NOTE

CurrentLeader

type=raft-manager

dynamic gauge

-1 means UNKNOWN

CurrentEpoch

type=raft-manager

dynamic gauge

0 means UNKNOWN

CurrentVote

type=raft-manager

dynamic gauge

-1 means not voted for anyone

LogEndOffset

type=raft-manager

dynamic gauge


LogEndEpoch

type=raft-manager

dynamic gauge


BootTimestamp

type=raft-manager

dynamic gauge


State

type=raft-manager

dynamic enum

possible values: "leader", "follower", "candidate", "observer"

NumQuorumVoters

type=raft-manager

dynamic gauge

number of cached voter connections; would never be larger than quorum-size

InboundRequestPerSec

type=raft-manager, source-broker-id=[broker-id]

windowed rate

one per source

OutboundRequestPerSec

type=raft-manager, destination-broker-id=[broker-id]

windowed rate

one per destination

InboundChannelSize

type=raft-manager

windowed average


OutboundChannelSize

type=raft-manager

windowed average


FetchRecordsPerSec

type=raft-manager

windowed rate

apply to follower and observer only

AppendRecordsPerSec

type=raft-manager

windowed rate

apply to leader only

ErrorResponsePerSec

type=raft-manager, destination-broker-id=[broker-id]

windowed rate

one per destination

TotalTimeMs

type=raft-manager, request=[request-type]

windowed average

one per inbound request type

InboundQueueTimeMs

type=raft-manager, request=[request-type]

windowed average

one per inbound request type

HandleTimeMs

type=raft-manager, request=[request-type]

windowed average

one per inbound request type

OutboundQueueTimeMs

type=raft-manager, request=[request-type]

windowed average

one per inbound request type

AvgIdlePercent

type=raft-manager

windowed average



Client Interactions

Since this specific quorum implementation is only to be used by Kafka internally, we do not need to add new public protocols for clients. More specifically, the leader of the quorum would act as the controller of the cluster, and any client requests that requires updating the metadata (previously stored in ZK) would be interpreted as appending new record(s) to the quorum's internal log.

...