分布式訊息佇列kafka

2021-09-19 19:29:50 字數 1226 閱讀 3733

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訊息服務 見第二篇 大型 架構系列 分布式訊息佇列 二 常用訊息佇列 見第二篇 大型 架構系列 分布式訊息佇列 二 參考 推薦 資料 見第二...