我們一直在講一個主題會有多個分區(qū),這多個分區(qū)可以分布在一臺服務器上,也可以分布在多臺服務器上,還可以增加分區(qū)(Kafka目前只支持分區(qū)),這是Kafka提供的一種橫向擴展的手段
比如我們創(chuàng)建了一個主題,給主題分配50個分區(qū)(這個數(shù)不大,_consumer_offset主題默認就50個分區(qū)),每個分區(qū)放在不同的broker上,那么我們要保證這50臺服務器都不能宕機,一旦服務器宕機,分區(qū)數(shù)據(jù)就丟失了,保障服務不宕機這是很難的,所以Kafka給我們提供了副本機制
文章來源:http://www.zghlxwxcb.cn/news/detail-610829.html
副本機制
- 在Kafka中,將主題分成多個分區(qū)
- 分區(qū)有兩個角色,
Leader
分區(qū)和Follower
分區(qū) - Kafka對外提供讀寫服務的是Leader分區(qū)
- Follower分區(qū)
只
負責從Leader分區(qū)同步
消息,與Leader分區(qū)保持一致 - Follower分區(qū)一定和Leader分區(qū)放在不同的服務器(broker)上,否則就沒有意義了,一宕全宕
- 當Leader分區(qū)宕機,會從Follower分區(qū)(ISR同步副本)選出一個轉(zhuǎn)換成Leader分區(qū)繼續(xù)對外提供服務
我們舉個??,如下圖;文章來源地址http://www.zghlxwxcb.cn/news/detail-610829.html
- Kafka 集群有三個節(jié)點(3個broker)
- 主題Topic有3個分區(qū)Partition_0、Partition_1 、Partition_2,三個分區(qū)分別放在不同的broker上
- 粉色為Leader分區(qū),灰色為Follower分區(qū)
- 每個分區(qū)有一個副本,也分別放在不同分區(qū)上,并且與其Leader分區(qū)放在不同的broker上
- 上圖灰色分區(qū)就是粉色分區(qū)的副本分區(qū)
- Kafka 通過副本分區(qū)實現(xiàn)高可用
-
replication-factor
副本因子 = leader + followerreplication-factor=3,則leader+2follower
- Follower 分區(qū)像普通的Kafka消費者一樣,消費來自Leader分區(qū)的消息,并將其持久化到自己的日志中,
- Kafka允許Follower對日志數(shù)據(jù)拉取進行批處理
ISR - 同步副本
- 節(jié)點與zookeeper保持通信,通過zookeeper的心跳機制,與zookeeper要保持一個長連接
- 允許副本分區(qū)與Leader分區(qū)有一定消息的偏移
到了這里,關于Kafka入門到起飛系列 - 副本機制,什么是副本因子呢?的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!