kafka入门(三)备份
一、相关概念
备份相关的角色
Kafka消息备份分三个角色:分别是Leader副本、Follower副本、ISR集合
Leader副本
负责直接响应client端的读写请求,即和生产者和消费者直接对接,生产者生产一条消息,直接进入Leader副本;
Follower副本
作为特殊消费者,被动的接收leader副本中的数据。注意:follower副本不能响应client端的读写请求;
ISR集合
与leader保持同步的follower,属于ISR副本集合(同步的备份集合),反过来说,在某个时刻,还在被动接收接收,不是和leader完全一致的,不能属于ISR副本集合,同步完成后才属于ISR集合;
ISR集合作用
在当前Leader不可用时,Kafka集群会从ISR集合中选取一个Follower升级为新Leader;通过维护ISR集合,一个拥有(N+1)个备份的Topic可用容忍N个备份不可用
二、实现机制
每个Kafka副本对象都有两个重要的属性:LEO和HW。注意是所有的副本,而不只是leader副本。
LEO:即日志末端位移(log end offset),记录了该副本底层日志(log)中下一条消息的位移值。注意是下一条消息!也就是说,如果LEO=10,那么表示该副本保存了10条消息,位移值范围是[0, 9]。另外,leader LEO和follower LEO的更新是有区别的。我们后面会详细说
HW:即上面提到的水位值。对于同一个副本对象而言,其HW值不会大于LEO值。小于等于HW值的所有消息都被认为是“已备份”的(replicated)。同理,leader副本和follower副本的HW更新是有区别的,我们后面详谈。
我们使用下图来形象化地说明两者的关系:
上图中,HW值是7,表示位移是0~7的所有消息都已经处于“已备份状态”(committed),而LEO值是15,那么8~14的消息就是尚未完全备份(fully replicated)——为什么没有15?因为刚才说过了,LEO指向的是下一条消息到来时的位移,故上图使用虚线框表示。我们总说consumer无法消费未提交消息。这句话如果用以上名词来解读的话,应该表述为:consumer无法消费分区下leader副本中位移值大于分区HW的任何消息。这里需要特别注意分区HW就是leader副本的HW值。
下图详细的说明了当producer生产消息至broker后,ISR以及HW和LEO的流转过程:
最新文章
- 如何一步一步用DDD设计一个电商网站(五)—— 停下脚步,重新出发
- Nexus3.0.0+Maven的使用(二)
- C#开发可以可视化操作的windows服务
- 空间复杂度是什么?What does ‘Space Complexity’ mean? ------geeksforgeeks 翻译
- objective-C 中两种实现动画的方法(转)
- RS485接线 - 为什么要给2线制RS485接3根线?
- (转)function($){}(window.jQuery) 是什么意思?
- win10 iis 创建新站点注意事项
- 如何安装chrome扩展?比如json-handle插件如何安装
- MVC分层含义与开发方式
- 【medium】78. Subsets
- Mysql_安装
- K3 WISE 开发插件《SQL语句WHERE查询-范围查询/模糊查询》
- a超链接之返回顶部的两种实现方法
- 【论文笔记】Social Role-Aware Emotion Contagion in Image Social Networks
- 使用 WebSphere ILOG JRules 开发保险应用系统
- Unity用代码实现Remove Missing Script
- js之create()
- Oracle数据库通过DBLINK实现远程访问
- RCF库ClientStub.setAutoReconnect
热门文章
- 原生Js监听普通dom尺寸变化
- SQLServer 不允许保存更改的解决办法
- Win8 Metro(C#)数字图像处理--3.4图像信息熵计算
- 内存可用性判断 IsBadCodePtr IsBadReadPtr 等等
- 利用shell脚本实现计划任务功能 V1.2
- Oracle序列使用:建立、删除、使用
- “真正的工作不是说的天花乱坠”,Torvalds 说, “而是在于细节”(Torvalds 认为成功的项目都是99%的汗水和1%的创新)
- 网络包抓取开发包 Npcap
- SQLite实现内存键值存储
- ACL FAQ