标签:index 同步 数据 ack ISR 探究 Kafak 小结 leader
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
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。