因?yàn)橐淮五礄C(jī),終于搞透了 Kafka 高可用原理!
1
Kafka 宕機(jī)引發(fā)的高可用思考
問題要從一次Kafka的宕機(jī)開始說起。
2
Kafka 的多副本冗余設(shè)計(jì)
首先簡單了解Kafka的幾個(gè)概念:
物理模型

邏輯模型

Broker(節(jié)點(diǎn)):Kafka服務(wù)節(jié)點(diǎn),簡單來說一個(gè)Broker 就是一臺Kafka服務(wù)器,一個(gè)物理節(jié)點(diǎn)。 Topic(主題):在Kafka中消息以主題為單位進(jìn)行歸類,每個(gè)主題都有一個(gè) Topic Name ,生產(chǎn)者根據(jù)Topic Name將消息發(fā)送到特定的Topic,消費(fèi)者則同樣根據(jù)Topic Name從對應(yīng)的Topic進(jìn)行消費(fèi)。 Partition(分區(qū)):Topic (主題)是消息歸類的一個(gè)單位,但每一個(gè)主題還能再細(xì)分為一個(gè)或多個(gè)Partition (分區(qū)),一個(gè)分區(qū)只能屬于一個(gè)主題。主題和分區(qū)都是邏輯上的概念,舉個(gè)例子,消息1和消息2都發(fā)送到主題1,它們可能進(jìn)入同一個(gè)分區(qū)也可能進(jìn)入不同的分區(qū)(所以同一個(gè)主題下的不同分區(qū)包含的消息是不同的),之后便會發(fā)送到分區(qū)對應(yīng)的Broker節(jié)點(diǎn)上。 Offset (偏移量):分區(qū)可以看作是一個(gè)只進(jìn)不出的隊(duì)列(Kafka只保證一個(gè)分區(qū)內(nèi)的消息是有序的),消息會往這個(gè)隊(duì)列的尾部追加,每個(gè)消息進(jìn)入分區(qū)后都會有一個(gè)偏移量,標(biāo)識該消息在該分區(qū)中的位置,消費(fèi)者要消費(fèi)該消息就是通過偏移量來識別。

3
Ack 參數(shù)決定了可靠程度
Asks這個(gè)參數(shù)是生產(chǎn)者客戶端的重要配置,發(fā)送消息的時(shí)候就可設(shè)置這個(gè)參數(shù)。該參數(shù)有三個(gè)值可配置:0、1、All 。
4
解決問題
我在開發(fā)測試環(huán)境配置的 Broker 節(jié)點(diǎn)數(shù)是3, Topic 是副本數(shù)為3, Partition 數(shù)為6, Asks參數(shù)為1。
作者:JanusWoo
來源:https://juejin.im/post/6874957625998606344
往期推薦
如果你覺得這篇文章不錯(cuò),那么,下篇通常會更好。添加微信好友,可備注“加群”(微信號:zhuan2quan)。
和花一輩子都看不清的人,
注定是截然不同的搬磚生涯。



評論
圖片
表情
