首先簡單的介紹一下消費者對topic的訂閱。客戶端的消費者訂閱了topic后,如果是單個消費者,那么消費者會順序消費這些topic分區中的數據,如果是創建了消費組有多個消費者,那么kafak的服務端將這些topic平均分配給每個消費者。比如有2個topic,每個topic有2個分區,總共有4個分區,如果一個消費組開了四個消費者線程,那么每個消費者將被分配一個分區進行消費。一般建議是一個消費組里的消費者的個數與訂閱的topic的總分區數相等,這樣可以達到最高的吞吐量。如果消費者的個數大於訂閱的topic的總分區,那么多出的消費者將分配不到topic的分區,等於是白白創建了一個消費者線程,浪費資源。
- 提高了partition的數量,從而提高了consumer的並行能力,從而提高數據的消費能力
- 對於單partition的消費線程,增加了一個固定長度的阻塞隊列和工作線程池進一步提高並行消費的能力
