国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Kafka必須掌握的核心技術(shù):為什么吞吐量大、速度快?

這篇具有很好參考價(jià)值的文章主要介紹了Kafka必須掌握的核心技術(shù):為什么吞吐量大、速度快?。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

如果不刪除硬盤肯定會(huì)被撐滿,所以Kakfa提供了兩種策略來(lái)刪除數(shù)據(jù)。一是基于時(shí)間,二是基于partition文件大小。具體配置可以參看它的配置文檔。

二、Page Cache

為了優(yōu)化讀寫(xiě)性能,Kafka利用了操作系統(tǒng)本身的Page Cache,就是利用操作系統(tǒng)自身的內(nèi)存而不是JVM空間內(nèi)存。這樣做的好處有:

1避免Object消耗:如果是使用 Java 堆,Java對(duì)象的內(nèi)存消耗比較大,通常是所存儲(chǔ)數(shù)據(jù)的兩倍甚至更多。

2避免GC問(wèn)題:隨著JVM中數(shù)據(jù)不斷增多,垃圾回收將會(huì)變得復(fù)雜與緩慢,使用系統(tǒng)緩存就不會(huì)存在GC問(wèn)題

相比于使用JVM或in-memory cache等數(shù)據(jù)結(jié)構(gòu),利用操作系統(tǒng)的Page Cache更加簡(jiǎn)單可靠。首先,操作系統(tǒng)層面的緩存利用率會(huì)更高,因?yàn)榇鎯?chǔ)的都是緊湊的字節(jié)結(jié)構(gòu)而不是獨(dú)立的對(duì)象。其次,操作系統(tǒng)本身也對(duì)于Page Cache做了大量?jī)?yōu)化,提供了 write-behind、read-ahead以及flush等多種機(jī)制。再者,即使服務(wù)進(jìn)程重啟,系統(tǒng)緩存依然不會(huì)消失,避免了in-process cache重建緩存的過(guò)程。

通過(guò)操作系統(tǒng)的Page Cache,Kafka的讀寫(xiě)操作基本上是基于內(nèi)存的,讀寫(xiě)速度得到了極大的提升。

三、零拷貝

linux操作系統(tǒng) “零拷貝” 機(jī)制使用了sendfile方法, 允許操作系統(tǒng)將數(shù)據(jù)從Page Cache 直接發(fā)送到網(wǎng)絡(luò),只需要最后一步的copy操作將數(shù)據(jù)復(fù)制到 NIC 緩沖區(qū), 這樣避免重新復(fù)制數(shù)據(jù) 。示意圖如下:

Kafka必須掌握的核心技術(shù):為什么吞吐量大、速度快?,2024年程序員學(xué)習(xí),kafka,分布式

通過(guò)這種 “零拷貝” 的機(jī)制,Page Cache 結(jié)合 sendfile 方法,Kafka消費(fèi)端的性能也大幅提升。這也是為什么有時(shí)候消費(fèi)端在不斷消費(fèi)數(shù)據(jù)時(shí),我們并沒(méi)有看到磁盤io比較高,此刻正是操作系統(tǒng)緩存在提供數(shù)據(jù)。

當(dāng)Kafka客戶端從服務(wù)器讀取數(shù)據(jù)時(shí),如果不使用零拷貝技術(shù),那么大致需要經(jīng)歷這樣的一個(gè)過(guò)程:

1.操作系統(tǒng)將數(shù)據(jù)從磁盤上讀入到內(nèi)核空間的讀緩沖區(qū)中。

2.應(yīng)用程序(也就是Kafka)從內(nèi)核空間的讀緩沖區(qū)將數(shù)據(jù)拷貝到用戶空間的緩沖區(qū)中。

3.應(yīng)用程序?qū)?shù)據(jù)從用戶空間的緩沖區(qū)再寫(xiě)回到內(nèi)核空間的socket緩沖區(qū)中。

4.操作系統(tǒng)將socket緩沖區(qū)中的數(shù)據(jù)拷貝到NIC緩沖區(qū)中,然后通過(guò)網(wǎng)絡(luò)發(fā)送給客戶端。

Kafka必須掌握的核心技術(shù):為什么吞吐量大、速度快?,2024年程序員學(xué)習(xí),kafka,分布式

no zero cop

從圖中可以看到,數(shù)據(jù)在內(nèi)核空間和用戶空間之間穿梭了兩次,那么能否避免這個(gè)多余的過(guò)程呢?當(dāng)然可以,Kafka使用了零拷貝技術(shù),也就是直接將數(shù)據(jù)從內(nèi)核空間的讀緩沖區(qū)直接拷貝到內(nèi)核空間的socket緩沖區(qū),然后再寫(xiě)入到NIC緩沖區(qū),避免了在內(nèi)核空間和用戶空間之間穿梭。

