圖解 Kafka 架構

寫在前面

Kafka 是一個可橫向擴展,高可靠的實時消息中間件,常用于服務解耦、流量削峰。
好像是 LinkedIn 團隊開發的,后面捐贈給apache基金會了。

在這里插入圖片描述

kafka

總體架構圖

在這里插入圖片描述

  • Producer:生產者,消息的產生者,是消息的入口。
  • Broker:Broker 是 kafka 一個實例,每個服務器上有一個或多個 kafka 的實例,簡單的理解就是一臺 kafka 服務器,kafka cluster 表示集群的意思
  • Topic:消息的主題,可以理解為消息隊列,kafka的數據就保存在topic。在每個 broker 上都可以創建多個 topic 。
  • Partition:Topic的分區,每個 topic 可以有多個分區,分區的作用是做負載,提高 kafka 的吞吐量。同一個 topic 在不同的分區的數據是不重復的,partition 的表現形式就是一個一個的文件夾。
  • Replication:每一個分區都有多個副本,副本的作用是做備胎,leader節點會將數據同步到follow從節點。當leader故障的時候會選擇一個follower ,成為 leader,follower和leader絕對是在不同的機器,同一機器對同一個分區也只可能存放一個副本。

在這里插入圖片描述

  • Consumer:消費者,消息的消費方,是消息的出口。
  • Consumer Group:可以將多個消費組構成一個消費者組,同一個 partition 的數據只能被消費者組中的某一個消費者消費。同一個消費者組的消費者可以消費同一個topic的不同分區的數據,這也是為了提高kafka的吞吐量。
  • Zookeeper:kafka 2.8 版本之前是依賴 zookeeper 來保存集群的的元信息,來保證系統的可用性。
  • Raft:kafka 2.8 版本之后就根據 raft 來保證系統的可用性。

為什么同一個 partition 的數據只能被消費者組中的某一個消費者消費?
在這里插入圖片描述

  1. 順序性:Kafka 保證了同一個分區內的消息是有序的,如果允許多個消費者并行消費同一個分區的消息,那么消息的順序性將無法得到保證。當然由于各個分區的不同,我們順序性還是不要靠kafka,在自己業務做判定。
  2. 負載均衡:通過讓不同的消費者組內的消費者分攤不同的分區,Kafka 實現了負載均衡,確保每個消費者都有機會消費消息,同時避免了重復消費
  3. Offset 管理:每個消費者在消費時都會維護自己的 offset,如果多個消費者同時消費同一個分區,那么 offset 的管理將變得復雜,可能會導致重復消費或者消息丟失。

發送數據

kafka 會每次發送數據都是向 leader節點發送數據,并順序寫入到磁盤,然后 leader節點會將數據同步到各個從節點follower,即使主節點掛了,也不會影響服務的正常運行。
在這里插入圖片描述

  1. producer 生產者獲取 leader 節點,將消息發送給leader節點。
  2. leader節點將消息持久化到本地后,將數據同步到各個follower節點。
  3. leader節點收到各個follower節點的ack后,發送ack給producer

消費數據

和生產者一樣,消費者主動到kafka集群中拉取消息時,也是從leader節點去拉取數據

在這里插入圖片描述

  1. 獲取leader節點
  2. 拉去offset為0的數據進行消費
  3. 消費成功后發送ack,offset將會移動到下一位,待下次消費定位數據

kafka 為什么會那么快?

一共有四個原因

  1. 磁盤順序讀寫
  2. PageCache 頁緩存技術
  3. 零拷貝技術
  4. kafka 分區架構

磁盤順序讀寫

生產者發送數據到 kafka 集群中,最終會寫入到磁盤中,會采用順序寫入的方式。消費者從 kafka 集群中獲取數據時,也是采用順序讀的方式。無論是機械磁盤還是固態硬盤 SSD,順序讀寫的速度都是遠大于隨機讀寫的。

  • 機械磁盤順序讀寫省去了磁頭頻繁尋址和旋轉盤片的開銷
  • 固態硬盤SSD以Page為單位做讀寫,以Block為單位做垃圾回收。寫相同數據量的情況下,順序寫制造更少的垃圾Block,所以比隨機寫有更高的性能。

PageCache 頁緩存技術

  • 當 kafka 有寫操作時,先將數據寫入PageCache中,然后在順序寫入到磁盤中。
  • 當讀操作發生時,先從PageCache中查找,如果找不到,再去磁盤中讀取。

在這里插入圖片描述

