(3)Kafka HA
阿新 • • 發佈:2018-12-11
1、CAP理論
- Consistency
- 通過某個節點的寫操作結果對後面通過其它節點的讀操作可見
- 如果更新資料後,併發訪問情況下可立即感知該更新,稱為強一致性
- 如果允許之後部分或者全部感知不到該更新,稱為弱一致性
- 若在之後的一段時間(通常該時間不固定)後,一定可以感知該更新,稱為最終一致性
- Availability
- 任何一個沒有發生故障的節點必須在有限的時間內返回合理的結果
- Partition tolerance
- 部分節點宕機或者無法與其它節點通訊時,各分割槽間還可保持分散式系統的功能
CAP理論:分散式系統中,一致性、可用性、分割槽容忍性最多隻可同時滿足兩個。
2、一致性方案
- Master-slave
- RDBMS的讀寫分離即為典型的Master-slave方案
- 同步複製可保證強一致性但會影響可用性
- 非同步複製可提供高可用性但會降低一致性
- WNR
- 主要用於去中心化(P2P)的分散式系統中。DynamoDB與Cassandra即採用此方案
- N代表副本數,W代表每次寫操作要保證的最少寫成功的副本數,R代表每次讀至少讀取的副本數
- 當W+R>N時,可保證每次讀取的資料至少有一個副本具有最新的更新
- 多個寫操作的順序難以保證,可能導致多副本間的寫操作順序不一致,Dynamo通過向量時鐘保證最終一致性
- Paxos及其變種
- 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過的訊息,因此會造成資料丟失
- 可用性較高