回覆列表
  • 1 # 星夜無雙

    分割槽,Topic物理上的分組,一個Topic可以分為多個分割槽,每個分割槽是一個有序的佇列。分割槽中的每條訊息都會給分配一個有序的ID,也就是偏移量。

    分割槽的目的:

    減緩日誌檔案佔用磁碟空間,訊息需要持久化到檔案,分割槽可以將訊息粒度細分,每個分割槽可以存放在不同的磁碟空間中

    不同消費者同時消費分割槽中的資料,一個分割槽僅由一個消費者組中的消費者消費,1個消費者可以同時消費多個分割槽。

    可以實現負載均衡,如果同一個Topic的訊息都放在同一個Broker上,那消費的時候同一個Topic的消費者都去同一個Broker上消費,這樣會帶來壓力,如果透過分割槽放在不同Broker上,這樣就可以到不同的Broker上消費,當然同一個ID的訊息只能存在一個分割槽上。你可以想象A這個topic的訊息有10個那麼每個訊息有1個ID,如果分佈10個訊息分佈在不同的分割槽上,比如3個,那就形成3-3-4,消費者去消費的時候消費10條訊息時透過3個分割槽完成這樣就提高了吞吐量。

    Topic是訊息的邏輯佇列,分割槽是物理佇列。可以透過配置檔案來設定topic的預設分割槽數量,也可以在新建立topic的時候指定。建議分割槽數量和消費者數量一致,因為消費者數量多,多出來的不會去消費訊息的,因為一個佇列只能被一個消費者消費。如果消費者數量少則消費者就會比較繁忙。

  • 中秋節和大豐收的關聯?
  • 為什麼有些女生不喜歡的女生,男生卻喜歡?