因?yàn)?2 點(diǎn)設(shè)置不當(dāng),導(dǎo)致 kafka 集群宕機(jī)不可用
點(diǎn)擊上方“服務(wù)端思維”,選擇“設(shè)為星標(biāo)”
回復(fù)”669“獲取獨(dú)家整理的精選資料集
回復(fù)”加群“加入全國服務(wù)端高端社群「后端圈」


- Kafka 宕機(jī)引發(fā)的高可用思考 -
問題要從一次Kafka的宕機(jī)開始說起。

- 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)該消息就是通過偏移量來識別。


- Ack 參數(shù)決定了可靠程度 -
Asks這個(gè)參數(shù)是生產(chǎn)者客戶端的重要配置,發(fā)送消息的時(shí)候就可設(shè)置這個(gè)參數(shù)。該參數(shù)有三個(gè)值可配置:0、1、All 。

- 解決問題 -
我在開發(fā)測試環(huán)境配置的 Broker 節(jié)點(diǎn)數(shù)是3, Topic 是副本數(shù)為3, Partition 數(shù)為6, Asks參數(shù)為1。
— 本文結(jié)束 —

● 漫談設(shè)計(jì)模式在 Spring 框架中的良好實(shí)踐
關(guān)注我,回復(fù) 「加群」 加入各種主題討論群。
對「服務(wù)端思維」有期待,請?jiān)谖哪c(diǎn)個(gè)在看
喜歡這篇文章,歡迎轉(zhuǎn)發(fā)、分享朋友圈


評論
圖片
表情
