kafka是如何實現高可用的

2021-10-08 18:28:30 字數 978 閱讀 9431

kafka面試中,經常會被問到kafka是如何實現高可用的。

ha,也就是高可用,kafka 0.8版本之前是沒有ha的,如果乙個broker掛了,那麼這個分割槽也就是掛了,分區內的訊息都沒辦法繼續被消費。

kafka 0.8版本之後引入了副本機制(replicas)。

副本機制也是分布式系統中的常用的機制。

副本機制:

1. 提供了資料冗餘,一旦分布式系統某部分出現問題,系統依然能夠正常運轉,保證了整體的可用性和資料的永續性。

2. 提供伸縮性,可以動態的橫向擴充套件,增加系統的吞吐能力

3. 針對跨機房跨地域,可以選擇就近的備份資料,降低系統的時延

kafka中每個分割槽都會有多個副本,多個副本分別部署在不同的broker中,不同的broker都分別部署在不同的機器上, 這樣就提高了容錯性,提高了高可用,一旦某個機器掛了,也不會導致該分割槽不可用。

每個分割槽的多個副本是主從leader-follower的關係,有乙個leader副本,其他都是follow副本。生產者的寫和消費者的讀都是和leader副本打交道,follow副本只負責從leader副本pull資料,冗餘資料。一旦leader副本所在的broker宕機了,可以從餘下broker中的follow副本中選舉新的leader副本,保證高可用。

多副本之間如何同步資料?

follow副本從leader副本定期的拉取資料,就會存在follow副本和leader副本資料不同步的情況。kafka使用isr(in sync replicas)副本集合。leader副本肯定是屬於isr的,而那些和leader副本資料是同步的follow副本也屬於isr的,當follow副本不屬於isr,就說明此時的follow副本的資料和leader副本是不同步的。

那麼什麼叫不同步呢,broker的引數中 replica.lag.time.max.ms,這個引數的意思是follow副本能落後leader副本的最長時間間隔,預設是10s,如果是在這個時間間隔內的,那麼就說明follow副本是否與leader副本是同步的。

Kafka高可用實現

資料儲存格式 kafka的高可靠性的保障 於其健壯的副本 replication 策略。乙個topic可以分成多個partition,而乙個partition物理上由多個segment組成。segment分2部分 索引檔案和資料檔案。索引檔案儲存元資料,記錄了訊息在資料檔案中的偏移 offset 訊...

Kafka如何保證高可用

kafka 乙個最基本的架構認識 由多個 broker 組成,每個 broker 是乙個節點 你建立乙個 topic,這個 topic 可以劃分為多個 partition,每個 partition 可以存在於不同的 broker 上,每個 partition 就放一部分資料。如果用rabbitmq來...

kafka的高可用

在kafka 引入replication之後,同乙個partition可能會有多個replica,而這時需要在這些replication之間選出乙個leader,producer和consumer只與這個leader互動,其它replica作為follower從leader中複製資料。因為需要保證同...