Kafka partition的數(shù)量問(wèn)題

kafka的每個(gè)topic都可以創(chuàng)建多個(gè)partition啦撮,partition的數(shù)量無(wú)上限幅慌,并不會(huì)像replica一樣受限于broker的數(shù)量姑丑,因此partition的數(shù)量可以隨心所欲的設(shè)置集嵌。那確定partition的數(shù)量就需要思考一些權(quán)衡因素。


越多的partition可以提供更高的吞吐量

在kafka中,單個(gè)partition是kafka并行操作的最小單元。每個(gè)partition可以獨(dú)立接收推送的消息以及被consumer消費(fèi),相當(dāng)于topic的一個(gè)子通道沈条,partition和topic的關(guān)系就像高速公路的車(chē)道和高速公路的關(guān)系一樣,起始點(diǎn)和終點(diǎn)相同诅炉,每個(gè)車(chē)道都可以獨(dú)立實(shí)現(xiàn)運(yùn)輸蜡歹,不同的是kafka中不存在車(chē)輛變道的說(shuō)法,入口時(shí)選擇的車(chē)道需要從一而終涕烧。而kafka的吞吐量顯而易見(jiàn)月而,在資源足夠的情況下,partition越多速度越快议纯。

這里提到的資源充足解釋一下父款,假設(shè)我現(xiàn)在一個(gè)partition的最大傳輸速度為p,目前kafka集群共有三個(gè)broker瞻凤,每個(gè)broker的資源足夠支撐三個(gè)partition最大速度傳輸憨攒,那我的集群最大傳輸速度為3*3*p=9p,假設(shè)在不增加資源的情況下將partition增加到18個(gè)阀参,每個(gè)partition只能以p/2的速度傳輸數(shù)據(jù)肝集,因此傳輸速度上限還是9p,并不能再提升结笨,因此吞吐量的設(shè)計(jì)需要考慮broker的資源上限包晰。當(dāng)然,kafka跟其他集群一樣炕吸,可以橫向擴(kuò)展,再增加三個(gè)相同資源的broker勉痴,那傳輸速度即可達(dá)到18p赫模。


越多的分區(qū)需要打開(kāi)更多的文件句柄

在kafka的broker中,每個(gè)分區(qū)都會(huì)對(duì)照著文件系統(tǒng)的一個(gè)目錄蒸矛。

在kafka的數(shù)據(jù)日志文件目錄中瀑罗,每個(gè)日志數(shù)據(jù)段都會(huì)分配兩個(gè)文件,一個(gè)索引文件和一個(gè)數(shù)據(jù)文件雏掠。因此乡话,隨著partition的增多屋群,需要的文件句柄數(shù)急劇增加降狠,必要時(shí)需要調(diào)整操作系統(tǒng)允許打開(kāi)的文件句柄數(shù)柏肪。


更多的分區(qū)會(huì)導(dǎo)致端對(duì)端的延遲

kafka端對(duì)端的延遲為producer端發(fā)布消息到consumer端消費(fèi)消息所需的時(shí)間,即consumer接收消息的時(shí)間減去produce發(fā)布消息的時(shí)間。kafka在消息正確接收后才會(huì)暴露給消費(fèi)者,即在保證in-sync副本復(fù)制成功之后才會(huì)暴露辆苔,瓶頸則來(lái)自于此菲驴。在一個(gè)broker上的副本從其他broker的leader上復(fù)制數(shù)據(jù)的時(shí)候只會(huì)開(kāi)啟一個(gè)線程巧涧,假設(shè)partition數(shù)量為n,每個(gè)副本同步的時(shí)間為1ms,那in-sync操作完成所需的時(shí)間即n*1ms婿失,若n為10000哩照,則需要10秒才能返回同步狀態(tài),數(shù)據(jù)才能暴露給消費(fèi)者懒浮,這就導(dǎo)致了較大的端對(duì)端的延遲飘弧。


越多的partition意味著需要更多的內(nèi)存

在新版本的kafka中可以支持批量提交和批量消費(fèi),而設(shè)置了批量提交和批量消費(fèi)后砚著,每個(gè)partition都會(huì)需要一定的內(nèi)存空間次伶。假設(shè)為100k,當(dāng)partition為100時(shí)稽穆,producer端和consumer端都需要10M的內(nèi)存冠王;當(dāng)partition為100000時(shí),producer端和consumer端則都需要10G內(nèi)存舌镶。無(wú)限的partition數(shù)量很快就會(huì)占據(jù)大量的內(nèi)存柱彻,造成性能瓶頸。


越多的partition會(huì)導(dǎo)致更長(zhǎng)時(shí)間的恢復(fù)期

