Kafka 系列(一)—— Kafka 簡介

1、簡介

ApacheKafka 是一個分佈式的流處理平臺。它具備如下特色:git

  • 支持消息的發佈和訂閱,相似於 RabbtMQ、ActiveMQ 等消息隊列;
  • 支持數據實時處理;
  • 能保證消息的可靠性投遞;
  • 支持消息的持久化存儲,並經過多副本分佈式的存儲方案來保證消息的容錯;
  • 高吞吐率,單 Broker 能夠輕鬆處理數千個分區以及每秒百萬級的消息量。

2、基本概念

2.1 Messages And Batches

Kafka 的基本數據單元被稱爲 message(消息),爲減小網絡開銷,提升效率,多個消息會被放入同一批次 (Batch) 中後再寫入。github

2.2 Topics And Partitions

Kafka 的消息經過 Topics(主題) 進行分類,一個主題能夠被分爲若干個 Partitions(分區),一個分區就是一個提交日誌 (commit log)。消息以追加的方式寫入分區,而後以先入先出的順序讀取。Kafka 經過分區來實現數據的冗餘和伸縮性,分區能夠分佈在不一樣的服務器上,這意味着一個 Topic 能夠橫跨多個服務器,以提供比單個服務器更強大的性能。api

因爲一個 Topic 包含多個分區,所以沒法在整個 Topic 範圍內保證消息的順序性,但能夠保證消息在單個分區內的順序性。服務器

2.3 Producers And Consumers

1. 生產者

生產者負責建立消息。通常狀況下,生產者在把消息均衡地分佈到在主題的全部分區上,而並不關心消息會被寫到哪一個分區。若是咱們想要把消息寫到指定的分區,能夠經過自定義分區器來實現。網絡

2. 消費者

消費者是消費者羣組的一部分,消費者負責消費消息。消費者能夠訂閱一個或者多個主題,並按照消息生成的順序來讀取它們。消費者經過檢查消息的偏移量 (offset) 來區分讀取過的消息。偏移量是一個不斷遞增的數值,在建立消息時,Kafka 會把它添加到其中,在給定的分區裏,每一個消息的偏移量都是惟一的。消費者把每一個分區最後讀取的偏移量保存在 Zookeeper 或 Kafka 上,若是消費者關閉或者重啓,它還能夠從新獲取該偏移量,以保證讀取狀態不會丟失。分佈式

一個分區只能被同一個消費者羣組裏面的一個消費者讀取,但能夠被不一樣消費者羣組中所組成的多個消費者共同讀取。多個消費者羣組中消費者共同讀取同一個主題時,彼此之間互不影響。性能

2.4 Brokers And Clusters

一個獨立的 Kafka 服務器被稱爲 Broker。Broker 接收來自生產者的消息,爲消息設置偏移量,並提交消息到磁盤保存。Broker 爲消費者提供服務,對讀取分區的請求作出響應,返回已經提交到磁盤的消息。大數據

Broker 是集羣 (Cluster) 的組成部分。每個集羣都會選舉出一個 Broker 做爲集羣控制器 (Controller),集羣控制器負責管理工做,包括將分區分配給 Broker 和監控 Broker。日誌

在集羣中,一個分區 (Partition) 從屬一個 Broker,該 Broker 被稱爲分區的首領 (Leader)。一個分區能夠分配給多個 Brokers,這個時候會發生分區複製。這種複製機制爲分區提供了消息冗餘,若是有一個 Broker 失效,其餘 Broker 能夠接管領導權。隊列

參考資料

Neha Narkhede, Gwen Shapira ,Todd Palino(著) , 薛命燈 (譯) . Kafka 權威指南 . 人民郵電出版社 . 2017-12-26

更多大數據系列文章能夠參見 GitHub 開源項目大數據入門指南

相關文章
相關標籤/搜索