溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Kafka集群消息積壓問題及怎么樣處理

發(fā)布時(shí)間:2021-12-15 10:56:47 來源:億速云 閱讀:738 作者:柒染 欄目:大數(shù)據(jù)

今天就跟大家聊聊有關(guān)Kafka集群消息積壓問題及怎么樣處理,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

通常情況下,企業(yè)中會(huì)采取輪詢或者隨機(jī)的方式,通過Kafka的producer向Kafka集群生產(chǎn)數(shù)據(jù),來盡可能保證Kafk分區(qū)之間的數(shù)據(jù)是均勻分布的。

在分區(qū)數(shù)據(jù)均勻分布的前提下,如果我們針對(duì)要處理的topic數(shù)據(jù)量等因素,設(shè)計(jì)出合理的Kafka分區(qū)數(shù)量。對(duì)于一些實(shí)時(shí)任務(wù),比如Spark Streaming/Structured-Streaming、Flink和Kafka集成的應(yīng)用,消費(fèi)端不存在長時(shí)間"掛掉"的情況即數(shù)據(jù)一直在持續(xù)被消費(fèi),那么一般不會(huì)產(chǎn)生Kafka數(shù)據(jù)積壓的情況。

但是這些都是有前提的,當(dāng)一些意外或者不合理的分區(qū)數(shù)設(shè)置情況的發(fā)生,積壓問題就不可避免。

Kafka消息積壓的典型場景:

1.實(shí)時(shí)/消費(fèi)任務(wù)掛掉  

比如,我們寫的實(shí)時(shí)應(yīng)用因?yàn)槟撤N原因掛掉了,并且這個(gè)任務(wù)沒有被監(jiān)控程序監(jiān)控發(fā)現(xiàn)通知相關(guān)負(fù)責(zé)人,負(fù)責(zé)人又沒有寫自動(dòng)拉起任務(wù)的腳本進(jìn)行重啟。

那么在我們重新啟動(dòng)這個(gè)實(shí)時(shí)應(yīng)用進(jìn)行消費(fèi)之前,這段時(shí)間的消息就會(huì)被滯后處理,如果數(shù)據(jù)量很大,可就不是簡單重啟應(yīng)用直接消費(fèi)就能解決的。
2.Kafka分區(qū)數(shù)設(shè)置的不合理(太少)和消費(fèi)者"消費(fèi)能力"不足  

Kafka單分區(qū)生產(chǎn)消息的速度qps通常很高,如果消費(fèi)者因?yàn)槟承┰颍ū热缡軜I(yè)務(wù)邏輯復(fù)雜度影響,消費(fèi)時(shí)間會(huì)有所不同),就會(huì)出現(xiàn)消費(fèi)滯后的情況。

此外,Kafka分區(qū)數(shù)是Kafka并行度調(diào)優(yōu)的最小單元,如果Kafka分區(qū)數(shù)設(shè)置的太少,會(huì)影響Kafka consumer消費(fèi)的吞吐量。
3.Kafka消息的key不均勻,導(dǎo)致分區(qū)間數(shù)據(jù)不均衡  
在使用Kafka producer消息時(shí),可以為消息指定key,但是要求key要均勻,否則會(huì)出現(xiàn)Kafka分區(qū)間數(shù)據(jù)不均衡。

那么,針對(duì)上述的情況,有什么好的辦法處理數(shù)據(jù)積壓呢?

一般情況下,針對(duì)性的解決辦法有以下幾種:

1.實(shí)時(shí)/消費(fèi)任務(wù)掛掉導(dǎo)致的消費(fèi)滯后  

a.任務(wù)重新啟動(dòng)后直接消費(fèi)最新的消息,對(duì)于"滯后"的歷史數(shù)據(jù)采用離線程序進(jìn)行"補(bǔ)漏"。

此外,建議將任務(wù)納入監(jiān)控體系,當(dāng)任務(wù)出現(xiàn)問題時(shí),及時(shí)通知相關(guān)負(fù)責(zé)人處理。當(dāng)然任務(wù)重啟腳本也是要有的,還要求實(shí)時(shí)框架異常處理能力要強(qiáng),避免數(shù)據(jù)不規(guī)范導(dǎo)致的不能重新拉起任務(wù)。

b.任務(wù)啟動(dòng)從上次提交offset處開始消費(fèi)處理

如果積壓的數(shù)據(jù)量很大,需要增加任務(wù)的處理能力,比如增加資源,讓任務(wù)能盡可能的快速消費(fèi)處理,并趕上消費(fèi)最新的消息
2.Kafka分區(qū)少了
如果數(shù)據(jù)量很大,合理的增加Kafka分區(qū)數(shù)是關(guān)鍵。如果利用的是Spark流和Kafka direct approach方式,也可以對(duì)KafkaRDD進(jìn)行repartition重分區(qū),增加并行度處理。
3.由于Kafka消息key設(shè)置的不合理,導(dǎo)致分區(qū)數(shù)據(jù)不均衡  
可以在Kafka producer處,給key加隨機(jī)后綴,使其均衡。

看完上述內(nèi)容,你們對(duì)Kafka集群消息積壓問題及怎么樣處理有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI