首页 > 其他 > 详细

Kafka学习笔记2

时间:2019-11-09 10:11:17      阅读:78      评论:0      收藏:0      [点我收藏+]

Kafka 设计解析(二):Kafka High Availability (上)》 和《Kafka 设计解析(三):Kafka High Availability (下)》学习笔记

保证Topic中的单个Partition高可用(Partition Replication)

数据传播: Producer在发布数据到某个Parititon时,首先通过ZK找到Partition Leader,然后将数据push到Partition Leader;Parittion Leader接收到数据后会将数据记录到本地Log;

                  然后Paritition Follwer从Leader pull数据,然后将其写入本地Log,当Follower写入成功后会发送ACK给Leader。一旦所有ISR都返回了Replica成功的ACK,则认为该消息

                  已经成功Produce到Kafka,Leader会向Producer返回ACK并增加HW(HW标记了已备份完成的数据,Consumer只能消费已经备份完成的数据)。

需要说明的是,一条消息只有被 ISR 里的所有 Follower 都从 Leader 复制过去才会被认为已提交。这样就避免了部分数据被写进了 Leader,还没来得及被任何 Follower 复制就宕机了,而造成数据丢失(Consumer 无法消费这些数据)。而对于 Producer 而言,它可以选择是否等待消息 commit,这可以通过request.required.acks来设置。这种机制确保了只要 ISR 有一个或以上的 Follower,一条被 commit 的消息就不会丢失。

Partition Leader的选举:当原Partition Leader DOWN机时。Kafka Controller会从ISR中选取一个Follower作为新的Leader,如果没有在ISR中的Follower则任意选择一个Follower作为Leader,这样虽然会导致数据丢失但是保证了高可用行。

                                       如果所有的Follower也都DOWN机了,则这个Partition就挂了(个人理解)

 

 

 

 

 

Kafka学习笔记2

原文:https://www.cnblogs.com/ybonfire/p/11823240.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!