Kafka 介紹

王洋洋發表於2016-10-10

以下內容翻譯自官方文件:http://kafka.apache.org/documentation#introduction


Kafka 是一個分散式流平臺。這到底是什麼意思呢?
我們認為,一個流平臺具備三個關鍵功能:

  1. 它允許釋出並訂閱記錄流。就這點來說,它類似於訊息佇列或企業資訊系統
  2. 它允許以容錯的方式儲存記錄流
  3. 它允許隨時處理記錄流

Kafka 擅長什麼?
它被用於兩大類應用:

  1. 建立實時流資料管道,可靠地獲得系統或應用間的資料
  2. 建立實時流應用,轉換或響應資料流

為了理解Kafka怎樣實現這些操作,我們潛入並由下而上地探索Kafka的功能。
首先,一些概念:

  • Kafka 作為叢集執行在一個或多個伺服器上
  • Kafka叢集按類儲存記錄 流,類被稱作topics
  • 每條記錄包括鍵、值和時間戳

Kafka有四個核心API:
enter image description here

  • 生產者API(Producer API ) : 允許應用釋出記錄流到一個或多個Kafka的topics
  • 消費者API(Consumer API): 允許應用訂閱一個或多個topics並處理獲得的記錄流
  • 流API(Stream API):允許應用成為流處理器,消費來自一個或多個topics的輸入流併發布輸出流到一個或多個topics,高效轉化輸入輸出流。
  • 聯結器API(Connector API):允許構建並跑重用的producers或consumers,它們將kafka topics和存在的應用或資料系統連線起來。比如,一個到關聯式資料庫的聯結器可能會捕獲每一個改變。

在Kafka中,客戶端和伺服器端間的通訊是由簡單、高效能、語言無關的TCP協議完成的。該協議版本化,並保持向後相容。我們為kafka提供了Java客戶端,但有許多語言的客戶端是可獲取使用的。

Topics 和 日誌
每個topic,Kafka叢集以如下方式儲存分段的日誌:
enter image description here
partition是按序、不可變的記錄佇列,被連續追加到結構化歸檔日誌。為分段中的記錄分別分配了一個序列id,該ID被稱作偏移量,它唯一標示了段中每條記錄。

相關文章