大数据人工智能与机器学习大数据 爬虫Python AI Sql

2 Kafka 基本结构(Kafka 0.11.0.2)

2018-06-15  本文已影响39人  kason_zhang

此处内容来自书籍Apache Kafka 实战一书(作者胡夕)

1Kafka Zookeeper路径

Kafka中使用到的各个Zookeeper节点, 路径如下图,

image.png

即:


image.png

2副本和ISR

什么是分区?
Kafka分区本质上就是一个备份日志, 即利用多份相同的备份共同提供冗余来保持系统高可用性.

什么是副本?
为了保持高可用的备份就是副本.

什么是ISR?
ISR实际上就是Kafka集群动态维护的一组同步副本集合(in-sync replicas), 这句话可以读出来ISR是副本集合, 是与Leader保持同步的副本集合.
实际上每个topic分区(注意是每个分区) 都有自己的ISR列表, ISR的所有副本都与leader保持同步状态, leader副本总是包含在ISR中的, 只有ISR中的副本才有资格被选举为leader.

什么情况下消息才是已提交?
producer写入的消息只有被ISR中的所有副本都接受到才被看成是已提交状态.

高可用能力:
根据ISR的解释, 可以知道假设ISR集合有N个副本, 那么此分区最多可以忍受N-1个副本崩溃而不丢失已提交消息.

2.1 follower副本同步

副本各种位置信息

leader副本对外提供服务(读写), follower副本仅仅只做向leader副本请求数据, 从而保持与leader副本的同步.
上图中的几个位移:

2.1.1 LEO更新机制

Kafka针对follower副本LEO的更新有两部分:

2.1.2 HW更新机制

(2)异常情况下的更新场景:
A, 副本成为leader副本时: 当某个副本成为分区的leader副本, Kafka会尝试更新分区HW. 毕竟分区leader都发生了变更, 这个副本的状态是一定要检查的.
B, broker出现崩溃导致副本被剔除ISR时: 若有broker崩溃, 则必须查看是否会波及此分区(有可能此分区leader就在这个broker上), 因此检查分区HW值是否需要更新是有必要的.

上一篇 下一篇

猜你喜欢

热点阅读