-
Notifications
You must be signed in to change notification settings - Fork 61
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Consumer rebalance實驗 #431
Comments
@harryteng9527 可否試著整合到此專案內,也就是放到 |
08/09實驗實驗環境3 台 Kafka brokers 為 Intel i9-12900 目前量測消費速率與時間的方式為 實驗流程開啟consumers與producers,執行五分鐘後殺死 1 個 consumer,觸發rebalance後觀察Downtime時間及消費速率的變化 實驗結果Range assignor
RoundRobin assignor
Sticky assignor
Cooperative Sticky
程式開始執行五分鐘後殺死一個consumer,rebalance在殺死consumer後 10 分鐘被觸發。 總結將 Down time時間恢復消費速率的時間消費速率下降比例 |
@harryteng9527 這次的實驗做的非常的好,數據的整理也相當不錯。不過我有幾個疑問:
|
目前我只想到
因為一開始想測試Range assignor在不平衡的分配下的Downtime時間,所以故意創造Topic內partitions數量少於Consumer的環境。 |
我其實是想問是否代表
請看一下 #573 |
對,我覺得平衡效果不好。 |
麻煩把這點記下來,作為調查行為的一個重點 不過實驗中一開始就沒有跑到足夠快的地方… |
這邊的 |
是的 |
@harryteng9527 感謝最新的實驗,我覺得內容有越來越專業和進入核心,有幾個疑問請試著解答: 1)Range 和 RR 為何會出現「re-balance 後 : max = 620, min = 285」這個結果?這個演算法不是每次都清掉所有訂閱然後重新分配嗎?那直覺應該保持 max 500 min 250的狀況 |
re-balance 前的 consumer group 有 8 個而re-balance 後的 consumer group 只剩下 7 個 consumers,所以 re-balance 後的 max-assignment 與 min-assignment 才會是 620 與 285。
Sticky 也會去檢查
這兩個 assignor 的 re-balance 時間幾乎都在 1~2 sec,。 而 Sticky 與 Round-Robin 的 downtime 差異為下列兩點 :
我覺得最主要是 : 消費 Pre-fetched records 讓 sticky assignor 的 downtime 時間短
這個可以開個 PR 為 performance tool 新增此功能,紀錄此統計值,讓使用者能知道 Sticky assignor 有保留多少 partition,也可以拿來做對 Sticky assignor 不利的情境 除了為 Performance tool 新增 sticky 的統計值外,也可以新增 re-balance 時間,也許能添加在 |
這個概念不錯,麻煩獨立到一個議題去 另外一個疑問,Cooperative assignor 的優勢從圖片似乎看不出來,downtime沒有最短,吞吐量的的穩定度似乎也不高,可否試著說明看看? |
#238 中我們已經介紹過各個 assignor 的優缺點和差異 |
06/27
目前進度
https://github.com/harryteng9527/ConsumerExperiment
Main
實驗的主要流程:
multipleThreadConsumers
、觸發rebalance事件的trigger
增加某個topic的partition數量後,要等待5分鐘才會觸發rebalance,因為要等metadata五分鐘一次的更新。為了不等五分鐘,利用consumer的
enforceRebalance()
觸發rebalance紀錄時間
實作
ConsumerRebalanceListener
,利用callback來紀錄時間onPartitionsRevoked
: 在consumer revoke自己的partition時被呼叫onPartitionsAssigned
: 在consumer得到自己的assignment、fetch資料前被呼叫TriggerTask
負責觸發rebalance事件,目前有
Utility
放一些helper method、做其他事情的method,例如: create consumer instance、詢問topics、印出downtime時間
DownTime
儲存
rebalanceTime
、generationId
的物件預計修、新增的功能
The text was updated successfully, but these errors were encountered: