做联轴器的网站,上海新闻综合频道直播,哔哩哔哩网页版怎么下载视频到本地,淄博网站排名优化公司leader和follower
kafka的leader和follower是相对于分区有意义的#xff0c;不是相对于broker。
因为每个分区都有leader和follower,
leader负责读写数据。
follower负责复制leader的数据保存到自己的日志数据中#xff0c;并在leader挂掉后重新选举出leader。
kafka会再…leader和follower
kafka的leader和follower是相对于分区有意义的不是相对于broker。
因为每个分区都有leader和follower,
leader负责读写数据。
follower负责复制leader的数据保存到自己的日志数据中并在leader挂掉后重新选举出leader。
kafka会再创建topic的时候尽量让分配分区的leader在不同的broker中就是负载均衡。 与Zookeeper区分
zookeeper的leader负责读写follower可以读取。
kafka的leader负责读写follower不能读写数据(确保每个消费者消费的数据是一致的)kafka一个topic有多个分区leader一样可以实现负载均衡。 AR/ISR/OSR
kafka的follower可以分为三类AR ISR OSR
AR(Assigned Replicas)表示一个topic下的所有副本。ISR(In-Sync Replicas)表示一个topic下正在同步的副本。OSR表示(OUT-SYNC-Replicas)不再同步的副本。
ARISROSR 查看分区的ISR
使用Kafka Eagle查看某个Topic的partition的ISR有哪几个节点。 partition是创建的topic为test的 0 1 2 三个分区。
Log Size是日志文件的大小
Leader是leader副本在那个broker节点上
Replicas是它的副本在哪些broker节点上。
In sync Replicas是正在同步的副本包括leader
尝试关闭id为0的broker杀掉该broker的进程参看topic的ISR情况。 leader的选举
leader的选举对于消息的写入以及读取非常关键此时有两个疑问
kafka是如何确定partition的哪个副本是leader那个副本是follower呢某个leader崩溃后怎么快速确定另一个leader呢因为Kafka的吞吐量很高、延迟很低所以选举leader必须非常快
leader崩溃kafka如果处理
使用Kafka Eagle找到某个partition的leader再找到leader所在的broker。在Linux中强制杀掉该Kafka的进程然后观察leader的情况。
通过观察我们发现leader在崩溃后Kafka又从其他的follower中快速选举出来了leader。
Controller
kafka启动的时候会在所有的broker中选举出controller前面的leader和follower是针对partition的副本而controller是针对broker的。创建topic或者添加分区修改副本数量之类的管理任务都是交给controller完成的。kafka分区leader的选举也是由controller决定的。
Controller的选举
在kafka集群启动的时候每个broker都会尝试去Zookeeper上注册为controllerZK临时节点但是只有一个竞争成功其他的broker会注册该节点的监视器。一但节点的状态发生变化就可以进行处理。Controller也是高可用的一旦某个broker崩溃其他的broker会重新注册为Controller。
Controller选举partition的leader
所有Partition的leader选举都由controller决定.controller会将leader的改变通过RPC的方式通知需要为此做出响应的Brokercontroller读取当前分区的ISR,只要有一个Replica还幸存就选择其中一个作为leader。如果该partition的所有Replica都已经宕机则新的leader为-1
为什么不通过ZK的方式进行选举
如果kafka是居于ZK进行选举ZK的压力比较大例如某个节点崩溃这个节点上不仅仅只有一个leader是有不少的leader需要选举通过ISR可以快速选举。 leader的负载均衡
kafka中引入Preferred Replica的概念意思是优先的Replica。
在ISR中第一个replica就是preferred-replica.
副本存放的第一个broker肯定就是preferred-replica
执行以下脚本可以将preferred-replica设置为leader均匀分配每个分区的leader。
./kafka-leader-election.sh --bootstrap-server node1.itcast.cn:9092 --topic 主题 --partition1 --election-type preferred