kafka是linkedin開源的分布式發布-訂閱訊息系統(訊息佇列)
kafka特點
1 高吞吐率、低延遲,每秒處理幾十萬訊息,延遲最低幾毫秒
2 可擴充套件性,支援動態擴充套件節點資料
3 永續性與可靠性,資料被持久化磁碟,支援資料多副本防止資料丟失
4 高容錯,允許節點失敗
5 高併發,支援上千個客戶端同時讀寫
架構如圖
kafka:produce
1 向broker傳送訊息
2 可通過任意乙個broker發現其他broker的位置資訊
3 訊息組成 topic key value timestamp
kafka:broker
1 producer和consumer之間的橋梁
從producer端接收訊息,並儲存下來
將訊息傳送給訂閱的consumer
2 可將訊息可靠地快取一段時間
每個訊息儲存成多副本(預設3)
可設定儲存時間(預設時間)
kafka:partition與topic
topic
使用者劃分message的邏輯概念,乙個topic可以分布到不通的broker上
partition
kafka橫向擴充套件和一切並行化的基礎,每個topic至少分成1個partition
訊息在partition中是有編號的,稱為「offset」
kafka以partition為單位對訊息進行備份(replica),每個partition可以配置至少有1個replica
kafka:consumer
負責從kafka中讀取資料,並進行處理
consumer group
多個consumer可形成乙個group,同時讀取某個topic。
每個consumer讀取乙個或多個partition
consumer position
每個consumer自己維護讀取的位置(offset,一旦掛掉後,重啟可繼續讀取)
kafka架構圖
kafka:服務保證
順序保證
同乙個producer傳送到單個topic的同一partition的訊息是順序的
consumer按照訊息在日誌中的寫入順序讀取訊息
producer產生的資料由consumer消費
容錯如果訊息的副本數是n,則n-1臺機器宕機後不會導致丟失資料
應用場景 :監控 、訊息佇列、站點的使用者活動追蹤 、流處理、
Kafka分布式訊息佇列
可快速持久化。通過o 1 的磁碟資料結構提供訊息的持久化,這種結構對於即使數以tb的訊息儲存也能夠保持長時間的穩定性能 高吞吐量。即使是非常普通的硬體kafka也可以支援每秒數百萬的訊息 完全的分布式系統。它的broker producer consumer都原生地支援分布式,自動支援負載均衡 pa...
Kafka分布式訊息佇列框架
既有的訊息佇列框架或者對訊息傳送的可靠性提供了較高的保證,由此帶來較大的負擔,不能滿足海量高吞吐率的要求 或者完全面向實時訊息處理系統,對於批量離線處理的場合無法提供足夠的快取和永續性要求。如何實現 kafka的集群有多個broker伺服器組成,每個型別的訊息被定義為topic,同一topic內部的...
分布式訊息佇列
以下是訊息佇列以下的大綱,本文主要介紹訊息佇列概述,訊息佇列應用場景和訊息中介軟體示例 電商,日誌系統 訊息佇列概述 訊息佇列應用場景 訊息中介軟體示例 jms訊息服務 見第二篇 大型 架構系列 分布式訊息佇列 二 常用訊息佇列 見第二篇 大型 架構系列 分布式訊息佇列 二 參考 推薦 資料 見第二...