Kafka是由Apache軟件基金會開發的一個開源流處理平台,由ScalaJava編寫。該專案的目標是為處理即時數據提供一個統一、高吞吐、低延遲的平台。其持久化層本質上是一個「按照分散式事務紀錄檔架構的大規模釋出/訂閱訊息佇列」,[3]這使它作為企業級基礎設施來處理串流數據非常有價值。此外,Kafka可以通過Kafka Connect連接到外部系統(用於數據輸入/輸出),並提供了Kafka Streams——一個Java串流處理

Quick Facts 開發者, 首次釋出 ...
Kafka[1]
開發者Apache軟件基金會,領英
首次釋出2011年1月,​13年前​(2011-01[2]
目前版本3.0.0(2021年9月21日,​3年前​(2021-09-21
原始碼庫 編輯維基數據連結
程式語言ScalaJava
作業系統跨平台
類型串流處理, 訊息中介軟體英語message broker
特許條款Apache特許條款 2.0
網站kafka.apache.org
Close

該設計受事務紀錄檔英語Transaction log的影響較大。[4]

Kafka的歷史

Kafka最初是由領英開發,並隨後於2011年初開源,並於2012年10月23日由Apache Incubator孵化出站。2014年11月,幾個曾在領英為Kafka工作的工程師,建立了名為Confluent的新公司,[5],並着眼於Kafka。根據2014年Quora的貼文,Jay Kreps似乎已經將它以作家弗朗茨·卡夫卡命名。Kreps選擇將該系統以一個作家命名是因為,它是「一個用於最佳化寫作的系統」,而且他很喜歡卡夫卡的作品。[6]

Kafka的架構

Thumb
Kafka概覽

Kafka儲存的訊息來自任意多被稱為「生產者」(Producer)的行程。數據從而可以被分配到不同的「分區」(Partition)、不同的「Topic」下。在一個分區內,這些訊息被索引並連同時間戳儲存在一起。其它被稱為「消費者」(Consumer)的行程可以從分區查詢訊息。Kafka執行在一個由一台或多台伺服器組成的叢集上,並且分區可以跨叢集結點分佈。

Kafka高效地處理即時串流數據,可以實現與Storm、HBase和Spark的整合。作為群集部署到多台伺服器上,Kafka處理它所有的釋出和訂閱訊息系統使用了四個API,即生產者API、消費者API、Stream API和Connector API。它能夠傳遞大規模串流訊息,內建容錯功能,已經取代了一些傳統訊息系統,如JMS、AMQP等。

Kafka架構的主要術語包括Topic、Record和Broker。Topic由Record組成,Record持有不同的資訊,而Broker則負責複製訊息。Kafka有四個主要API:

  • 生產者API:支援應用程式釋出Record流。
  • 消費者API:支援應用程式訂閱Topic和處理Record流。
  • Stream API:將輸入流轉換為輸出流,並產生結果。
  • Connector API:執行可重用的生產者和消費者API,可將Topic連結到現有應用程式。

相關術語

  • Topic 用來對訊息進行分類,每個進入到Kafka的資訊都會被放到一個Topic下
  • Broker 用來實現數據儲存的主機伺服器
  • Partition 每個Topic中的訊息會被分為若干個Partition,以提高訊息的處理效率
  • Producer 訊息的生產者
  • Consumer 訊息的消費者
  • Consumer Group 訊息的消費群組

設計目標

Kafka的效能

由於其廣泛整合到企業級基礎設施中,監測Kafka在規模執行中的效能成為一個日益重要的問題。監測端到端效能,要求跟蹤所有指標,包括Broker、消費者和生產者。除此之外還要監測ZooKeeper,Kafka用它來協調各個消費者。[7][8]目前有一些監測平台可以追蹤Kafka的效能,有開源的,如領英的Burrow;也有付費的,如Datadog。除了這些平台之外,收集Kafka的數據也可以使用工具來進行,這些工具一般需要Java,包括JConsole。[9]

Consumer Group

Kafka檔案格式

00000000000000000000.index 00000000000000000000.log 00000000000000000000.timeindex 00000000000000782248.snapshot leader-epoch-checkpoint

使用Kafka的企業

下面的列表是曾經或正在使用Kafka的知名企業:

參見

參考資料

外部連結

Wikiwand in your browser!

Seamless Wikipedia browsing. On steroids.

Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.

Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.