Apache Kafka —一個不同的消息系統

jopen 10年前發布 | 27K 次閱讀 Apache Kafka

Apache已經發布了Kafka 0.8,也是自從成為Apache軟件基金會的頂級項目后Kafka的 第一個主版本。 Apache Kafka是發布—訂閱消息傳遞,實現了分布式提交日志,適用于離線和在線消息消費。它最初由LinkedIn開發的消息系統,用于低延遲的收集和發送大 量的事件和日志數據。最新版本包括群集內復制和多數據目錄支持。目前請求處理也是異步的,使用請求處理線程的附屬線程池來實現。日志文件可以按年齡進行覆 蓋,并且日志級別可通過JMX進行動態設置。性能測試工具已提供,幫助解決存在的性能問題,并尋找潛在的性能優化點。

Kafka是一個分布式,分區化,可復制的提交日志服務。生產者將消息發布到Kafka主題,消費者訂閱這些主題并消費這些消息。在Kafka集群 上一個服務器稱為一個Broker。對于每一個主題,Kafka群集保留一個用于縮放,并行化和容錯性的分區。每個分區是一個有序,不可變的消息序列,并 不斷追加到提交日志文件。分區的消息每個也被賦值一個稱為偏移順序的序列化編號。

Apache Kafka —一個不同的消息系統

偏移是由消費者來控制。典型的消費者將處理列表中的下一條消息,它可以以任何順序接收消息,因為Kafka集群為所有發布的消息保留一段可配置的時 間。這讓消費者很靈活,他們可以來去自由而不影響群集,并適合像Hadoop集群這樣的脫機消費者。生產者能夠選擇那一個主題,主題的那一個分區,來發布 該消息。消費者自己也可以分配一個消費者組名,每個消息將發送給每個訂閱消費者組的消費者。如果所有的消費者有不同的消費組,那么消息將被廣播到每一個消 費者。

Kafka可以像一個傳統的消息Broker使用。它具有高吞吐量,內置分區,可復制和容錯等特性,這使得它成為大型消息處理應用的理想解決方案。 Kafka也可以用于高訪問量的網站活動的跟蹤機制。網站活動可以被發布,并且可以被實時處理,或加載到Hadoop或離線的數據倉庫系統。Kafka也 可以用來作為一種日志整合方案。代替工作于日志文件,日志可以作為消息流處理。

Kafka目前用于LinkedIn,它每天處理超過100億消息,持續負載平均每秒172,000消息。目前,無論從內部和外部的使用數據的應用 程序大量使用多訂閱者支持。每個消息發布出來后,基本上會有5.5個消息消費者使用,這導致的結果是每一天將有550億的消息發送給實時消費者。367個 主題涵蓋用戶活動的主題和運營數據,其中最大將每天增加的平均92GB批量壓縮消息。信息保存時間為7天,這些平均約9.5 TB壓縮消息跨越主題。除了在線消費者,還有眾多的大型Hadoop集群,它們消費頻繁,高吞吐量,并行矩陣,作為離線數據負載的一部分。

作為入門,訪問官方的Apache Kafka文檔頁,你可以學習更多和下載Kafka。也有一篇來自LinkedIn的論文,標題為《構建LinkedIn的實時活動數據管道》 ,該論文討論Kafka 建立原因和Kafka設計上的特性。

查看英文原文:Apache Kafka - A Different Kind of Messaging System

來自:http://www.infoq.com/cn/news/2014/01/apache-afka-messaging-system

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!