2015-04-24 37 views

回答

5

我想你可能會混淆「分區」與網絡分區的分裂感。

卡夫卡確實提供分片和複製。卡夫卡爲每個主題的每個分區選擇一位獨特的領導者。所有針對主題分區的寫入均通過領導。這與您引用的文檔相關,表明Kafka青睞的可用性超過了分區容差。

網絡分區的含義是服務器之間的通信中斷。網絡通信故障在局域網中比在廣域網中更爲罕見,所以卡夫卡的架構旨在提供一致性,除非發生網絡分區。在網絡分區的情況下,Kafka的副本可能會彼此分離,分區兩側的節點都可能接受寫入。這可能發生的原因是因爲當發生網絡分區時,分區每邊的節點可能會將分區另一端的節點視爲失敗,而事實上它們之間的鏈接只會失敗。這意味着網絡分區的每一側可以爲某些主題分區選擇新的領導者,因此意味着網絡分區的每一側都可以接受針對某些主題分區的寫入。一旦網絡分區恢復(網絡已修復),分區一側的寫入操作可能會覆蓋分區另一側的寫入操作。

+0

感謝您的回覆,kuujo,我從你的回答總結,例如,有兩個網絡端(side a,b),當話題x在兩個網絡端做出三個分區時(p1在a端, p2,p3在b)中,p1是本主題的領導者。所以當a側和b側之間的網絡斷開時,p2,p3必須選擇b側的領導者作爲話題,而p1仍然是話題a側的領導者。因此,這個話題發生了兩次寫入,並且不能保證一致性。是對的嗎? – regrecall