zoukankan      html  css  js  c++  java
  • 关于kafka中ISR、AR、HW、LEO、LSO、LW的含义详解

    一、kafka replication 

    1.当某个topic的replication-factor为N且N大于1时,每个Partition都会有N个副本(Replica)。kafka的replica包含leader与follower。
    2.Replica的个数小于等于Broker的个数,也就是说,对于每个Partition而言,每个Broker上最多只会有一个Replica,因此可以使用Broker id 指定Partition的Replica。
    3.所有Partition的Replica默认情况会均匀分布到所有Broker上。
    示例命令:bin/kafka-topics.sh --create --bootstrap-server kafka1:9092,kafka1:9092,kafka0:9092 --topic sg3-Logined --partitions 6 --replication-factor 2

    二、Kafka中的ISR、AR解析:

    分区中的所有副本统称为AR(Assigned Repllicas)。所有与leader副本保持一定程度同步的副本(包括Leader)组成ISR(In-Sync Replicas),ISR集合是AR集合中的一个子集。
    消息会先发送到leader副本,然后follower副本才能从leader副本中拉取消息进行同步,同步期间内follower副本相对于leader副本而言会有一定程度的滞后。
    前面所说的“一定程度”是指可以忍受的滞后范围,这个范围可以通过参数进行配置。
    与leader副本同步滞后过多的副本(不包括leader)副本,组成OSR(Out-Sync Relipcas),由此可见:AR=ISR+OSR。在正常情况下,
    所有的follower副本都应该与leader副本保持一定程度的同步,即AR=ISR,OSR集合为空。
    
    Leader副本负责维护和跟踪ISR集合中所有的follower副本的滞后状态,当follower副本落后太多或者失效时,leader副本会吧它从ISR集合中剔除。
    如果OSR集合中follower副本“追上”了Leader副本,之后再ISR集合中的副本才有资格被选举为leader,而在OSR集合中的副本则没有机会(这个原则可以通过修改对应的参数配置来改变)

    三、kafka中的ISR、HW、LEO、LW、LSO等分别代表什么?

    ISR指的是所有与leader副本保持一定程度同步的副本(包括Leader)组成ISR(In-Sync Replicas)
    
    HW是High Watermak的缩写, 俗称高水位,它表示了一个特定消息的偏移量(offset),消费之只能拉取到这个offset之前的消息。
    leader收到所有ISR中的replication的ACK后,增加HW(High Watermark,最后commit的offset)并向producer发送ACK。
    
    LW是Low Watermark的缩写,俗称“低水位”,代表AR集合中最小的logStartOffset值,副本的拉取请求(FetchRequest,它有可能触发新建日志分段而旧的的被清理,进而导致logStartoffset的增加)
    和删除请求(DeleteRecordRequest)都可能促使LW的增长。
    
    LEO是Log End Offset的缩写,它表示了当前日志文件中下一条待写入消息的offset,如图offset为9的位置即为当前日志文件LEO,LEO的大小相当于当前日志分区中最后一条消息的offset值加1。
    分区ISR集合中的每个副本都会维护自身的LEO,而ISR集合中最小的LEO即为分区的HW,对消费这而言只能消费HW之前的消息。
    
    LSO特指LastStableOffset。它具体与kafka的事物有关。

    四 、Data Replication何时Commit?

    参考:

    https://blog.csdn.net/qq_37502106/article/details/80271800

    https://blog.csdn.net/lukabruce/article/details/101012815

  • 相关阅读:
    寒假短期学习计划
    PAT 1001 A+B 解题报告
    JavaScript 原型链、继承
    JavaScript 数据扁平化处理
    每周一篇React: 高阶 hoc_component 使用
    每天一道算法题: day1 翻转图像
    项目中下载加权,你是怎么做的,欢迎评论。
    前端封装验证码方法,封装验证码类
    文件下载之后默认不打开实现方式
    文件下载之后默认不打开实现方式
  • 原文地址:https://www.cnblogs.com/-courage/p/15194986.html
Copyright © 2011-2022 走看看