kafka通過(guò)多副本復(fù)制技術(shù)餐胀,實(shí)現(xiàn)kafka的高可用性和穩(wěn)定性哟楷。每個(gè)partition都會(huì)有多個(gè)副本存在于多個(gè)broker中,其中一個(gè)副本為leader骂澄,其余的為follower吓蘑。當(dāng)kafka集群其中一個(gè)broker出現(xiàn)故障時(shí),在這個(gè)broker上的leader會(huì)需要在其他broker上重新選擇一個(gè)副本啟動(dòng)為leader坟冲,這個(gè)過(guò)程由kafka controller來(lái)完成,主要是從Zookeeper讀取和修改受影響partition的一些元數(shù)據(jù)信息溃蔫。

通常情況下健提,當(dāng)一個(gè)broker有計(jì)劃的停機(jī)上,該broker上的partition leader會(huì)在broker停機(jī)前有次序的一一移走伟叛,假設(shè)移走一個(gè)需要1ms私痹,10個(gè)partition leader則需要10ms,這影響很小,并且在移動(dòng)其中一個(gè)leader的時(shí)候紊遵,其他九個(gè)leader是可用的账千,因此實(shí)際上每個(gè)partition leader的不可用時(shí)間為1ms。但是在宕機(jī)情況下暗膜,所有的10個(gè)partition

leader同時(shí)無(wú)法使用匀奏,需要依次移走,最長(zhǎng)的leader則需要10ms的不可用時(shí)間窗口学搜,平均不可用時(shí)間窗口為5.5ms娃善,假設(shè)有10000個(gè)leader在此宕機(jī)的broker上,平均的不可用時(shí)間窗口則為5.5s瑞佩。

更極端的情況是聚磺,當(dāng)時(shí)的broker是kafka controller所在的節(jié)點(diǎn),那需要等待新的kafka leader節(jié)點(diǎn)在投票中產(chǎn)生并啟用炬丸,之后新啟動(dòng)的kafka leader還需要從zookeeper中讀取每一個(gè)partition的元數(shù)據(jù)信息用于初始化數(shù)據(jù)瘫寝。在這之前partition leader的遷移一直處于等待狀態(tài)。


總結(jié)

通常情況下稠炬,越多的partition會(huì)帶來(lái)越高的吞吐量焕阿,但是同時(shí)也會(huì)給broker節(jié)點(diǎn)帶來(lái)相應(yīng)的性能損耗和潛在風(fēng)險(xiǎn),雖然這些影響很小酸纲,但不可忽略捣鲸,因此需要根據(jù)自身broker節(jié)點(diǎn)的實(shí)際情況來(lái)設(shè)置partition的數(shù)量以及replica的數(shù)量。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末闽坡,一起剝皮案震驚了整個(gè)濱河市栽惶,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌疾嗅,老刑警劉巖外厂,帶你破解...
    沈念sama閱讀 210,978評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異代承,居然都是意外死亡汁蝶,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門(mén)论悴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)掖棉,“玉大人,你說(shuō)我怎么就攤上這事膀估♂:ィ” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,623評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵察纯,是天一觀的道長(zhǎng)帕棉。 經(jīng)常有香客問(wèn)我针肥,道長(zhǎng),這世上最難降的妖魔是什么香伴? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,324評(píng)論 1 282
  • 正文 為了忘掉前任慰枕,我火速辦了婚禮,結(jié)果婚禮上即纲,老公的妹妹穿的比我還像新娘具帮。我一直安慰自己,他們只是感情好崇裁,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,390評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布匕坯。 她就那樣靜靜地躺著,像睡著了一般拔稳。 火紅的嫁衣襯著肌膚如雪葛峻。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,741評(píng)論 1 289
  • 那天巴比,我揣著相機(jī)與錄音术奖,去河邊找鬼。 笑死轻绞,一個(gè)胖子當(dāng)著我的面吹牛采记,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播政勃,決...
    沈念sama閱讀 38,892評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼唧龄,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了奸远?” 一聲冷哼從身側(cè)響起既棺,我...
    開(kāi)封第一講書(shū)人閱讀 37,655評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎懒叛,沒(méi)想到半個(gè)月后丸冕,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,104評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡薛窥,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年胖烛,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片诅迷。...
    茶點(diǎn)故事閱讀 38,569評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡佩番,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出罢杉,到底是詐尸還是另有隱情答捕,我是刑警寧澤,帶...
    沈念sama閱讀 34,254評(píng)論 4 328
  • 正文 年R本政府宣布屑那,位于F島的核電站拱镐,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏持际。R本人自食惡果不足惜沃琅,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,834評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蜘欲。 院中可真熱鬧益眉,春花似錦、人聲如沸姥份。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,725評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)澈歉。三九已至展鸡,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間埃难,已是汗流浹背莹弊。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,950評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留涡尘,地道東北人忍弛。 一個(gè)月前我還...
    沈念sama閱讀 46,260評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像考抄,于是被迫代替她去往敵國(guó)和親细疚。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,446評(píng)論 2 348