欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報(bào)激活碼778899分享:分布式 圖解 Kafka 架構(gòu)

柚子快報(bào)激活碼778899分享:分布式 圖解 Kafka 架構(gòu)

http://yzkb.51969.com/

寫在前面

Kafka 是一個(gè)可橫向擴(kuò)展,高可靠的實(shí)時(shí)消息中間件,常用于服務(wù)解耦、流量削峰。 好像是 LinkedIn 團(tuán)隊(duì)開發(fā)的,后面捐贈(zèng)給apache基金會(huì)了。

kafka

總體架構(gòu)圖

Producer:生產(chǎn)者,消息的產(chǎn)生者,是消息的入口。Broker:Broker 是 kafka 一個(gè)實(shí)例,每個(gè)服務(wù)器上有一個(gè)或多個(gè) kafka 的實(shí)例,簡(jiǎn)單的理解就是一臺(tái) kafka 服務(wù)器,kafka cluster 表示集群的意思Topic:消息的主題,可以理解為消息隊(duì)列,kafka的數(shù)據(jù)就保存在topic。在每個(gè) broker 上都可以創(chuàng)建多個(gè) topic 。Partition:Topic的分區(qū),每個(gè) topic 可以有多個(gè)分區(qū),分區(qū)的作用是做負(fù)載,提高 kafka 的吞吐量。同一個(gè) topic 在不同的分區(qū)的數(shù)據(jù)是不重復(fù)的,partition 的表現(xiàn)形式就是一個(gè)一個(gè)的文件夾。Replication:每一個(gè)分區(qū)都有多個(gè)副本,副本的作用是做備胎,leader節(jié)點(diǎn)會(huì)將數(shù)據(jù)同步到follow從節(jié)點(diǎn)。當(dāng)leader故障的時(shí)候會(huì)選擇一個(gè)follower ,成為 leader,follower和leader絕對(duì)是在不同的機(jī)器,同一機(jī)器對(duì)同一個(gè)分區(qū)也只可能存放一個(gè)副本。

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

為什么同一個(gè) partition 的數(shù)據(jù)只能被消費(fèi)者組中的某一個(gè)消費(fèi)者消費(fèi)?

順序性:Kafka 保證了同一個(gè)分區(qū)內(nèi)的消息是有序的,如果允許多個(gè)消費(fèi)者并行消費(fèi)同一個(gè)分區(qū)的消息,那么消息的順序性將無法得到保證。當(dāng)然由于各個(gè)分區(qū)的不同,我們順序性還是不要靠kafka,在自己業(yè)務(wù)做判定。負(fù)載均衡:通過讓不同的消費(fèi)者組內(nèi)的消費(fèi)者分?jǐn)偛煌姆謪^(qū),Kafka 實(shí)現(xiàn)了負(fù)載均衡,確保每個(gè)消費(fèi)者都有機(jī)會(huì)消費(fèi)消息,同時(shí)避免了重復(fù)消費(fèi)。Offset 管理:每個(gè)消費(fèi)者在消費(fèi)時(shí)都會(huì)維護(hù)自己的 offset,如果多個(gè)消費(fèi)者同時(shí)消費(fèi)同一個(gè)分區(qū),那么 offset 的管理將變得復(fù)雜,可能會(huì)導(dǎo)致重復(fù)消費(fèi)或者消息丟失。

發(fā)送數(shù)據(jù)

kafka 會(huì)每次發(fā)送數(shù)據(jù)都是向 leader節(jié)點(diǎn)發(fā)送數(shù)據(jù),并順序?qū)懭氲酱疟P,然后 leader節(jié)點(diǎn)會(huì)將數(shù)據(jù)同步到各個(gè)從節(jié)點(diǎn)follower,即使主節(jié)點(diǎn)掛了,也不會(huì)影響服務(wù)的正常運(yùn)行。

