Kafka 概述
Kafka 最初是由 LinkedIn 即領英公司基于 Scala 和 Java 語言開發(fā)的分布式消息發(fā)布—訂閱系統(tǒng),現(xiàn)已捐獻給 Apache 軟件基金會。Kafka 最被廣為人知的是作為一個消息隊列(MQ)系統(tǒng)存在,而事實上 Kafka 已然成為一個流行的分布式流處理平臺。其具有高吞吐、低延遲的特性,許多大數(shù)據(jù)處理系統(tǒng)比如 Storm、Spark、Flink 等都能很好地與之集成。按照 Wikipedia 上的說法,Kafka 的核心數(shù)據(jù)結構本質(zhì)上是一個“按照分布式事務日志架構的大規(guī)模發(fā)布/訂閱消息隊列”??偟膩碇v,Kafka 通常具有 3 重角色:
- 消息系統(tǒng):Kafka 和傳統(tǒng)的消息隊列比如 RabbitMQ、RocketMQ、ActiveMQ 類似,支持流量削鋒、服務解耦、異步通信等核心功能。
- 流處理平臺:Kafka 不僅能夠與大多數(shù)流式計算框架完美整合,并且自身也提供了一個完整的流式處理庫,即 Kafka Streaming。Kafka Streaming 提供了類似 Flink 中的窗口、聚合、變換、連接等功能。
- 存儲系統(tǒng):通常消息隊列會把消息持久化到磁盤,防止消息丟失,保證消息可靠性。Kafka 的消息持久化機制和多副本機制使其能夠作為通用數(shù)據(jù)存儲系統(tǒng)來使用。
一句話概括:Kafka 是一個分布式的基于發(fā)布/訂閱模式的消息隊列(Message Queue),在業(yè)界主要應用于大數(shù)據(jù)實時處理領域。
Kafka 體系結構
如圖所示,Kafka 的體系結構中通常包含多個 Producer(生產(chǎn)者)、多個 Consumer(消費者)、多個 Broker(Kafka 服務器)以及一個 ZooKeeper 集群。
在這里插入圖片描述
體系結構中幾個角色: