自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

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

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

Kafka架構設計

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

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

整體架構,如下圖所示:

圖片圖片

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

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

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

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

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

Kafka高并發(fā)關鍵技術

Kafka 之所以能夠實現(xiàn)高吞吐量、和低延遲的消息處理,其核心設計還有是磁盤順序寫(Sequential Disk Writes)。

圖片圖片

磁盤順序寫:指的是在磁盤上按照順序依次寫入數(shù)據(jù),而不是隨機地在不同位置寫入。

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

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

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

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

├── 00000000000000000000.log  // 活躍的日志段(順序寫入)
├── 00000000000000000000.index

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

零拷貝

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

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

如下圖所示:

圖片圖片

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

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

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

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

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

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

然后,應用程序可以像訪問內存一樣直接訪問文件內容;

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

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

所以,減少了數(shù)據(jù)在不同存儲區(qū)域之間的移動次數(shù),提高了數(shù)據(jù)傳輸?shù)耐掏铝?,也提升了并發(fā)性能。

責任編輯:武曉燕 來源: mikechen的互聯(lián)網架構
相關推薦

2025-01-12 13:06:45

2021-03-31 10:12:12

MongoDBQPS存儲

2025-02-20 08:24:41

2025-02-26 03:00:00

2025-02-28 00:03:22

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

2019-02-12 09:34:00

微博短視頻架構

2022-08-04 20:41:42

高并發(fā)流量SQL

2009-03-12 09:44:05

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

2017-01-09 16:06:19

2021-01-13 05:27:02

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

2024-11-08 13:36:09

2020-03-26 08:07:28

紅包架構請求

2011-08-23 17:12:22

MySQL支撐百萬級流

2023-04-26 07:40:34

MySQL索引類型存儲

2023-04-18 15:22:04

2019-03-06 09:36:12

Kafka緩存磁盤

2020-10-15 06:26:24

高并發(fā)場景冰河

2018-07-27 10:56:10

2017-03-20 16:13:31

微信紅包高并發(fā)紅包系統(tǒng)

2024-11-27 00:20:32

點贊
收藏

51CTO技術棧公眾號