面試點:ISR總結

 在可用性和一致性之間做一個動態平衡


ISR: 1. in-sync Replica,每一個partition都有一個leader,每一個leader都會維護一個基本與它同步的replica列表。
        2. 如果一個Follower比Leader落後太多,或者超過一定時間未發起數據複製請求,則Leader將其從ISR中移除
        3. 當ISR中所有Replica都向Leader發送ACK時,Leader即Commit

消息落後-原因:同數據的時候,批量同步,或者異步同步,都回產生差異。後者網絡延遲,內存緩慢。
好處:當有很多follwer比較慢的時候,移除ISR,保證高可用。如果follower ,狀態追上來了,重新加入ISR。


Commit策略
    Server配置

  •          replica.lag.time.max.ms=10000  10秒沒有fetch 移除
  •          replica.lag.max.messages=4000 數據相差4000條 移除

    Topic配置

  •          min.insync.replicas=1

    Producer配置

  •          request.required.acks=0


kafka全部宕機

  •    方案1(等待ISR恢復服務)

        優點: 因爲ISR中的replica數據都是已經commit的(認爲數據都是最新的,而且數據已知),所以等待ISR中一個節點恢復就可以作爲leader啓動服務。
        缺點:如果replica過多(10個),ISR中的replica只有2個,那就需要等到ISR中的兩個replica恢復,才能啓動服務。

 

  • 方案2(等待任意replica恢復服務)

        優點:當有服務恢復時,服務即能恢復使用,可用性高。
        缺點:如果先啓動的replica不在ISR中,那麼就會出現數據丟失。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章