其他分享
首页 > 其他分享> > Kafak探究之路- 内部结构小结

Kafak探究之路- 内部结构小结

作者:互联网

1.框架与工作流

 

 

 

 

 

2 内部结构

kafka的每个主题分区的数据在 first-0(主题名-分区号)文件夹下,保存 n组xxx.log文件与xxx.index文件。log文件存发送消息的元数据,每个大小默认为1G,index为log的索引存这些消息的序号与起始地址。index每个索引大小一样,这样硬件寻址的时候,可以跳跃(n-1)*length个地址,找到第n条数据的信息,查起来很快!

 

 

 

 

 

 

 3 分区的接口方法与含义

 

 

 

 4  ACK与ISR

 

   ACK: 生产者给kakfa集群发送消息后,kafka会给生产者返回ack表明,已经成功接收到消息。如何解决以下问题

 

 

   

 

 

 

    引入ISR

 

 

       ISR 就是从10台foller机器中选5台进入ISR,这5台如果某在单位时间内不能与leader同步,则被踢出,或者某台与leader相差消息数量大于n,也会被踢出。

      0.9版本以后,将相差数量去除,因为如果相差数量是1000,而发送消息每个batch为1200,那每次一发消息,ISR中的节点将全部被踢出,稍后同步后,又进入,而且还得访问zk,这样无线循环浪费资源

 

    ack参数配置

    

 

 

 

 

 

 

 

ack = 0,只发数据,啥都不管

ack = 1,发数据,leader接收完成,再返回ack,继续发数据

ack = -1 所有的ISR全部同步数据后,再返回ack,继续发数据

ack = 0 的时候,在发数据后,只要leader挂掉,就会丢数据,ack = 1时候 leader挂掉,follwer未同步就会丢数据。ack = -1的时候,若ISR里面只有leader,则与1情况一样

ack等于 -1 的时候,若ISR的follwer已经同步,但是在返回ack过程中,leader挂掉,则会重复发送数据,造成数据重复

 

标签:index,同步,数据,ack,ISR,探究,Kafak,小结,leader
来源: https://www.cnblogs.com/txqx/p/14090107.html