分佈式消息隊列之Kafka入門


kafka的定義 java



kafka是一個分佈式消息系統,有linkedin時候用scale編寫,用做LinkedIn的活動流(Acitvity Stream)和運營數據處理管道(pipeline)的基礎,具備高水平擴展和高吞吐量。從 0.9 版本開始,Kafka 的標語已經從「一個高吞吐量,分佈式的消息系統」改成」一個分佈式流平臺」。c++



應用領域web


kafka已經被多家不一樣類型的公司做爲多種類型的數據管道和消息系統使用。如:淘寶,支付寶,百度,twitter等ruby

目前愈來愈多的開源分佈式處理系統如:服務器

用於日誌收集的Apache Flume系統微信

用於實時處理的Apahce Storm系統架構

用於內存處理的Spark系統app

用於全文檢索的Elasticsearch系統負載均衡

分佈式消息隊列的對比 分佈式



ActiveMQ RabbitMQ kafka
所屬社區/公司 Apache Mozilla Public License Apache/Linkedin
開發語言 java erlang scala
支持的協議 openwire/stomp/rest/xmpp/amqp amqp 仿amqp(獨立研發)
事務 支持 不支持 不支持
集羣 支持 支持 支持
負載均衡 支持 支持 支持
動態擴容 不支持 不支持 支持(zookeeper)

AMQP協議




Advanced Message Queuing Protocol 一個提供統一消息服務的應用層標準高級消息隊列協議,是應用層協議的一個開放標準,爲面向消息的中間件設計。基於此協議的客戶端與消息中間件可傳遞消息,並不受客戶端/中間件不一樣產品,不一樣的開發語言等條件的限制
消費者 consumer:從消息隊裏中請求消息的客戶端應用程序

生產者 producer: 向broker發佈消息的客戶端應用程序

AMQP服務器端 broker:用來接收生產者發送的消息並將這些消息路由個服務器中的隊裏,說的簡單點就是處理生產者的消息轉發到消費者能收到的路由裏面,一個kafka節點就是一個broker節點,一個或者多個broker節點就能組成一個kafka集羣。

consumer group: 每一個consumer屬於特定的一個consumer group,一條消息能夠發到多個consumer group中被consumer消費,可是一個consumer group中只能有一個consumer消費該消息。


  • 在一套 Kafka 架構中有多個 Producer,多個 Broker,多個 Consumer,每一個 Producer 能夠對應多個 Topic,每一個 Consumer 只能對應一個 Consumer Group。

  • 整個 Kafka 架構對應一個 ZK 集羣,經過 ZK 管理集羣配置,選舉 Leader,以及在 Consumer Group 發生變化時進行 Rebalance。

kafka支持的客戶端語言



c,c++,erlang,Java,.net,Perl,PHP,Python,ruby,go,JavaScript。

kafka的架構


首先了解一些概念:

主題 topic: 一個主題相似新聞中的體育,娛樂,教育等分類概念,在實際工程中一般一個業務一個主題;

分區 partition : 一個topic中的消息數據按照多個分區組織,分區是kafka消息隊組織的最小單位,一個分區能夠看作是一個FIFO的隊列;每一個分區的內部是有序的。通常集羣的性能低下,咱們能夠經過增長分區的配置提升性能。

理解kafka消息在分區之間序列


Kafka 爲每一個主題維護了分佈式的分區(Partition)日誌文件,每一個 Partition 在 Kafka 存儲層面是 Append Log。任何發佈到此 Partition 的消息都會被追加到 Log 文件的尾部,在分區中的每條消息都會按照時間順序分配到一個單調遞增的順序編號,也就是咱們的 Offset。Offset 是一個 Long 型的數字。

咱們經過這個 Offset 能夠肯定一條在該 Partition 下的惟一消息。在 Partition 下面是保證了有序性,可是在 Topic 下面沒有保證有序性。

在瞭解了kafka的基礎概念以後,咱們就能夠動手去把kafka給運行起來,更深刻的體會分佈式消息隊列系統帶來的好處。




掃碼關注
更多精彩



本文分享自微信公衆號 - 雲原生生態圈(CloudNativeEcoSystem)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索