Kafka實際使用過程當中遇到的一些問題及解決方法

 
 

Kafka實際使用過程當中遇到的一些問題及解決方法:html

1.關於Kafka的分區:

開始使用Kafka的時候,沒有分區的概念,覺得相似於傳統的MQ中間件同樣,就直接從程序中獲取Kafka中的數據。 後來程序搭建了多套,發現永遠只有一個消費者(消費者應用部署在多個tomcat上)會從Kafka中獲取數據進行處理,後來才知道有分區這麼一個概念。算法

具體不說了,網上有不少資料,總的歸納:Kafka的分區,至關於把一個Topic再細分紅了多個通道,一個消費者應用能夠從一個分區或多個分區中獲取數據。 有4個分區,1個消費者:這一個消費者須要負責消費四個分區的數據。 有4個分區,2個消費者:每一個消費者負責兩個分區 有4個分區,3個消費者:消費者1負責1個分區,消費者2負責1個分區,消費者3負責兩個分區 有4個分區,4個消費者:一人一個 有4個分區,5個及以上消費者:4個消費者一人一個,剩下的消費者空閒不工做。spring

部署的時候儘可能作到一個消費者對應一個分區。緩存

2.分區數據量不均衡:

Topic上設置了四個分區,壓測過程當中,發現每一個分區的數據量差異挺大的,極端的時候,只有一個分區有數據,其他三個分區空閒。 解決方法,在用生產者生產數據的時候,send方法須要指定key。Kafka會根據key的值,經過必定的算法,如hash,將數據平均的發送到不一樣的分區上。tomcat

3.spring-integration-kafka:

在使用spring-integration-kafka作消費者的時候,發現CPU和內存佔用量佔用很是的大,後來又發現無論生產者發送了多少數據,Kafka的Topic中一直沒有數據,這時候才知道spring-integration-kafka會將Topic中的數據全拉到本地,緩存起來,等待後續的處理。 解決方法: <int:channel id="inputFromKafka"> <int:queue capacity="25"/> --這裏加個配置,至關於緩存多少數據到本地 </int:channel>htm

做者:忙小懶 連接:http://www.jianshu.com/p/551954909f53 來源:簡書 著做權歸做者全部。商業轉載請聯繫做者得到受權,非商業轉載請註明出處。
相關文章
相關標籤/搜索