亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Kafka一致性重要機制是什么

發布時間:2021-11-22 09:58:12 來源:億速云 閱讀:128 作者:iii 欄目:大數據

這篇文章主要講解了“Kafka一致性重要機制是什么”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Kafka一致性重要機制是什么”吧!

   一、kafka replica

當某個topic的replication-factor為N且N大于1時,每個Partition都會有N個副本(Replica)。kafka的replica包含leader與follower。Replica的個數小于等于Broker的個數,也就是說,對于每個Partition而言,每個Broker上最多只會有一個Replica,因此可以使用Broker id 指定Partition的Replica。所有Partition的Replica默認情況會均勻分布到所有Broker上。 

二、Data Replication如何Propagate(擴散出去)消息?

每個Partition有一個leader與多個follower,producer往某個Partition中寫入數據是,只會往leader中寫入數據,然后數據才會被復制進其他的Replica中。數據是由leader push過去還是有flower pull過來?

kafka是由follower周期性或者嘗試去pull(拉)過來(其實這個過程與consumer消費過程非常相似),寫是都往leader上寫,但是讀并不是任意flower上讀都行,讀也只在leader上讀,flower只是數據的一個備份,保證leader被掛掉后頂上來,并不往外提供服務。

三、Data Replication何時Commit?

同步復制:只有所有的follower把數據拿過去后才commit,一致性好,可用性不高。異步復制:只要leader拿到數據立即commit,等follower慢慢去復制,可用性高,立即返回,一致性差一些。Commit:是指leader告訴客戶端,這條數據寫成功了。kafka盡量保證commit后立即leader掛掉,其他flower都有該條數據。

kafka不是完全同步,也不是完全異步,是一種ISR機制:

  1. leader會維護一個與其基本保持同步的Replica列表,該列表稱為ISR(in-sync Replica),每個Partition都會有一個ISR,而且是由leader動態維護

  2. 如果一個flower比一個leader落后太多,或者超過一定時間未發起數據復制請求,則leader將其重ISR中移除

  3. 當ISR中所有Replica都向Leader發送ACK時,leader才commit

既然所有Replica都向Leader發送ACK時,leader才commit,那么flower怎么會leader落后太多?producer往kafka中發送數據,不僅可以一次發送一條數據,還可以發送message的數組;批量發送,同步的時候批量發送,異步的時候本身就是就是批量;底層會有隊列緩存起來,批量發送,對應broker而言,就會收到很多數據(假設1000),這時候leader發現自己有1000條數據,flower只有500條數據,落后了500條數據,就把它從ISR中移除出去,這時候發現其他的flower與他的差距都很小,就等待;如果因為內存等原因,差距很大,就把它從ISR中移除出去。

commit策略:server配置

rerplica.lag.time.max.ms=10000
# 如果leader發現flower超過10秒沒有向它發起fech請求,那么leader考慮這個flower是不是程序出了點問題
# 或者資源緊張調度不過來,它太慢了,不希望它拖慢后面的進度,就把它從ISR中移除。

rerplica.lag.max.messages=4000 # 相差4000條就移除
# flower慢的時候,保證高可用性,同時滿足這兩個條件后又加入ISR中,
# 在可用性與一致性做了動態平衡   亮點
 

topic配置

min.insync.replicas=1 # 需要保證ISR中至少有多少個replica
 

Producer配置

request.required.asks=0
# 0:相當于異步的,不需要leader給予回復,producer立即返回,發送就是成功,
那么發送消息網絡超時或broker crash(1.Partition的Leader還沒有commit消息 2.Leader與Follower數據不同步),
既有可能丟失也可能會重發
# 1:當leader接收到消息之后發送ack,丟會重發,丟的概率很小
# -1:當所有的follower都同步消息成功后發送ack.  丟失消息可能性比較低
   
四、Data Replication如何處理Replica恢復

leader掛掉了,從它的follower中選舉一個作為leader,并把掛掉的leader從ISR中移除,繼續處理數據。一段時間后該leader重新啟動了,它知道它之前的數據到哪里了,嘗試獲取它掛掉后leader處理的數據,獲取完成后它就加入了ISR。

五、Data Replication如何處理Replica全部宕機

1、等待ISR中任一Replica恢復,并選它為Leader

  • 等待時間較長,降低可用性

  • 或ISR中的所有Replica都無法恢復或者數據丟失,則該Partition將永不可用

2、選擇第一個恢復的Replica為新的Leader,無論它是否在ISR中

  • 并未包含所有已被之前Leader Commit過的消息,因此會造成數據丟失

  • 可用性較高

感謝各位的閱讀,以上就是“Kafka一致性重要機制是什么”的內容了,經過本文的學習后,相信大家對Kafka一致性重要機制是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

伽师县| 靖安县| 武安市| 遵义市| 乌拉特中旗| 昭觉县| 永兴县| 高安市| 凌海市| 班玛县| 林州市| 长春市| 涿州市| 崇义县| 曲阳县| 芜湖县| 定兴县| 天峨县| 马尔康县| 七台河市| 会同县| 宝兴县| 咸阳市| 桃园市| 石泉县| 福贡县| 札达县| 宁武县| 咸阳市| 白沙| 石泉县| 珠海市| 崇仁县| 普陀区| 开原市| 绥德县| 西昌市| 通榆县| 泽州县| 东海县| 云浮市|