首页 > 其他分享 >kafka数据一致性

kafka数据一致性

时间:2024-05-14 14:43:06浏览次数:20  
标签:副本 HW kafka 一致性 数据 leader

kafka作为商业级中间件,它在设计时优先考虑的可靠性、可用性,同时兼顾一致性,这是所有分布式都会遇到的cap理论,kafka也不例外;可靠性通过副本机制解决,可用性通过leader和follower机制来解决。

    kafka的可靠性,根据ack的设置不同,可靠性不同,ack=-1可靠性最高,但效率会稍微低一点。

acks=0:生产者不会等待任何来自服务器的响应,直接不断发送数据。
acks=1(默认值):只要集群的Leader节点收到消息,生产者就会收到一个来自服务器的成功响应。
acks=-1:只有当所有参与复制的节点全部都收到消息时,生产者才会收到一个来自服务器的成功响应。

  

  kafka的可用性,通过维护AR,ISR,OSR来确保当leader挂掉后,可以马上从 ISR 列表中选择第一个 follower 作为新的 Leader。

    当kafka副本为多副本时,副本是定期从leader同步数据,定期同步必然会导致leader和follower数据不一致的情况出现。为了解决这种不一致,kafka引入了HW(高水位线),高水位线HW = ISR副本中最小LEO(副本的最大消息偏移量+1),如下图1所示的HW=2,因为follower2的消息还是1,所以这个时候消费者只能消费小于2的数据,那就是只能消费1这条数据,这样就能保证消费者所见一致性问题。

  由于HW总是要在下一次fetch rpc才会更新,所以HW也有可能出现同步不及时的情况,导致数据丢失,所以这里就又要提到leader epoch。

 leader epoch会记录leader的生平,他的纪元值,比如图2的leader没有挂掉时,它会记录(0,3),表示第0代leader,目前offset=3,当follower1当选为leader后,此时epoch为1,会跟上一个纪元的offset进行比对,以此判断是否需要截取数据。如下图三就不需要截取数据,从而保证数据一致性。

 图3

 

 

标签:副本,HW,kafka,一致性,数据,leader
From: https://www.cnblogs.com/beststrive/p/18191243

相关文章

  • easyUI datagrid 数据不显示,tablebody 高度为0 的问题
    如下图,接口请求回来数据,表头也显示出来了。打开元素,可以看到table的bbody里面是有数据的,数据也渲染到了页面表格中,但是table的height为0。 排查以下问题:检查数据源格式是否正确,如是JSON数组还是符合easyui要求的对象。确保在datagrid初始化后正确触发数据加载......
  • linux安装华为高斯数据库
     华为安装部署流程:https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/2.23.07.210/install/qlh_04_0025.html高斯数据库文档说明书下载:https://support.huawei.com/enterprise/zh/cloud-computing/gaussdb-pid-251517148https://www.modb.pro/db/11248用docker快速安装:https:/......
  • 震撼视觉:全球冰川数据大屏揭示冰川之美与奥秘
    在浩瀚无垠的宇宙中,地球以其独特的蓝色光环吸引着人们的目光。而在这颗蓝色星球上,冰川这一大自然的杰作,更是以其壮美与神秘,让人们心驰神往。 从阿尔卑斯山脉的冰川到南极洲的冰盖,从格陵兰岛的冰山到喜马拉雅山脉的雪山,这些冰川在数据大屏上以高清画质呈现,仿佛让人置身于冰川世......
  • 简单有效的数据加密方法你知道几个?
    1.文件和邮件加密利用华企盾DSC数据防泄密系统,企业可以实现文件和邮件的加密。系统提供了一键式的文件加密解决方案,确保敏感信息在电子邮件中传输时得到安全保护,即使邮件被截获,内容也无法被未授权人员阅读。2.端到端数据加密华企盾DSC数据防泄密系统支持端到端的数据加密,......
  • 直播预约丨《袋鼠云大数据实操指南》No.2:实时开发,如何成为数据智能化的有效驱动力
    近年来,新质生产力、数据要素及数据资产入表等新兴概念犹如一股强劲的浪潮,持续冲击并革新着企业数字化转型的观念视野,昭示着一个以数据为核心驱动力的新时代正稳步启幕。面对这些引领经济转型的新兴概念,为了更好地服务于客户并提供切实可行的实践指导,自3月20日起,袋鼠云将推出全新......
  • [转帖]国产数据库中统计信息自动更新机制
    https://blog.csdn.net/solihawk/article/details/137064277数据库中统计信息描述的数据库中表和索引的大小数以及数据分布状况,统计信息的准确性对优化器选择执行计划时具有重要的参考意义。本文简要整理了下传统数据库和国产数据库中统计信息的自动更新机制,以加深了解。......
  • 数据库升级PostgreSql+Garnet
    目录前言PostgreSql安装测试额外Nuget安装Person.cs模拟运行Navicate连postgresql解决方案Garnet为什么要选择Garnet而不是RedisRedis不再开源Windows版的Redis是由微软维护的WindowsRedis版本老旧,后续可能不再更新Garnet性能强于Redis安装测试安装可视化工具C#代码连接测试总结......
  • [转帖]国产主流数据库存储类型简析
    https://blog.csdn.net/solihawk/article/details/137807944国产数据库在技术架构上主要分为集中式、基于中间件分布式和原生分布式架构,衍生出集中式架构和分布式架构。那么在这些部署架构中,从数据分布的视角来看,在数据库中数据分布的形态是怎样的。本文将简要分析OceanBas......
  • 数据结构概述
    数据结构定义我们如何把现实中大量而复杂的问题以特定的数据类型和特定的存储结构保存到主存储器(内存)中,以及在此基础上为实现某个功能(比如查找某个元素,删除某个元素,对所有元素进行排序)而执行的相应操作,这个相应的操作也叫算法数据结构=个体+个体的关系算法=对存储数据的......
  • flink监控数据库表
    背景在日常服务运行中可能会遇到很多数据上的问题,一些我们可以通过日志查询,但是一些修改等操作日志无法查询到,binlog日志不方便查询而且不是所有表都需要日志,增加了查询的难度,我们考虑使用canal或者flink对binlog进行记录,这里flink,flink程序和客户端版本1.17.1pom.xml<?xm......