1. 程式人生 > >(3)Kafka HA

(3)Kafka HA

1、CAP理論

  • Consistency
  1. 通過某個節點的寫操作結果對後面通過其它節點的讀操作可見
  2. 如果更新資料後,併發訪問情況下可立即感知該更新,稱為強一致性
  3. 如果允許之後部分或者全部感知不到該更新,稱為弱一致性
  4. 若在之後的一段時間(通常該時間不固定)後,一定可以感知該更新,稱為最終一致性
  • Availability
  1. 任何一個沒有發生故障的節點必須在有限的時間內返回合理的結果
  • Partition tolerance
  1. 部分節點宕機或者無法與其它節點通訊時,各分割槽間還可保持分散式系統的功能

CAP理論:分散式系統中,一致性、可用性、分割槽容忍性最多隻可同時滿足兩個。

一般分割槽容忍性都要求有保障,因此很多時候是在可用性與一致性之間做權衡。

2、一致性方案

  • Master-slave
  1. RDBMS的讀寫分離即為典型的Master-slave方案
  2. 同步複製可保證強一致性但會影響可用性
  3. 非同步複製可提供高可用性但會降低一致性
  • WNR
  1. 主要用於去中心化(P2P)的分散式系統中。DynamoDB與Cassandra即採用此方案
  2. N代表副本數,W代表每次寫操作要保證的最少寫成功的副本數,R代表每次讀至少讀取的副本數
  3. 當W+R>N時,可保證每次讀取的資料至少有一個副本具有最新的更新
  4. 多個寫操作的順序難以保證,可能導致多副本間的寫操作順序不一致,Dynamo通過向量時鐘保證最終一致性
  • Paxos及其變種
  1. Google的Chubby,Zookeeper的Zab,RAFT等

3、Replica

  • 當某個Topic的replication-factor為N且N大於1時,每個Partition都會有N個副本(Replica)
  • Replica的個數小於等於Broker數,即對每個Partition而言每個Broker上只會有一個Replica,因此可用Broker ID表示Replica
  • 所有Partition的所有Replica預設情況會均勻分佈到所有Broker上

4、Data Replication要解決的問題

4.1、如何Propagate訊息

4.2、何時Commit

 

4.3、如何處理Replica恢復

4.4、如何處理Replica全部宕機

等待ISR中任一Replica恢復,並選它為Leader

  • 等待時間較長,降低可用性
  • 或ISR中的所有Replica都無法恢復或者資料丟失,則該Partition將永不可用

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

  • 並未包含所有已被之前Leader Commit過的訊息,因此會造成資料丟失
  • 可用性較高