kafka原理和實踐(一)原理:10分鍾入門


系列目錄

kafka原理和實踐(一)原理:10分鍾入門

kafka原理和實踐(二)spring-kafka簡單實踐

kafka原理和實踐(三)spring-kafka生產者源碼

kafka原理和實踐(四)spring-kafka消費者源碼

kafka原理和實踐(五)spring-kafka配置詳解

kafka原理和實踐(六)總結升華

 

 

=========正文分割線===============

關於kafka原理網上文章很多,但能真正快速入門的幾乎沒有(要不就是原文翻譯官網...實在枯燥無味之極),本章盡量采用圖文的方式,提綱挈領的闡述原理。

一、kafka拓撲圖

大家都知道kafka是依賴zookeeper集群的,一般最少也要三台服務器來實現HA。拓撲圖如下,分三層:

1.Producers:消息生產者,push消息給Brokers.發送時根據不同topic選擇不同分區(在Broker上)。

2.Brokers:注冊在zookeeper節點上。

3.Consumers:消息消費者,從brokers上根據訂閱的topic選擇不同分區,poll數據,執行消費。

二、名詞解釋

1.producer:消息生產者,發布消息到 kafka 集群的終端或服務。

2.broker:kafka 集群中包含的服務器。

3.topic:每條發布到 kafka 集群的消息屬於的類別,即 kafka 是面向 topic 的。

4.partition:partition 是物理上的概念,每個 topic 包含一個或多個 partition。kafka 分配的單位是 partition。

5.consumer:從 kafka 集群中消費消息的終端或服務。

6.Consumer group:high-level consumer API 中,每個 consumer 都屬於一個 consumer group,每條消息只能被 consumer group 中的一個 Consumer 消費,但可以被多個 consumer group 消費。

7.replica:partition 的副本,保障 partition 的高可用。

8.leader:replica 中的一個角色, producer 和 consumer 只跟 leader 交互。

9.follower:replica 中的一個角色,從 leader 中復制數據。

10.controller:kafka 集群中的其中一個服務器,用來進行 leader election 以及 各種 failover。

11.zookeeper:kafka 通過 zookeeper 來存儲集群的 meta 信息。

三、生產模型

kafka生產者多線程異步發送模型如下圖,主要包含2個流程:1)數據批量存儲,批量發送2)Netty NIO 發送數據

大概看一下流程,理解個大概即可,具體見后續源碼分析章節。

 

四、消費模型

根據xml配置的不同啟動不同的容器(ConcurrentMessageListenerContainer/MessageListenerContainer),下圖為並發消息監聽器容器啟動流程,主要包含2個主流程:

1.從cluster拉取消息

2.消費消息

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM