Kafka的副本机制是怎样的?

Kafka 的副本机制是实现高可靠性和消息持久化的关键机制。其主要原理是:

  1. 每个分区都有若干个副本,其中一个为Leader副本,其他为Follower副本。
  2. Leader负责处理对应分区的所有读写请求,并将请求的数据同步到所有Follower。
  3. Follower会异步将Leader同步过来的数据写入本地日志,然后发送ACK给Leader。
  4. 如果Leader失效,会从Follower中选举出新的Leader副本,新的Leader会负责恢复ISR和继续处理请求。
  5. 只有处于ISR(In-Sync Replicas)状态的副本才会被选举为Leader副本。

Kafka 的副本机制的主要工作流程是:

  1. Kafka 启动时会选举出每个分区的Leader副本,其他副本为Follower。
  2. 生产者发送消息至Leader,Leader写入本地日志后同步消息到所有Follower。
  3. Follower异步将消息写入本地日志,然后发送ACK至Leader,Leader收到全部ACK后将这些Follower加入ISR。
  4. 如果某Follower长时间未发送ACK,Leader会将其从ISR移除,并选择新的Follower加入ISR。
  5. 如果Leader失效,会从ISR中的副本选举新的Leader,新的Leader会继续恢复ISR和处理请求。
  6. 新的Leader会找到 locally有但其他副本没有的消息,并将这些消息同步给其他所有的副本。
  7. 只有ISR中的副本会被选举为Leader副本,新的Leader会继承旧Leader的ISR信息。

理解 Kafka 的副本机制,有助于我们合理地配置 Kafka 集群的副本数和 ISR 数,实现高可靠性消息存储。