一致性:若某條訊息對consumer可見,那麼即使Leader掛了,在新Leader上資料依然可見。
ISR (In-Sync Replicas)是Leader在Zookeeper中動態維護基本保持同步的Replica列表,該列表中儲存的是與Leader副本保持訊息同步的所有副本對應的Follower節點id。ISR冗餘備份機制核心邏輯圍繞HW值、LEO值展開。
LEO(last end offset)日誌末端偏移量,記錄了該副本物件底層日誌檔案中下一條訊息的位移值。
HW(highwatermark),高水印值,任何一個副本物件的HW值一定不大於其LEO值,而小於或等於HW值的所有訊息被認為是“已提交的”或“已備份的”。consumer只能消費已提交的訊息,HW之後的資料對consumer不可見。
Kafka如何保證順序性
Kafka只能保證partition內部有序,不保證整個topic有序。
亂序場景一
因為一個topic可以有多個partition,kafka只能保證partition內部有序。可能需要順序的資料分佈到了不同的partition,導致處理時亂序
解決方案
1、可以設定topic 有且只有一個partition
2、根據業務需要,需要順序的 指定為同一個partition
3、根據業務需要,比如同一個訂單,使用同一個key,可以保證分配到同一個partition上
亂序場景二
對於同一業務進入了同一個消費者組之後,用了多執行緒來處理訊息,會導致訊息的亂序
消費者內部根據執行緒數量建立等量的記憶體佇列,對於需要順序的一系列業務資料,根據key或者業務資料,放到同一個記憶體佇列中,然後執行緒從對應的記憶體佇列中取出並操作
一致性:若某條訊息對consumer可見,那麼即使Leader掛了,在新Leader上資料依然可見。
ISR (In-Sync Replicas)是Leader在Zookeeper中動態維護基本保持同步的Replica列表,該列表中儲存的是與Leader副本保持訊息同步的所有副本對應的Follower節點id。ISR冗餘備份機制核心邏輯圍繞HW值、LEO值展開。
LEO(last end offset)日誌末端偏移量,記錄了該副本物件底層日誌檔案中下一條訊息的位移值。
HW(highwatermark),高水印值,任何一個副本物件的HW值一定不大於其LEO值,而小於或等於HW值的所有訊息被認為是“已提交的”或“已備份的”。consumer只能消費已提交的訊息,HW之後的資料對consumer不可見。
Kafka如何保證順序性
Kafka只能保證partition內部有序,不保證整個topic有序。
亂序場景一
因為一個topic可以有多個partition,kafka只能保證partition內部有序。可能需要順序的資料分佈到了不同的partition,導致處理時亂序
解決方案
1、可以設定topic 有且只有一個partition
2、根據業務需要,需要順序的 指定為同一個partition
3、根據業務需要,比如同一個訂單,使用同一個key,可以保證分配到同一個partition上
亂序場景二
對於同一業務進入了同一個消費者組之後,用了多執行緒來處理訊息,會導致訊息的亂序
解決方案
消費者內部根據執行緒數量建立等量的記憶體佇列,對於需要順序的一系列業務資料,根據key或者業務資料,放到同一個記憶體佇列中,然後執行緒從對應的記憶體佇列中取出並操作