kafka的分区、副本和Isr机制

一、 kafka主题和分区

主题:相当于是数据库中的表
分区:可以将一个主题分为多个分区,所以在消息的有序的性上是只能在分区的范围内做到的,分区可以在不同的broker上,可以提高数据的冗余和伸缩性,因为kafka的分区是可以在不同的服务器上来接受生产者的消息和消费者的请求,所以实质上是提升了kafka的服务器的性能。
分区策略:轮询、随机等

二、副本(每个分区的副本在一个broker上只能有一个)

1、副本:在kafka中每个主题有多个分区,每个分区有多个副本。副本保存在broker上,每个broker可以保存成百上千属于不同主题和分区的副本。
2、副本类型:分为首领副本和跟随者副本
    (1)首领副本:每个分区都有个首领副本,为了保证一致性,所有的生产者的请求和消费者的请求都会经过这个副本
    (2)跟随者副本:除过首领之外的副本都是跟随者副本,跟随者副本不处理来自客户端的请求,唯一的任务就是从首领副本处复制消息,保持和首领一样的状态。在首领副本发生了不能访问的时候,就会有个新的跟随者副本来变成首领副本。
    问题:在动态的选举首领副本的时候,如何来保证跟随者副本是和首领副本是一致的?
      其实就是通过在跟随者副本进行复制的时候来提交的偏移量来确认的,首领副本就会知道跟随者副本的复制进度,如果在配置的一段的时间内是没有这个跟随者来请求复制消息的请求的时候(也就是没有收到跟随者副本提交的偏移量),就认为是这个跟随者的副本是不一致的。

三、ISR机制

1、ISR副本 :就是能跟首领副本基本保持一致的跟随副本,如果同步的速度太慢的话,就会被踢出ISR副本
*2、副本的概念同步:
    LEO(last end offset):表示的是该日志下的下一条消息offset,如果LE0 为10的时候,当前的offset为9
    HW 标记着可以消费的消息,小于HW为已经备份的消息,HW的大小小于等于LEO
3、副本同步机制
    producer向leader发送消息,之后写入到leader,leader在本地生成log,之后follow从leader拉取消息,follow写入到本地的log中,会给leader返回一个ack信号,一旦收到了ISR中的所有的ack信号,就会增加HW,然后leader返回给producer一个ack

来源:http://www.1994july.club/seojishu/

猜你喜欢

转载自www.cnblogs.com/1994july/p/12438861.html