Kafka必須掌握的核心技術(shù):為什么吞吐量大、速度快?,2024年程序員學(xué)習(xí),kafka,分布式

zero copy

可見(jiàn),這里的零拷貝并非指一次拷貝都沒(méi)有,而是避免了在內(nèi)核空間和用戶空間之間的拷貝。如果真是一次拷貝都沒(méi)有,那么數(shù)據(jù)發(fā)給客戶端就沒(méi)了不是?不過(guò),光是省下了這一步就可以帶來(lái)性能上的極大提升。

四、分區(qū)分段+索引

Kafka的message是按topic分類存儲(chǔ)的,topic中的數(shù)據(jù)又是按照一個(gè)一個(gè)的partition即分區(qū)存儲(chǔ)到不同broker節(jié)點(diǎn)。每個(gè)partition對(duì)應(yīng)了操作系統(tǒng)上的一個(gè)文件夾,partition實(shí)際上又是按照segment分段存儲(chǔ)的。這也非常符合分布式系統(tǒng)分區(qū)分桶的設(shè)計(jì)思想。

通過(guò)這種分區(qū)分段的設(shè)計(jì),Kafka的message消息實(shí)際上是分布式存儲(chǔ)在一個(gè)一個(gè)小的segment中的,每次文件操作也是直接操作的segment。為了進(jìn)一步的查詢優(yōu)化,Kafka又默認(rèn)為分段后的數(shù)據(jù)文件建立了索引文件,就是文件系統(tǒng)上的.index文件。這種分區(qū)分段+索引的設(shè)計(jì),不僅提升了數(shù)據(jù)讀取的效率,同時(shí)也提高了數(shù)據(jù)操作的并行度。

五、批量讀寫(xiě)

Kafka數(shù)據(jù)讀寫(xiě)也是批量的而不是單條的。

除了利用底層的技術(shù)外,Kafka還在應(yīng)用程序?qū)用嫣峁┝艘恍┦侄蝸?lái)提升性能。最明顯的就是使用批次。在向Kafka寫(xiě)入數(shù)據(jù)時(shí),可以啟用批次寫(xiě)入,這樣可以避免在網(wǎng)絡(luò)上頻繁傳輸單個(gè)消息帶來(lái)的延遲和帶寬開(kāi)銷。假設(shè)網(wǎng)絡(luò)帶寬為10MB/S,一次性傳輸10MB的消息比傳輸1KB的消息10000萬(wàn)次顯然要快得多。

六、批量壓縮

在很多情況下,系統(tǒng)的瓶頸不是CPU或磁盤,而是網(wǎng)絡(luò)IO,對(duì)于需要在廣域網(wǎng)上的數(shù)據(jù)中心之間發(fā)送消息的數(shù)據(jù)流水線尤其如此。進(jìn)行數(shù)據(jù)壓縮會(huì)消耗少量的CPU資源,不過(guò)對(duì)于kafka而言,網(wǎng)絡(luò)IO更應(yīng)該需要考慮。

1>如果每個(gè)消息都?jí)嚎s,但是壓縮率相對(duì)很低,所以Kafka使用了批量壓縮,即將多個(gè)消息一起壓縮而不是單個(gè)消息壓縮

2>Kafka允許使用遞歸的消息集合,批量的消息可以通過(guò)壓縮的形式傳輸并且在日志中也可以保持壓縮格式,直到被消費(fèi)者解壓縮

自我介紹一下,小編13年上海交大畢業(yè),曾經(jīng)在小公司待過(guò),也去過(guò)華為、OPPO等大廠,18年進(jìn)入阿里一直到現(xiàn)在。

深知大多數(shù)Java工程師,想要提升技能,往往是自己摸索成長(zhǎng)或者是報(bào)班學(xué)習(xí),但對(duì)于培訓(xùn)機(jī)構(gòu)動(dòng)則幾千的學(xué)費(fèi),著實(shí)壓力不小。自己不成體系的自學(xué)效果低效又漫長(zhǎng),而且極易碰到天花板技術(shù)停滯不前!

