Kafka 核心技术与实战:深入内核
一、副本机制
Kafka 有主题概念的,每个主题又进一步划分成若干个分区,每个分区配置有若干个副本。Kafka 副本机制,同一个分区下的所有副本保存有相同的消息序列,这些副本分散保存在不同的 Broker 上,从而能够对抗部分 Broker 宕机带来的数据不可用。
基于领导者(Leader-based)的副本机制
- 第一,在 Kafka 中,副本分成两类:领导者副本(Leader Replica)和追随者副本(Follower Replica)。每个分区在创建时都要选举一个副本,称为领导者副本,其余的副本自动称为追随者副本。
- 第二,在 Kafka 中,追随者副本是不对外提供服务的。所有的请求都必须由领导者副本来处理,或者说,所有的读写请求都必须发往领导者副本所在的 Broker,由该 Broker 负责处理。追随者副本不处理客户端请求,它唯一的任务就是从领导者副本
- 第三,当领导者副本挂掉了,或者说领导者副本所在的 Broker 宕机时,Kafka 立即开启新一轮的领导者选举,从追随者副本中选一个作为新的领导者。老 Leader 副本重启回来后,只能作为追随者副本加入到集群中。
In-sync Replicas(ISR)
如果一个 Follower 副本落后 Leader 副本的时间不连续超过 10 秒,那么 Kafka 就认为该 Follower 副本与 Leader 是同步的,即使此时 Follower 副本中保存的消息明显少于 Leader 副本中的消息。
二、请求是怎么被处理的
Kafka 使用 Reactor 模式处理请求。

Kafka 的 Broker 端有个 SocketServer 组件,类似于 Reactor 模式中的 Dispatcher。
Acceptor 线程采用轮询的方式将入站请求公平地发到所有网络线程中。

This chapter requires login to view full content. You are viewing a preview.
Login to View Full Content