1. 程式人生 > >Kafka分割槽副本的同步條件

Kafka分割槽副本的同步條件

分割槽leader是同步副本,而對於跟隨者副本來說,它需要同時滿足以下條件才可以被認為是同步的:

1.與Zookeeper之間保持活躍的會話,即在過去的6s(可配置)內向Zookeeper傳送過心跳。

2.在過去的10s(可配置)從分割槽leader那裡獲取過訊息。

3.在過去10s從leader那裡獲取過最新的訊息,這個條件保證了從leader那裡獲取的訊息是無延遲的。

一個非同步副本通過與Zookeeper重新建立連線,並從分割槽leader那裡獲取最新訊息,可以重新變成同步副本。這個過程在網路出現臨時問題並很快得到修復的情況下會很快完成,但如果Broker傳送崩潰就需要較長時間。

注意:如果一個或者多個副本在同步和非同步狀態之間快速切換,說明叢集內部出現了問題,通常是Java不恰當的垃圾回收配置導致的。不恰當的垃圾回收配置會造成幾秒的停頓,從而讓Broker與Zookeeper之間斷開連線,最後變成不同步的,進而發生狀態切換。