producer 生產(chǎn)者獲取 leader 節(jié)點(diǎn),將消息發(fā)送給leader節(jié)點(diǎn)。leader節(jié)點(diǎn)將消息持久化到本地后,將數(shù)據(jù)同步到各個(gè)follower節(jié)點(diǎn)。leader節(jié)點(diǎn)收到各個(gè)follower節(jié)點(diǎn)的ack后,發(fā)送ack給producer

消費(fèi)數(shù)據(jù)

和生產(chǎn)者一樣,消費(fèi)者主動(dòng)到kafka集群中拉取消息時(shí),也是從leader節(jié)點(diǎn)去拉取數(shù)據(jù)。

獲取leader節(jié)點(diǎn)拉去offset為0的數(shù)據(jù)進(jìn)行消費(fèi)消費(fèi)成功后發(fā)送ack,offset將會(huì)移動(dòng)到下一位,待下次消費(fèi)定位數(shù)據(jù)

kafka 為什么會(huì)那么快?

一共有四個(gè)原因

磁盤順序讀寫PageCache 頁緩存技術(shù)零拷貝技術(shù)kafka 分區(qū)架構(gòu)

磁盤順序讀寫

生產(chǎn)者發(fā)送數(shù)據(jù)到 kafka 集群中,最終會(huì)寫入到磁盤中,會(huì)采用順序?qū)懭氲姆绞?。消費(fèi)者從 kafka 集群中獲取數(shù)據(jù)時(shí),也是采用順序讀的方式。無論是機(jī)械磁盤還是固態(tài)硬盤 SSD,順序讀寫的速度都是遠(yuǎn)大于隨機(jī)讀寫的。

機(jī)械磁盤順序讀寫省去了磁頭頻繁尋址和旋轉(zhuǎn)盤片的開銷固態(tài)硬盤SSD以Page為單位做讀寫,以Block為單位做垃圾回收。寫相同數(shù)據(jù)量的情況下,順序?qū)懼圃旄俚睦鳥lock,所以比隨機(jī)寫有更高的性能。

PageCache 頁緩存技術(shù)

當(dāng) kafka 有寫操作時(shí),先將數(shù)據(jù)寫入PageCache中,然后在順序?qū)懭氲酱疟P中。當(dāng)讀操作發(fā)生時(shí),先從PageCache中查找,如果找不到,再去磁盤中讀取。

零拷貝技術(shù)

一般性能的瓶頸都是網(wǎng)絡(luò)io、磁盤io。我們來看下從磁盤讀取數(shù)據(jù)到網(wǎng)卡場(chǎng)景下,傳統(tǒng) IO 的整個(gè)過程: DMA方式,Direct Memory Access,也稱為成組數(shù)據(jù)傳送方式,有時(shí)也稱為直接內(nèi)存操作。DMA方式在數(shù)據(jù)傳送過程中,沒有保存現(xiàn)場(chǎng)、恢復(fù)現(xiàn)場(chǎng)之類的工作。

傳統(tǒng) IO 模型下,從磁盤讀取數(shù)據(jù),寫到網(wǎng)卡設(shè)備中,經(jīng)歷了 4 次用戶態(tài)和內(nèi)核態(tài)之間的切換和數(shù)據(jù)的拷貝。紅色箭頭為數(shù)據(jù)拷貝。 那能不能讓拷貝次數(shù)發(fā)送的少一點(diǎn)呢?但是kafka 采用了 sendfile 的零拷貝技術(shù)

所謂的零拷貝技術(shù)不是指不發(fā)生拷貝,而是在用戶態(tài)沒有進(jìn)行拷貝。

kafka 分區(qū)架構(gòu)

分區(qū)架構(gòu):kafka 集群架構(gòu)采用了多分區(qū)技術(shù),并行度高。

參考

[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

柚子快報(bào)激活碼778899分享:分布式 圖解 Kafka 架構(gòu)

http://yzkb.51969.com/

好文閱讀

評(píng)論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。

轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://m.gantiao.com.cn/post/19149446.html

發(fā)布評(píng)論

您暫未設(shè)置收款碼

請(qǐng)?jiān)谥黝}配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問

文章目錄