因此收集整理了一份《2024年Java開(kāi)發(fā)全套學(xué)習(xí)資料》,初衷也很簡(jiǎn)單,就是希望能夠幫助到想自學(xué)提升又不知道該從何學(xué)起的朋友,同時(shí)減輕大家的負(fù)擔(dān)。
Kafka必須掌握的核心技術(shù):為什么吞吐量大、速度快?,2024年程序員學(xué)習(xí),kafka,分布式
Kafka必須掌握的核心技術(shù):為什么吞吐量大、速度快?,2024年程序員學(xué)習(xí),kafka,分布式
Kafka必須掌握的核心技術(shù):為什么吞吐量大、速度快?,2024年程序員學(xué)習(xí),kafka,分布式
Kafka必須掌握的核心技術(shù):為什么吞吐量大、速度快?,2024年程序員學(xué)習(xí),kafka,分布式
Kafka必須掌握的核心技術(shù):為什么吞吐量大、速度快?,2024年程序員學(xué)習(xí),kafka,分布式
Kafka必須掌握的核心技術(shù):為什么吞吐量大、速度快?,2024年程序員學(xué)習(xí),kafka,分布式

既有適合小白學(xué)習(xí)的零基礎(chǔ)資料,也有適合3年以上經(jīng)驗(yàn)的小伙伴深入學(xué)習(xí)提升的進(jìn)階課程,基本涵蓋了95%以上Java開(kāi)發(fā)知識(shí)點(diǎn),真正體系化!

由于文件比較大,這里只是將部分目錄大綱截圖出來(lái),每個(gè)節(jié)點(diǎn)里面都包含大廠面經(jīng)、學(xué)習(xí)筆記、源碼講義、實(shí)戰(zhàn)項(xiàng)目、講解視頻,并且后續(xù)會(huì)持續(xù)更新

如果你覺(jué)得這些內(nèi)容對(duì)你有幫助,可以添加V獲?。簐ip1024b (備注Java)
Kafka必須掌握的核心技術(shù):為什么吞吐量大、速度快?,2024年程序員學(xué)習(xí),kafka,分布式

面試準(zhǔn)備+復(fù)習(xí)分享:

為了應(yīng)付面試也刷了很多的面試題與資料,現(xiàn)在就分享給有需要的讀者朋友,資料我只截取出來(lái)一部分哦

Kafka必須掌握的核心技術(shù):為什么吞吐量大、速度快?,2024年程序員學(xué)習(xí),kafka,分布式

了應(yīng)付面試也刷了很多的面試題與資料,現(xiàn)在就分享給有需要的讀者朋友,資料我只截取出來(lái)一部分哦

[外鏈圖片轉(zhuǎn)存中…(img-P8vy2d4B-1712095303494)]文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-844721.html

