偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

高并發(fā)場景下,Kafka如何扛住百萬級請求?

開發(fā) 架構(gòu)
Kafka 通過分布式架構(gòu)、分區(qū)機制、以及集群管理,實現(xiàn)了高并發(fā)性能。Kafka 架構(gòu),由多個 Broker(服務(wù)器節(jié)點)組成,每個 Broker 負責(zé)存儲、和管理部分消息。

Kafka是大型架構(gòu)的必備中間件,也是大廠必備技能,下面我就重點詳解高并發(fā)場景下,Kafka實現(xiàn)高并發(fā)的關(guān)鍵技術(shù)@mikechen

Kafka架構(gòu)設(shè)計

Kafka 通過分布式架構(gòu)、分區(qū)機制、以及集群管理,實現(xiàn)了高并發(fā)性能。

Kafka 架構(gòu),由多個 Broker(服務(wù)器節(jié)點)組成,每個 Broker 負責(zé)存儲、和管理部分消息。

整體架構(gòu),如下圖所示:

圖片圖片

其中,Topic 分區(qū)(Partitioning) 是 Kafka 分布式設(shè)計的核心,它將消息分散存儲在不同節(jié)點上。

Kafka 支持水平擴展,可以通過增加 Broker 節(jié)點,來提升系統(tǒng)的容量和性能。

新增的 Broker 會自動參、與分區(qū)的存儲和管理,分擔(dān)原有節(jié)點的壓力。

例如:一個擁有 10 個分區(qū)的主題,理論上可以支持 10 倍于單分區(qū)主題的并發(fā)讀寫操作。

所以,分區(qū)使得 Kafka 天然支持并行處理,大大提升了系統(tǒng)的并發(fā)能力。

Kafka高并發(fā)關(guān)鍵技術(shù)

Kafka 之所以能夠?qū)崿F(xiàn)高吞吐量、和低延遲的消息處理,其核心設(shè)計還有是磁盤順序?qū)懀⊿equential Disk Writes)。

圖片圖片

磁盤順序?qū)懀褐傅氖窃诖疟P上按照順序依次寫入數(shù)據(jù),而不是隨機地在不同位置寫入。

傳統(tǒng)的機械硬盤由盤片、磁頭臂、磁頭等部件組成,數(shù)據(jù)存儲在盤片的不同磁道和扇區(qū)上。

當(dāng)進行隨機寫操作時,磁頭需要頻繁地移動到不同的位置,這個過程涉及尋道和旋轉(zhuǎn)延遲,會極大地影響寫入性能。

而順序?qū)憰r,磁頭可以沿著一個方向連續(xù)地寫入數(shù)據(jù),減少了尋道和旋轉(zhuǎn)延遲,從而提高了寫入效率。

Kafka正是利用了這一點,極大的提升了數(shù)據(jù)寫入性能。

├── 00000000000000000000.log  // 活躍的日志段(順序?qū)懭耄?├── 00000000000000000000.index

Kafka 通過將消息,順序追加(Append)到日志文件末尾,充分利用了這一特性,從而,避免了隨機尋址的開銷。

零拷貝

零拷貝(Zero-Copy)是一種計算機技術(shù),其核心目標(biāo)是減少、或消除數(shù)據(jù),在傳輸過程中的拷貝。

在傳統(tǒng)的數(shù)據(jù)傳輸過程中,數(shù)據(jù)通常需要在用戶空間(User Space)、和內(nèi)核空間(Kernel Space)之間多次拷貝。

如下圖所示:

圖片圖片

首先,數(shù)據(jù)從磁盤讀取到內(nèi)核空間的緩沖區(qū)。

其次,內(nèi)核空間的緩沖區(qū),將數(shù)據(jù)復(fù)制到用戶空間的緩沖區(qū)。

然后,用戶空間的緩沖區(qū),再將數(shù)據(jù)寫入到網(wǎng)絡(luò)接口、或其他輸出設(shè)備。

這種多步復(fù)制,會消耗大量 CPU 資源,并增加延遲。

而零拷貝技術(shù),通過優(yōu)化數(shù)據(jù)傳輸路徑,減少數(shù)據(jù)在用戶空間和內(nèi)核空間之間的多次拷貝,

比如:通過Linux的mmap() 系統(tǒng)調(diào)用,可以將文件或設(shè)備的內(nèi)存空間,映射到用戶空間的地址空間。

然后,應(yīng)用程序可以像訪問內(nèi)存一樣直接訪問文件內(nèi)容;

接著,使用 write() 系統(tǒng)調(diào)用將數(shù)據(jù)從用戶空間的緩沖區(qū)發(fā)送到網(wǎng)絡(luò)套接字。

在這個過程中,避免了從內(nèi)核緩沖區(qū)、到用戶空間緩沖區(qū)、再到內(nèi)核套接字緩沖區(qū)的兩次拷貝。

所以,減少了數(shù)據(jù)在不同存儲區(qū)域之間的移動次數(shù),提高了數(shù)據(jù)傳輸?shù)耐掏铝浚蔡嵘瞬l(fā)性能。

責(zé)任編輯:武曉燕 來源: mikechen的互聯(lián)網(wǎng)架構(gòu)
相關(guān)推薦

2025-05-26 02:11:00

2025-06-05 01:22:00

SpringGateway高并發(fā)

2025-01-12 13:06:45

2021-03-31 10:12:12

MongoDBQPS存儲

2025-02-20 08:24:41

2025-02-28 00:03:22

高并發(fā)TPS系統(tǒng)

2025-02-26 03:00:00

2025-07-01 07:21:15

2019-02-12 09:34:00

微博短視頻架構(gòu)

2022-08-04 20:41:42

高并發(fā)流量SQL

2009-03-12 09:44:05

高并發(fā)開源數(shù)據(jù)庫MySQL

2017-01-09 16:06:19

2023-04-26 07:40:34

MySQL索引類型存儲

2021-01-13 05:27:02

服務(wù)器性能高并發(fā)

2011-08-23 17:12:22

MySQL支撐百萬級流

2024-11-08 13:36:09

2025-06-12 02:15:00

Kafka消費者高并發(fā)

2020-03-26 08:07:28

紅包架構(gòu)請求

2019-03-06 09:36:12

Kafka緩存磁盤

2023-04-18 15:22:04

點贊
收藏

51CTO技術(shù)棧公眾號