(11)如何確定合適分區(qū)數(shù)(1)

Kafka高吞吐量,就是通過partition將topic中消息存到Kafka集群不同broker中。partition并行度調(diào)優(yōu)最小單元

理論分區(qū)越多,吞吐量就越大。

一、實(shí)際分區(qū)過多弊端:

1、客戶端/服務(wù)器端需內(nèi)存就越多

1)Kafka0.8.2后,producer參數(shù)batch.size(默認(rèn)16KB),為每個(gè)分區(qū)緩存消息,積累一定大小或時(shí)間,移除發(fā)往broker。分區(qū)多,內(nèi)存占用多

2)consumer消費(fèi)線程數(shù)也增加。如10000個(gè)分區(qū),創(chuàng)建10000個(gè)線程,創(chuàng)建大約10000個(gè)Socket獲取分區(qū)數(shù)據(jù)。線程的開銷成本高

3——服務(wù)器端緩存成本大,服務(wù)器端維護(hù)controller,F(xiàn)etcherManager等

2、文件句柄的開銷

broker每個(gè)partition對(duì)應(yīng)磁盤一個(gè)目錄。每個(gè)日志數(shù)據(jù)分配索引和數(shù)據(jù)文件。打開index文件句柄和數(shù)據(jù)文件句柄。partition多,句柄數(shù)也多,超過操作系統(tǒng)文件句柄數(shù)量限制

3、能增加端對(duì)端的延遲

延遲時(shí)間:producer發(fā)送 到 consumer接收時(shí)間

? ??1)問題原因:producer消息提交后暴露。例,所有in-sync副本同步復(fù)制完才暴露。復(fù)制時(shí)間是延遲最原因。默認(rèn)broker只分配一個(gè)線程復(fù)制。

? ??2)解決:增大kafka集群緩解。例,1000個(gè)分區(qū)leader放1個(gè)/10個(gè)broker節(jié)點(diǎn),延遲差異。每個(gè)broker節(jié)點(diǎn)平均處理100個(gè)分區(qū),數(shù)十毫秒變幾毫秒

? ??3)根據(jù)經(jīng)驗(yàn),b個(gè)broker節(jié)點(diǎn)和復(fù)制因子r,整個(gè)kafka集群partition數(shù)量<=100*b*r個(gè),即單partition的leader<=100。

4、降低高可用性

partition多個(gè)副本,在不同broker,一個(gè)leader,其他follower

1)集群自動(dòng)化管理副本,通過leader確保同步。broker故障里面partition不可用controller節(jié)點(diǎn)broker自動(dòng)選leader,接收請(qǐng)求。從zk讀和改影響partition元數(shù)據(jù)信息。

2)broker停止服務(wù)前,controller將該broker所有leader一個(gè)個(gè)移走。從客戶層面看,系統(tǒng)在很小時(shí)間不可用

3)broker意外停服(kill -9方式),不可用時(shí)間受影響partition數(shù)有關(guān):如2節(jié)點(diǎn)集群2000partition,每個(gè)2個(gè)副本。一個(gè)broker宕,1000個(gè)partition同時(shí)不可用。每個(gè)partition 5ms恢復(fù),1000個(gè)5秒鐘。

4)恢復(fù)慢:controller節(jié)點(diǎn)broker宕:選舉恢復(fù)到新broker不啟動(dòng),自動(dòng)錯(cuò)誤恢復(fù),但新的controller要從zk中讀每個(gè)partition元數(shù)據(jù)用于初始化數(shù)據(jù)。partition多不可用時(shí)間長

總之,partition多帶高吞吐量。但partition過大過多,對(duì)可用性和消息延遲帶負(fù)面影響

二、如何確定合理分區(qū)數(shù)?

partition均衡負(fù)載是吞吐量關(guān)鍵,根據(jù)生產(chǎn)和消費(fèi)者目標(biāo)吞吐量估計(jì)。

測(cè)試topic的producer和consumer吞吐量,Tp和Tc,MB/s。目標(biāo)吞吐量Tt,numPartitions = Tt / max(Tp, Tc)

https://mp.weixin.qq.com/s/0EGp8V_OwbU47nHCzUWLuA

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容