一、
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...