千锋教育-做有情怀、有良心、有品质的职业教育机构

当前位置:首页  >  关于学院  >  技术干货  >  大数据技术干货  >  正文

Kafka进程职责与交互

来源:千锋教育
发布时间:2022-08-29 18:07:00
分享

  为了保证可用性,Kafka 的分区是多副本的,可以在创建分区时通过 replication-factor 参数指定该分区的副本数,某一副本丢失并不会造成实际数据的丢失,从其他副本获取数据即可。但同时引出了另外一个问题,各个副本之间的数据如何保证一致性?

  首先,分区的副本根据角色的不同可分为:Leader 副本、 Follower 副本

  - Leader 副本:Leader 负责与 Producer 和 Consumer 交互,即数据的读写。- Follower 副本:被动地备份 leader 副本中的数据,不与 Client 端做任何交互。

  另外,不得不提的是 ISR,即(in-sync Replica)副本同步队列:它包含了 Leader 副本和所有与 Leader 副本保持同步的 Follower 副本。那么如何判断 Follower 副本与 Leader 是同步的Leader 副本和 Follower 副本有两个重要的属性值,如图 LEO 日志末端位移和 HW 水位线。

1

  * LEO(log end offset):记录日志的末端位移值,即数据写到的最新的位置。* HW(high watermark):取最小的 LEO 作为 HW,即 Committed 过的最新数据。consumer 最多只能消费到 HW 所在的位置,因为小于等于 HW 值的数据才是 Committed 备份过的。

  我们再来看一下,LEO和HW的更新时机

2

  Leader 除了 HW 和 LEO 还会有 RemoteLEO 这个属性,表示 Follwer 的 LEO。Leader 在以下情况下会更新这三个属性。

  * LEO:Producer 端有数据写入成功时 Leader 会自动地更新 LEO 值* HW:有请求的时候(Producer 或 Follower 的请求)会对比自己 LEO和Remote LEO 取小值更新HW* Remote LEO:Leader 处理 Follower 的 Fetch 请求时,将 Remote LEO 更新为 Follwer 请求中附带的 LEO 值。

  Follower 只有 HW 和 LEO 两个属性,更新时机为:

  * LEO:同样是有数据写入成功时就会自动地更新 LEO 值。* HW:Follower 更新 HW 发生在其更新 LEO 之后,一旦 Follower 向 log 写完数据,它会尝试更新它自己的 HW 值。更新的条件是比较当前 LEO 值与 Response 中 Leader 的 HW 值,取两者的小者作为新的 HW 值,如图的 HW:1 会在此时更新为 2。

  更多关于大数据培训的问题,欢迎咨询千锋教育在线名师。千锋教育拥有多年IT培训服务经验,采用全程面授高品质、高体验培养模式,拥有国内一体化教学管理及学员服务,助力更多学员实现高薪梦想。

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

相关推荐

  • kafka集群搭建详细步骤 搭建Kafka集群涉及以下步骤:1.**安装和配置Java**:确保每台服务器都安装了适当版本的Java,并设置了正确的环境变量。2.**下载和解压Kafka**:从官方网站下载Kafka的二进制发行
  • zookeeper安装配置为什么报错? 安装和配置ZooKeeper可能会出现各种错误。以下是一些常见的错误和对应的解决方法:1.**连接错误**:在配置ZooKeeper集群时,可能会出现连接错误,例如连接超时、连接被拒绝等。这通常是由于
  • zookeeper搭建集群 要搭建ZooKeeper集群,你需要按照以下步骤进行操作:1.下载和安装ZooKeeper:从ApacheZooKeeper的官方网站下载ZooKeeper的二进制发行版,并根据操作系统的要求进行安装
  • kafka怎么使用 Kafka是一种高吞吐量、可扩展的分布式消息队列系统,常用于构建实时流数据处理和事件驱动的应用程序。下面是使用Kafka的基本步骤:1.安装和配置Kafka:-下载Kafka:访问ApacheKafk
  • jointplot()函数的用法是什么? jointplot() 是 Seaborn 数据可视化库中的一个函数,用于绘制两个变量之间的二维关系,通常是散点图或密度图,同时绘制单变量的直方图或密度图。
  • highcharts和echarts的区别 功能:两个库都提供了丰富的图表类型和交互功能,但是 Highcharts在某些方面比Echarts 更强大,比如地图类型和导出功能。性能:Echarts的渲染速度比 Highcharts 更快,因为它使用了Canvas来绘制图表。