rdkafka執行緒過多 kafka 多執行緒消費

2021-10-13 06:58:16 字數 732 閱讀 7387

一、

1、kafka的消費並行度依賴topic配置的分割槽數,如分割槽數為10,那麼最多10臺機器來並行消費(每台機器只能開啟乙個執行緒),或者一台機器消費(10個執行緒並行消費)。即消費並行度和分割槽數一致。

2、(1)如果指定了某個分割槽,會只講訊息發到這個分割槽上

(2)如果同時指定了某個分割槽和key,則也會將訊息傳送到指定分割槽上,key不起作用

(3)如果沒有指定分割槽和key,那麼將會隨機傳送到topic的分割槽中

(4)如果指定了key,那麼將會以hash的方式傳送到分割槽中

二、多執行緒消費例項

paritition 為3,broker為3,節點為3

1、生產者隨機分割槽提交資料

這也是乙個比較關鍵步驟,只有隨機提交到不同的分割槽才能實現多分割槽消費;

自定義隨機分割槽:

public class mypartition implements partitioner catch (exception e) else {

// dealmessage

kafkaserver.dealmessage(record.key(),record.value(),consumer);

// consumer.commitsync();

注意上面的執行緒為啥只有3個,這裡得跟上面kafka的分割槽個數相對應起來,否則如果執行緒超過分割槽數量,那麼只會浪費執行緒,因為即使使用3個以上的執行緒也只會消費三個分割槽,而少了則無法消費完全。所以這裡必須更上面的對應起來。

MySQL sleep執行緒過多如何解決?

什麼是sleep執行緒?sleep執行緒長時間保持可客戶端與服務端的連線狀態 導致sleep過多的原因 使用太多持久連線 高併發系統中 不適合使用持久連線 程式中 沒有及時關閉mysql連線 資料庫優化不完善 導致執行sql語句過慢 解決方法 vim etc my.cnf 配置檔案裡進行配置 下次需...

多執行緒例項,占用CPU過多

自已研究一下,有新發現,以前沒發現這麼多 thread mainthread thread childthread private void btnrun click object sender,eventargs e protected void readthread protected void...

Python通過多執行緒實現 非同步

import threading,time defthead num print 執行緒 s開始執行 num time.sleep 5 print 執行緒 s執行完畢 num defmain print 主方法開始執行 poll 執行緒池for i in range 1,3 thead one th...