vivo 新機曝光:後置方圓矩陣設計,還有蔡司小藍標
阿新 • • 發佈:2022-03-25
1、Kafka 定義
Kafka傳統定義:Kafka是一個分散式的基於釋出/訂閱模式的訊息佇列(MessageQueue),主要應用於大資料實時處理領域; 釋出/訂閱:訊息的釋出者不會將訊息直接傳送給特定的訂閱者,而是將釋出的訊息分為不同的類別,訂閱者只接收感興趣的訊息; Kafka最新定義:Kafka是一個開源的分散式事件流平臺(EventStreamingPlatform),被數千家公司用於高效能資料管道、流分析、資料整合和關鍵任務應用。2、訊息佇列
目前企業中比較常見的訊息佇列產品主要有Kafka、ActiveMQ、RabbitMQ、RocketMQ等。在大資料場景主要採用Kafka作為訊息佇列。在JavaEE開發中主要採用ActiveMQ、RabbitMQ、RocketMQ。
2.1、傳統訊息佇列應用場景
傳統的訊息佇列的主要應用場景包括:快取/消峰、解耦和非同步通訊。
緩衝/消峰:有助於控制和優化資料流經過系統的速度,解決生產訊息和消費訊息的處理速度不一致的情況。
解耦:允許你獨立的擴充套件或修改兩邊的處理過程,只要確保它們遵守同樣的介面約束。
非同步通訊:允許使用者把一個訊息放入佇列,但並不立即處理它,然後在需要的時候再去處理它們。
2.2、傳統訊息佇列的兩種模式
點對點模式:消費者主動拉取資料,訊息收到後清除訊息
釋出/訂閱模式
- 可以有多個topic主題(瀏覽、點贊、收藏、評論等)
- 消費者消費資料之後,不刪除資料
- 每個消費者相互獨立,都可以消費到資料
3、kafka 基礎架構
- Producer:訊息生產者,就是向Kafka broker發訊息的客戶端。
- Consumer:訊息消費者,向Kafka broker取訊息的客戶端。
- Consumer Group(CG):消費者組,由多個consumer組成。消費者組內每個消費者負責消費不同分割槽的資料,一個分割槽只能由一個組內消費者消費;消費者組之間互不影響。所有的消費者都屬於某個消費者組,即消費者組是邏輯上的一個訂閱者。
- Broker:一臺Kafka伺服器就是一個broker。一個叢集由多個broker組成。一個broker可以容納多個topic。
- Topic:可以理解為一個佇列,生產者和消費者面向的都是一個topic。
- Partition:為了實現擴充套件性,一個非常大的topic可以分佈到多個broker(即伺服器)上,一個topic可以分為多個partition,每個partition是一個有序的佇列。
- Replica:副本。一個topic的每個分割槽都有若干個副本,一個Leader和若干個Follower。
- Leader:每個分割槽多個副本的“主”,生產者傳送資料的物件,以及消費者消費資料的物件都是Leader。
- Follower:每個分割槽多個副本中的“從”,實時從Leader中同步資料,保持和Leader資料的同步。Leader發生故障時,某個Follower會成為新的Leader。