天天看點

Kafka幾個基本概念

  • kafka是一款基于釋出與訂閱的消息系統。它一般被稱為“分布式送出日志”或者“分布式流平台”。
  • 檔案系統或者資料庫送出日志用來提供所有事物的持久化記錄,通過重建這些日志可以重建系統的狀态。同樣地,kafka的資料是按照一定順序持久化儲存的,可以按需讀取。
  • kafka拓撲結構
    Kafka幾個基本概念
  • 2、Kafka的特點
  • 2.1同時為分布和訂閱提供高吞吐量。據了解,Kafka每秒可以生産約25萬條消息(50MB),每秒處理55萬條消息(110MB)這裡說條數,可能不上特别準确,因為消息的大小可能不一緻;
  • 2.2可進行持久化操作,将消息持久化到到磁盤,以日志的形式存儲,是以可用于批量消費,例如ETL,以及實時應用程式。 通過将資料持久化到硬碟以及replication防止資料丢失。
  • 2.3 分布式系統,易于向外拓展。所有的Producer、broker和consumer都會有多個,均為分布式。無需停機即可拓展機器。
  • 2.4 消息被處理的狀态是在consumer端維護,而不是由server端維護,當失敗時能自動平衡。
  • 2.5 支援Online和offline的場景。
  • 3、Kafka的核心概念
Producer 消息的生成者
-Consumer- -消息的消費者-
-ConsumerGroup- -消費者組,可以并行消費Topic中的partition的消息-
-Broker- -緩存代理,Kafka叢集中的一台或多台伺服器統稱broker.-
-Topic- -Kafka處理資源的消息源(feeds of messages)的不同分類-
-Partition- -Topic實體上的分組,一個topic可以分為多個partion,每個partion是一個有序的隊列。partion中每條消息都會被分 配一個 有序的Id(offset)-
-Message- -消息,是通信的基本機關,每個producer可以向一個topic(主題)釋出一些消息-
-Producers- -消息和資料生成者,向Kafka的一個topic釋出消息的 過程叫做producers-
-Consumers- -消息和資料的消費者,訂閱topic并處理其釋出的消費過程叫做consumers-
  • 3.1 Producers的概念
  • 消息和資料生成者,向Kafka的一個topic釋出消息的過程叫做producers
  • Producer将消息釋出到指定的Topic中,同時Producer也能決定将此消息歸屬于哪個partition;比如基于round-robin方式 或者通過其他的一些算法等;
  • 異步發送批量發送可以很有效的提高發送效率。kafka producer的異步發送模式允許進行批量發送,先将消息緩存到記憶體中,然後一次請求批量發送出去。
  • 3.2 broker的概念:
  • Broker沒有副本機制,一旦broker當機,該broker的消息将都不可用。
  • Broker不儲存訂閱者的狀态,由訂閱者自己儲存。
  • 無狀态導緻消息的删除成為難題(可能删除的消息正在被訂閱),Kafka采用基于時間的SLA(服務保證),消息儲存一定時間(通常7天)後會删除。
  • 消費訂閱者可以rewind back到任意位置重新進行消費,當訂閱者故障時,可以選擇最小的offset(id)進行重新讀取消費消息
  • 3.3 Message組成
  • Message消息:是通信的基本機關,每個producer可以向一個topic釋出消息。
  • Kafka中的Message是以topic為基本機關組織的,不同的topic之間是互相獨立的,每個topic又可以分成不同的partition每個partition儲存一部分
  • partion中的每條Message包含以下三個屬性:
offset long
MessageSize int32
data messages的具體内容
  • 3.4 Consumers的概念
  • 消息和資料消費者,訂閱topic并處理其釋出的消息的過程叫做consumers.
  • 在kafka中,我們可以認為一個group是一個“訂閱者”,一個topic中的每個partions隻會被一個“訂閱者”中的一個consumer

    消費,不過一個consumer可以消費多個partitions中的消息

  • Kafka的設計原理決定,對于一個topic,同一個group不能多于partition個數的consumer同時消費,否則将意味着某些 consumer無法得到消息