kafka消费速度跟不上生产速度的解决方案!
雖說kafka是個(gè)高吞吐的消息中間件,有著削峰填谷的作用。
但是當(dāng)consumer消費(fèi)速度過慢時(shí),大量的數(shù)據(jù)堆積,造成系統(tǒng)的異常。
所以以下給出幾種解決方案。
1、提高了partition的數(shù)量,從而提高了consumer的并行能力,從而提高數(shù)據(jù)的消費(fèi)能力,也就是我們說的多線程消費(fèi),既然一個(gè)線程消費(fèi)不過來,那么就多開線程,開十個(gè)線程,消費(fèi)能力就提高了10倍。但前提是,要消費(fèi)的topic的partition數(shù)也要相應(yīng)的提高到10(partition數(shù)的大小決定最大消費(fèi)線程數(shù))。
2、批量發(fā)送消息的大小是否過大,發(fā)送的間隙是否過小。因?yàn)橐淮蜗M(fèi)一批數(shù)據(jù),然后在封裝處理,總比一次消費(fèi)一條數(shù)據(jù)來得快,但要注意,處理這一批數(shù)據(jù)的時(shí)間可能比處理一條數(shù)據(jù)的時(shí)間來的久,如果處理時(shí)間太久,超過了kafka的認(rèn)定時(shí)間,kafka就會(huì)認(rèn)為這個(gè)消費(fèi)者掛了,從而踢掉重新分配一個(gè)消費(fèi)者。所以處理方式可以是:1,一次不拉過多的數(shù)據(jù)。2,kafka認(rèn)定消費(fèi)者掛了的時(shí)間設(shè)置久點(diǎn)。
3、當(dāng)延遲較大時(shí),可以觀察一下服務(wù)器的硬件使用參數(shù),如果沒有沒有到達(dá)瓶頸,應(yīng)該還是kafka參數(shù)設(shè)置的問題。
總結(jié)
以上是生活随笔為你收集整理的kafka消费速度跟不上生产速度的解决方案!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一文彻底了解Logstash
- 下一篇: MapReduce太慢了,记一次对它的调