kafka 是什么?
Kafka專為分布式高吞吐量系統而設計。 Kafka往往工作得很好,作為一個更傳統的消息代理的替代品。 與其他消息傳遞系統相比,Kafka具有更好的吞吐量,內置分區,復制和固有的容錯能力,這使得它非常適合大規模消息處理應用程序。
什么是消息系統?
消息系統負責將數據從一個應用程序傳輸到另一個應用程序,因此應用程序可以專注於數據,但不擔心如何共享它。 分布式消息傳遞基於可靠消息隊列的概念。 消息在客戶端應用程序和消息傳遞系統之間異步排隊。 有兩種類型的消息模式可用 - 一種是點對點,另一種是發布 - 訂閱(pub-sub)消息系統。 大多數消息模式遵循 pub-sub 。
點對點消息系統
在點對點系統中,消息被保留在隊列中。 一個或多個消費者可以消耗隊列中的消息,但是特定消息只能由最多一個消費者消費。 一旦消費者讀取隊列中的消息,它就從該隊列中消失。 該系統的典型示例是訂單處理系統,其中每個訂單將由一個訂單處理器處理,但多個訂單處理器也可以同時工作。 下圖描述了結構。
發布 - 訂閱消息系統
在發布 - 訂閱系統中,消息被保留在主題中。 與點對點系統不同,消費者可以訂閱一個或多個主題並使用該主題中的所有消息。 在發布 - 訂閱系統中,消息生產者稱為發布者,消息使用者稱為訂閱者。 一個現實生活的例子是Dish電視,它發布不同的渠道,如運動,電影,音樂等,任何人都可以訂閱自己的頻道集,並獲得他們訂閱的頻道時可用。
Kafka特點
消息保存在磁盤上;Kafka構建在ZooKeeper同步服務之上;
怎么應用的?
Kafka可以在許多用例中使用。 其中一些列出如下 -
-
指標 - Kafka通常用於操作監控數據。 這涉及聚合來自分布式應用程序的統計信息,以產生操作數據的集中饋送。
-
日志聚合解決方案 - Kafka可用於跨組織從多個服務收集日志,並使它們以標准格式提供給多個服務器。
-
流處理 - 流行的框架(如Storm和Spark Streaming)從主題中讀取數據,對其進行處理,並將處理后的數據寫入新主題,供用戶和應用程序使用。 Kafka的強耐久性在流處理的上下文中也非常有用。