RangeAssignor(范围分区)
Range策略是對每個主題而言的,首先對同一個主題里面的分區(qū)按照序號進行排序,并對消費者按照字母順序進行排序。
假設n = 分區(qū)數/消費者數量 m= 分區(qū)數%消費者數量 那么前m個消費者每個分配n+l個分區(qū),后面的(消費者數量-m)個消費者每個分配n個分區(qū)假設我們有10個分區(qū),3個消費者,排完序的分區(qū)將會是0, 1, 2, 3, 4, 5, 6, 7, 8, 9;消費者線程排完序將會是C1-0, C2-0, C3-0。然后將partitions的個數除于消費者線程的總數來決定每個消費者線程消費幾個分區(qū)。如果除不盡,那么前面幾個消費者線程將會多消費一個分區(qū)。在我們的例子里面,我們有10個分區(qū),3個消費者線程, 10 / 3 = 3,而且除不盡,那么消費者線程 C1-0 將會多消費一個分區(qū)
的結果看起來是這樣的:
C1-0 將消費 0, 1, 2, 3 分區(qū)
C2-0 將消費 4, 5, 6 分區(qū)
C3-0 將消費 7, 8, 9 分區(qū)
假如我們有11個分區(qū),那么最后分區(qū)分配的結果看起來是這樣的:
C1-0 將消費 0, 1, 2, 3 分區(qū)
C2-0 將消費 4, 5, 6, 7 分區(qū)
C3-0 將消費 8, 9, 10 分區(qū)
假如我們有2個主題(T1和T2),分別有10個分區(qū),那么最后分區(qū)分配的結果看起來是這樣的:
C1-0 將消費 T1主題的 0, 1, 2, 3 分區(qū)以及 T2主題的 0, 1, 2, 3分區(qū)
C2-0 將消費 T1主題的 4, 5, 6 分區(qū)以及 T2主題的 4, 5, 6分區(qū)
C3-0 將消費 T1主題的 7, 8, 9 分區(qū)以及 T2主題的 7, 8, 9分區(qū)
可以看出,C1-0 消費者線程比其他消費者線程多消費了2個分區(qū),這就是Range strategy的一個很明顯的弊端
?
總結
以上是生活随笔為你收集整理的RangeAssignor(范围分区)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 什么时候会触发这个策略呢?
- 下一篇: RoundRobinAssignor(轮