更新時(shí)間:2023年10月06日10時(shí)55分 來源:傳智教育 瀏覽次數(shù):
在Apache Kafka中,HW(High Watermark)和LEO(Log End Offset)是兩個(gè)重要的概念,它們用于管理消息日志(也稱為分區(qū)日志或主題日志)的復(fù)制和消費(fèi)進(jìn)度。
·HW是一個(gè)重要的復(fù)制進(jìn)度指標(biāo),表示分區(qū)中的消息復(fù)制進(jìn)度。
·HW是一個(gè)偏移量(offset)的值,表示在分區(qū)中的消息日志中,已經(jīng)被成功復(fù)制到所有ISR(In-Sync Replicas,同步副本)的消息的位置。
·ISR是分區(qū)中的一組副本,這些副本處于活動狀態(tài),并且與領(lǐng)導(dǎo)者(Leader)保持同步。只有成功復(fù)制到ISR中的消息才會被認(rèn)為是已提交的消息。
·HW之前的消息表示可能會被丟失,因?yàn)樗鼈兛赡苌形幢凰蠭SR副本復(fù)制,因此HW是消費(fèi)者可以安全地讀取的消息的位置。
·LEO是另一個(gè)重要的指標(biāo),表示分區(qū)中消息日志的末尾位置。
·它表示當(dāng)前分區(qū)中最新消息的偏移量,包括已復(fù)制和未復(fù)制的消息。
·LEO之后的消息表示還未被生產(chǎn)者寫入分區(qū),因此它們不可用于消費(fèi)者。
·LEO是一個(gè)動態(tài)值,隨著消息的不斷追加而增加。
理解HW和LEO的關(guān)系以及它們在Kafka中的作用非常重要:
·消費(fèi)者通常會從分區(qū)的HW位置開始消費(fèi)消息,因?yàn)樵贖W之前的消息是已經(jīng)被所有ISR副本復(fù)制的,可以認(rèn)為是已提交的消息,不會丟失。
·消費(fèi)者可以隨時(shí)獲取分區(qū)的LEO位置,以了解分區(qū)中是否有新消息。
·生產(chǎn)者將消息寫入分區(qū),然后經(jīng)過復(fù)制流程,最終達(dá)到ISR中的所有副本,最終更新HW。這確保了消息的可靠性和持久性。
·當(dāng)分區(qū)中的副本之間出現(xiàn)故障或延遲時(shí),Kafka會自動調(diào)整ISR,以保持HW的進(jìn)展,同時(shí)確保數(shù)據(jù)的完整性。
總之,HW和LEO是Kafka中用于管理消息復(fù)制和消費(fèi)進(jìn)度的關(guān)鍵指標(biāo)。HW代表已提交的消息位置,LEO代表消息日志的末尾位置。消費(fèi)者通常從HW開始消費(fèi),以確保數(shù)據(jù)的一致性和可靠性。
北京校區(qū)