零拷貝技術

一般性能的瓶頸都是網絡io、磁盤io。我們來看下從磁盤讀取數據到網卡場景下,傳統 IO 的整個過程:
在這里插入圖片描述
DMA方式,Direct Memory Access,也稱為成組數據傳送方式,有時也稱為直接內存操作。DMA方式在數據傳送過程中,沒有保存現場、恢復現場之類的工作。

傳統 IO 模型下,從磁盤讀取數據,寫到網卡設備中,經歷了 4 次用戶態和內核態之間的切換和數據的拷貝。紅色箭頭為數據拷貝
那能不能讓拷貝次數發送的少一點呢?但是kafka 采用了 sendfile 的零拷貝技術
在這里插入圖片描述

所謂的零拷貝技術不是指不發生拷貝,而是在用戶態沒有進行拷貝。

kafka 分區架構

  • 分區架構:kafka 集群架構采用了多分區技術,并行度高。

在這里插入圖片描述

參考

[1] https://strikefreedom.top/archives/why-kafka-is-so-fast
[2] https://cloud.tencent.com/developer/article/2185290
[3] https://serverfault.com/questions/843628/why-do-sequential-writes-have-better-performance-than-random-writes-on-ssds
[4] https://xie.infoq.cn/article/51b6764c48ff70988e124a868

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/39726.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/39726.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/39726.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【高考志愿】測繪科學與技術

目錄 一、專業介紹 1.1 專業概述 1.2 專業方向 1.3 課程內容 二、就業前景 三、報考注意事項 四、測繪科學與技術專業排名 五、職業規劃與未來發展 高考志愿選擇測繪科學與技術專業,對于許多有志于空間信息技術領域發展的學生來說,無疑是一個極具…

怎么把錄音轉文字?推薦幾個簡單易操作的方法

在小暑這個節氣里,炎熱的天氣讓人分外渴望效率up!Up!Up! 對于那些在會議或課堂中急需記錄信息的朋友們,手寫筆記的速度往往難以跟上講話的節奏。此時,電腦錄音轉文字軟件就像一陣及時雨,讓記錄…

PHP pwn 學習 (1)

文章目錄 A. PHP extensions for C1. 運行環境與工作目錄初始化2. 構建與加載3. 關鍵結構定義PHP_FUNCTIONINTERNAL_FUNCTION_PARAMETERSzend_execute_data等ZEND_PARSE_PARAMETERS_START等zend_parse_arg_stringzend_module_entryzend_function_entry等PHP類相關 原文鏈接&…

Python 作業題1 (猜數字)

題目 你要根據線索猜出一個三位數。游戲會根據你的猜測給出以下提示之一:如果你猜對一位數字但數字位置不對,則會提示“Pico”;如果你同時猜對了一位數字及其位置,則會提示“Fermi”;如果你猜測的數字及其位置都不對&…

Flower花所:穩定運營的數字貨幣交易所

Flower花所是一家穩定運營的數字貨幣交易所,致力于為全球用戶提供安全、高效的數字資產交易服務。作為一家長期穩定運營的數字貨幣交易平臺,Flower花所以其可靠的技術基礎和優質的客戶服務而聞名。 平臺穩定性與可靠性: 持續運營:…

Vue前端練習