到了這里,關(guān)于Kafka必須掌握的核心技術(shù):為什么吞吐量大、速度快?的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 說(shuō)一下什么是tcp的2MSL,為什么客戶端在 TIME-WAIT 狀態(tài)必須等待 2MSL 的時(shí)間?

    說(shuō)一下什么是tcp的2MSL,為什么客戶端在 TIME-WAIT 狀態(tài)必須等待 2MSL 的時(shí)間?

    1.1 MSL MSL:Maximum Segment Lifetime報(bào)文段最大生存時(shí)間,它是任何報(bào)文段被丟棄前在網(wǎng)絡(luò)內(nèi)的最長(zhǎng)時(shí)間 1.2為什么存在MSL TCP報(bào)文段以IP數(shù)據(jù)報(bào)在網(wǎng)絡(luò)內(nèi)傳輸,而IP數(shù)據(jù)報(bào)則有限制其生存時(shí)間的TTL字段,并且TTL的限制是基于跳數(shù) 1.3MSL大小定義 RFC文檔中規(guī)定為2分鐘,但是實(shí)際實(shí)現(xiàn)過(guò)程中

    2024年02月06日
    瀏覽(21)
  • 為什么我們需要API接口?API接口的核心又是什么?
  • kafka為什么快

    消息發(fā)送 1、批量發(fā)送: Kafka 通過(guò)將多個(gè)消息打包成一個(gè)批次,減少了網(wǎng)絡(luò)傳輸和磁盤寫(xiě)入的次數(shù),從而提高了消息的吞吐量和傳輸效率。 2、異步發(fā)送: 生產(chǎn)者可以異步發(fā)送消息,不必等待每個(gè)消息的確認(rèn),這大大提高了消息發(fā)送的效2.率 3、消息壓縮: 支持對(duì)消息進(jìn)行壓縮,

    2024年02月02日
    瀏覽(18)
  • Kafka 為什么那么快?

    Kafka 為什么那么快?

    有人說(shuō):他曾在一臺(tái)配置較好的機(jī)子上對(duì)?Kafka?進(jìn)行性能壓測(cè),壓測(cè)結(jié)果是?Kafka?單個(gè)節(jié)點(diǎn)的極限處理能力接近每秒?2000萬(wàn)?條消息,吞吐量達(dá)到每秒?600MB。 那 Kafka 為什么這么快?如何做到這個(gè)高的性能? 本篇文章主要從這 3 個(gè)角度來(lái)分析: 生產(chǎn)端 服務(wù)端? Broker 消費(fèi)端

    2024年02月12日
    瀏覽(35)
  • Kafka為什么這么快?

    Kafka 是一個(gè)基于發(fā)布-訂閱模式的消息系統(tǒng),它可以在多個(gè)生產(chǎn)者和消費(fèi)者之間傳遞大量的數(shù)據(jù)。Kafka 的一個(gè)顯著特點(diǎn)是它的高吞吐率,即每秒可以處理百萬(wàn)級(jí)別的消息。那么 Kafka 是如何實(shí)現(xiàn)這樣高得性能呢?本文將從七個(gè)方面來(lái)分析 Kafka 的速度優(yōu)勢(shì)。 零拷貝技術(shù) 僅可追加

    2024年02月11日
    瀏覽(26)
  • kafka為什么如此之快?

    kafka為什么如此之快?

    天下武功,唯快不破。同樣的,kafka在消息隊(duì)列領(lǐng)域,也是非??斓模@里的塊指的是kafka在單位時(shí)間搬運(yùn)的數(shù)據(jù)量大小,也就是吞吐量,下圖是搬運(yùn)網(wǎng)上的一個(gè)性能測(cè)試結(jié)果,在同步發(fā)送場(chǎng)景下,單機(jī)Kafka的吞吐量高達(dá)17.3w/s, 不愧是高吞吐量消息中間件的行業(yè)老大。 那究竟

    2024年02月06日
    瀏覽(23)
  • 機(jī)器學(xué)習(xí)強(qiáng)基計(jì)劃10-1:為什么需要集成學(xué)習(xí)?核心原理是什么?

    機(jī)器學(xué)習(xí)強(qiáng)基計(jì)劃聚焦深度和廣度,加深對(duì)機(jī)器學(xué)習(xí)模型的理解與應(yīng)用?!吧睢痹谠敿?xì)推導(dǎo)算法模型背后的數(shù)學(xué)原理;“廣”在分析多個(gè)機(jī)器學(xué)習(xí)模型:決策樹(shù)、支持向量機(jī)、貝葉斯與馬爾科夫決策、強(qiáng)化學(xué)習(xí)等。強(qiáng)基計(jì)劃實(shí)現(xiàn)從理論到實(shí)踐的全面覆蓋,由本人親自從底層編

    2024年02月06日
    瀏覽(22)
  • kafka為什么盡量使用手動(dòng)提交

    在 Kafka 中,消費(fèi)者可以使用手動(dòng)提交和自動(dòng)提交兩種方式來(lái)管理消費(fèi)偏移量(offset)。它們之間的區(qū)別如下: 1. 手動(dòng)提交 offset: ? ?- 消費(fèi)者通過(guò)調(diào)用 `commitSync()` 或 `commitAsync()` 方法手動(dòng)提交消費(fèi)偏移量。 ? ?- 手動(dòng)提交 offset 需要顯式地指定要提交的分區(qū)和偏移量。 ? ?

    2024年02月15日
    瀏覽(19)
  • 面試題:Kafka 為什么那么快?

    面試題:Kafka 為什么那么快?

    有人說(shuō):他曾在一臺(tái)配置較好的機(jī)子上對(duì) Kafka 進(jìn)行性能壓測(cè),壓測(cè)結(jié)果是 Kafka 單個(gè)節(jié)點(diǎn)的極限處理能力接近每秒 2000萬(wàn) 條消息,吞吐量達(dá)到每秒 600MB。 那 Kafka 為什么這么快?如何做到這個(gè)高的性能? 本篇文章主要從這 3 個(gè)角度來(lái)分析: 生產(chǎn)端 服務(wù)端 Broker 消費(fèi)端 先來(lái)看下

    2024年01月22日
    瀏覽(27)
  • 48 | DMA:為什么Kafka這么快?

    48 | DMA:為什么Kafka這么快?

    過(guò)去幾年里,整個(gè)計(jì)算機(jī)產(chǎn)業(yè)界,都在嘗試不停地提升 I/O 設(shè)備的速度。把 HDD 硬盤換成 SSD 硬盤,我們?nèi)匀挥X(jué)得不夠快;用 PCI Express 接口的 SSD 硬盤替代 SATA 接口的 SSD 硬盤,我們還是覺(jué)得不夠快,所以,現(xiàn)在就有了傲騰(Optane)這樣的技術(shù)。 但是,無(wú)論 I/O 速度如何提升,

    2024年02月21日
    瀏覽(16)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包