2017-07-16 49 views
0

全部,原諒我我是一個新手,只是初學者Kafka。目前我正在閱讀關於the difference between traditional message system like Active MQ and Kafka的文檔Kafka卡夫卡消息處理如何在發佈 - 訂閱模式下擴展?

作爲文件。

對於傳統的消息系統。他們無法擴展消息處理。 由於

發佈 - 訂閱模式可以讓你廣播數據到多個進程,但 沒有縮放處理的方式,因爲每個消息發送到每一個 用戶。

我覺得這對我有意義。

但是對於Kafka。文檔說,即使在發佈 - 訂閱模式下,Kafka也可以擴展消息處理。 (請糾正我,如果我錯了,謝謝。)

卡夫卡的消費羣體概念概括了這兩個概念。由於具有隊列的 消費者組允許您在一組進程(消費者組的成員)上劃分處理 。由於 與發佈 - 訂閱,卡夫卡允許您廣播消息到 多個消費羣體。

卡夫卡的模型的優點是,每個主題都有兩種屬性 - 它可擴展的處理,也是多用戶 -there 是沒有必要選擇一個或另一個。

所以我的問題是如何Kafka使它?我的意思是在發佈 - 訂閱模式下縮放處理。謝謝。

回答

2

在卡夫卡的主要獨特的功能,支持可擴展的pub/sub是:

  1. 分區個別主題和集羣,以利用更多的機器,磁盤中分散在多個經紀人的活動分區,與高速緩存。生產者和消費者通常連接到集羣中的許多或所有節點,而不僅僅是給定主題/隊列的單個主節點。
  2. 將所有消息存儲在順序提交日誌中,並且在使用時不刪除它們。這會導致更多的順序讀取和寫入,從而不必處理跟蹤消息的不同副本,刪除單個消息,處理碎片,跟蹤哪些消費者已知消費哪些消息。
  3. 啓用對單個消費者和消費者組的智能並行處理,使得每個並行消息流可以來自#1中提到的分佈式分區,同時將偏移量管理和分區分配邏輯卸載到客戶端本身。卡夫卡規模與更多的消費者,因爲消費者做一些工作(不像大多數其他酒吧/子經紀人的大部分工作是在經紀人完成)
+0

感謝您的審查和回答問題。據我所知。傳統的消息傳遞可以在集羣模式下執行#1。對? (PS:我想弄明白Kafka比傳統消息傳遞有什麼優勢。) –

+0

#2。如果代理未跟蹤消息消息,則確認。 'Kafka'如何確保消息在處理過程中不會丟失?謝謝。 –

+0

不,傳統消息傳遞即使在集羣模式下也不會執行#1。如果消息是持久的,則傳統消息將所有消息存儲在單個主節點中(不分區),然後將整個消息存儲複製到其他節點以實現容錯。 –