此練習項目只涉及前端,主要是vue和ElementUI框架的使用。(ElementUI官網:Element - The worlds most popular Vue UI framework) 一、環境準備 安裝idea 安裝Node.js 一鍵式安裝(不需要做任何配置) npm -v(也可用nod…

mysql-sql-第十五周

學習目標: sql 學習內容: 41.查詢沒有學全所有課程的同學的信息 select *from students where students.stunm not in (select score.stunm from score group by score.stunm having count(score.counm) (select count(counm) from course)) 42.查詢…

數據結構_線性表

線性表的定義和特點 線性表是具有相同特性的數據元素的一個有限序列 :線性起點/起始節點 :的直接前驅 :的直接后繼 :線性終點/終端節點 n:元素總個數,表長 下標:是元素的序號,表示元素在表中的位置 n0時稱為空表 線性表 由n(n>0)個數據元素(結點),組成的有限序列 將…

安卓模擬器如何修改ip地址

最近很多老鐵玩游戲的,想多開模擬器一個窗口一個IP,若模擬器窗口開多了,IP一樣會受到限制,那么怎么更換自己電腦手機模擬器IP地址呢,今天就教大家一個修改模擬器IP地址的方法!廢話不多說,直接上…

Matlab 中 fftshift 與 ifftshift

文章目錄 【 1. fftshift、ifftshift 的區別】【 2. fftshift(fft(A)) 作圖 】【 3. fftshift(fft(A)) 還原到 A 】Matlab 直接對信號進行 FFT 的結果中,前半部分是正頻,后半部分是負頻,為了更直觀的表示,需要將 負頻 部分移到 前面。【 1. fftshift、ifftshift 的區別】 M…

alibaba EasyExcel 簡單導出數據到Excel

導入依賴 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>4.0.1</version> </dependency> 1、alibaba.excel.EasyExcel導出工具類 import com.alibaba.excel.EasyExcel; import …

探索哈希函數:數據完整性的守護者

引言 銀行在處理數以百萬計的交易時&#xff0c;如何確保每一筆交易都沒有出錯&#xff1f;快遞公司如何跟蹤成千上萬的包裹&#xff0c;確保每個包裹在運輸過程中沒有丟失或被替換&#xff1f;醫院和診所為龐大的患者提供有效的醫療保健服務&#xff0c;如何確保每個患者的醫療…

假陽性和假陰性、真陽性和真陰性

在深度學習的分類問題中&#xff0c;真陽性、真陰性、假陽性和假陰性是評估模型性能的重要指標。它們的定義和計算如下&#xff1a; 真陽性&#xff08;True Positive, TP&#xff09;&#xff1a; 定義&#xff1a;模型預測為正類&#xff08;陽性&#xff09;&#xff0c;且實…

電梯修理升級,安裝【電梯節能】能量回饋設備

電梯修理升級&#xff0c;安裝【電梯節能】能量回饋設備 1、節能率評估 15%—45% 2、降低機房環境溫度&#xff0c;改善電梯控制系統的運行環境&#xff1b; 3、延長電梯使用壽命&#xff1b; 4、機房可以不需要使用空調等散熱設備的耗電&#xff0c;間接節省電能。 歡迎私詢哦…

智能數字人系統的主要功能

智能數字人系統或虛擬數字人系統&#xff0c;是指利用人工智能技術構建的虛擬人物形象&#xff0c;能夠與人進行自然交互的系統。數字人系統的主要功能包括以下幾個方面。北京木奇移動技術有限公司&#xff0c;專業的軟件外包開發公司&#xff0c;歡迎交流合作。 1. 語言理解與…

昇思25天學習打卡營第2天|初學入門

昇思25天學習打卡營第2天 文章目錄 昇思25天學習打卡營第2天網絡構建定義模型類模型層nn.Flattennn.Densenn.ReLUnn.SequentialCellnn.Softmax 模型參數 函數式自動微分函數與計算圖微分函數與梯度計算Stop GradientAuxiliary data神經網絡梯度計算 問題集合打卡記錄 網絡構建 …

橋接模式與適配器模式

一、共性和區別 橋接設計模式和適配器設計模式的共同點和明顯&#xff0c;它們都是使兩種不同的類配合工。 二者的區別在于&#xff0c;適配器模式是將已有的兩個不同接口接口組合到一起&#xff0c;使得適配器同時擁有兩個不同接口的功能&#xff0c;其目的是使兩個不兼…

Spring Boot與微服務治理框架的集成方法

Spring Boot與微服務治理框架的集成方法 大家好&#xff0c;我是免費搭建查券返利機器人省錢賺傭金就用微賺淘客系統3.0的小編&#xff0c;也是冬天不穿秋褲&#xff0c;天冷也要風度的程序猿&#xff01; 在當今快速發展的軟件開發領域&#xff0c;微服務架構因其靈活性、可…

華為DCN之:SDN和NFV

1. SDN概述 1.1 SDN的起源 SDN&#xff08;Software Defined Network&#xff09;即軟件定義網絡。是由斯坦福大學Clean Slate研究組提出的一種新型網絡創新架構。其核心理念通過將網絡設備控制平面與數據平面分離&#xff0c;從而實現了網絡控制平面的集中控制&#xff0c;為…

移動網絡捕獲在數字化轉型中的重要性

數字化轉型重新定義了企業運營和與客戶互動的方式。它為組織提供價值的方式帶來了根本性的轉變&#xff0c;使流程更易于訪問、更高效、更具協作性和更安全。然而&#xff0c;跟上不斷發展的數字環境可能是一項挑戰&#xff0c;而未能接受數字化轉型的企業則面臨被淘汰的風險。…