Kafka核心中的分散式機制實現

ii_chengzi發表於2019-10-06

一個Topic中的所有資料分散式的儲存在kafka叢集的所有機器(broker)上,以分割槽(partition)的的形式進行資料儲存;每個分割槽允許存在備份資料/備份分割槽(儲存在同一kafka叢集的其它broker上的分割槽)

每個資料分割槽在Kafka叢集中存在一個broker節點上的分割槽叫做leader,儲存在其它broker上的備份分割槽叫做followers;只有leader節點負責該分割槽的資料讀寫操作,followers節點作為leader節點的熱備節點,從leader節點備份資料;當leader節點掛掉的時候,followers節點中會有一個節點變成leader節點,重新提供服務

Kafka叢集的Partition的leader和followers切換依賴Zookeeper

Kafka分散式保證的第一個特性就是:Kafka的Replication

Kafka的Replication指的是Partition的複製,一個Partition的所有分割槽中只有一個分割槽是leader節點,其它分割槽是follower節點。

Replication對Kafka的吞吐率有一定的影響,但是極大的增強了可用性

Follower節點會定時的從leader節點上獲取增量資料,一個活躍的follower節點必須滿足一下兩個條件:

1. 所有的節點必須維護和zookeeper的連線(透過zk的heartbeat實現)

2. follower必須能夠及時的將leader上的writing複製過來,不能“落後太多”; “落後太多”由引數{replica.lag.time.max.ms}和{replica.lag.max.messages}決定

Kafka分散式保證的第二個特性就是:Kafka Leader Election

Kafka提供了一個in-sync replicas(ISR)來確保Kafka的Leader選舉,ISR是一個儲存分割槽node的集合,如果一個node當機了或資料“落後太多”,leader會將該node節點從ISR中移除,只有ISR中的follower節點才有可能成為leader節點

Leader節點的切換基於Zookeeper的Watcher機制,當leader節點當機的時候,其他ISR中的follower節點會競爭的在zk中建立一個檔案目錄(只會有一個follower節點建立成功),建立成功的follower節點成為leader節點

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31543790/viewspace-2658916/,如需轉載,請註明出處,否則將追究法律責任。

相關文章