2 Kafka 基本结构(Kafka 0.11.0.2)

此处内容来自书籍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副本的同步.
上图中的几个位移:

  • 起始位移(base offset): 表示该副本当前所含第一条消息的offset
  • 高水印值(high watermark, HW): 副本高水印值, 它保存了该副本最新一条已提交消息的位移.leader分区的HW值确定了Consumer能够获取的消息上线, 超过HW值的所有消息都被视为"未提交成功的消息", consumer是看不到的. 另外需要注意的是除了leader副本有HW值之外其他follower副本也都有HW值, 不过只有leader副本的HW值才能决定clients的consumer能够看到的消息数量罢了.
  • 日志末端位移(log end offset, LEO): 副本日志下一条待写入消息的offset, 比如此处的LEO是10, 说明(0-9)这10条消息是写入的, 下一条消息写入的位移将是序号10. 只有ISR列表中的所有副本都更新了对应的LEO之后, leader副本才会向右移动HW值 表名消息写入成功.
    上面可以看到HW和LEO这两个值很重要, 但是这两个值leader副本与follower副本更新的方式不太一样.

2.1.1 LEO更新机制

  • 1 Leader副本端的LEO更新:
    leader写log时就会自动更新它自己的LEO值.
  • 2 Follower更新LEO值:
    follower副本只是被动地向leader副本请求数据, 具体表现为follower副本不停地向leader副本所在的broker发送FETCH请求, 一旦获取消息, 便写入自己的日志中进行备份.

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

  • LEO值保存在follower副本所在broker的缓存上
  • LEO值保存在leader副本所在broker的缓存上. 此处可以理解出leader副本所在机器的缓存上保存了该分区下所有follower副本的LEO属性值(当然也包括它自己的LEO)
    之所以有两套是因为前者用于帮助follower副本自身更新HW值, 而同时还需要使用后者来确定leader副本的HW值即分区HW
    (1)follower副本端的follower副本LEO何时更新?
    在follower发送FETCH请求后, leader将数据返回给follower, 此时follower开始向底层log写数据, 从而自动更新其LEO值.
    (2)leader副本端的follower副本LEO何时更新?
    leader副本段的follower副本LEO的更新发生在leader处理follower FETCH请求时,一旦leader接收到follower发送的FETCH请求, 它首先会从自己的log中读取相应的数据, 但是在给follower返回数据之前它先会去更新follower的LEO(即上面所说的第二套LEO值)

2.1.2 HW更新机制

  • 1 follower副本端更新HW
    follower更新HW发生在其更新LEO之后, 一旦follower向log写完数据, 它就会尝试更新HW值. 具体算法即比较当前LEO值与FETCH响应中leader的HW值, 取两者之间的最小值作为新的HW值. 因此: 如果follower的LEO值超过了leader的HW值, 那么follower的HW值是不会越过leader HW值的.

  • 2 leader副本端更新HW
    learder副本端的HW值很重要, 因为它直接影响了分区数据相对于consumer 客户端的可见性.
    leader副本端的HW值的更新 分为正常情况与异常情况两种:
    (1) 正常情况下的更新场景:
    A, producer向leader副本写入消息时: 因为写入消息会更新leader的LEO,, 故有必要再查看HW值是否也需要更新
    B, leader处理follower FETCH 请求时: 当leader处理follower的FETCH请求时, 首先会从底层的log读取数据, 之后再尝试更新分区HW值

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,406评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,732评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,711评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,380评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,432评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,301评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,145评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,008评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,443评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,649评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,795评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,501评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,119评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,731评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,865评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,899评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,724评论 2 354

推荐阅读更多精彩内容