關於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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM