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

kafka為什么如此之快?

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

天下武功,唯快不破。同樣的,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è)老大。
kafka為什么如此之快?,Kafka,kafka,分布式
那究竟是什么原因讓kafka如此之快呢?這也是面試官非常喜歡問(wèn)的問(wèn)題。

四個(gè)原因
原因一:磁盤(pán)順序讀寫(xiě)
生產(chǎn)者發(fā)送數(shù)據(jù)到kafka集群中,最終會(huì)寫(xiě)入到磁盤(pán)中,會(huì)采用順序?qū)懭氲姆绞?。消費(fèi)者從kafka集群中獲取數(shù)據(jù)時(shí),也是采用順序讀的方式。

無(wú)論是機(jī)械磁盤(pán)還是固態(tài)硬盤(pán)SSD,順序讀寫(xiě)的速度都是遠(yuǎn)大于隨機(jī)讀寫(xiě)的。因?yàn)閷?duì)于機(jī)械磁盤(pán)順序讀寫(xiě)省去了磁頭頻繁尋址和旋轉(zhuǎn)盤(pán)片的開(kāi)銷(xiāo)。而固態(tài)硬盤(pán)就更加復(fù)雜,這里不展開(kāi)闡述。

下圖是網(wǎng)上關(guān)于讀寫(xiě)方式的性能比較。
kafka為什么如此之快?,Kafka,kafka,分布式

機(jī)械磁盤(pán)順序讀寫(xiě) 53M/s,隨讀寫(xiě) 316k/s
固態(tài)硬盤(pán)順序讀寫(xiě) 42M/s, 隨機(jī)讀寫(xiě) 1000k/s
因而,由于kafka一般使用機(jī)械磁盤(pán)存儲(chǔ)消息,因?yàn)闄C(jī)械磁盤(pán)的價(jià)格遠(yuǎn)小于固態(tài)硬盤(pán)SSD。

原因二:PageCache頁(yè)緩存技術(shù)
前面提到了kafka采用順序讀寫(xiě)寫(xiě)入到磁盤(pán)中,難道是直接kafka到磁盤(pán)嗎,實(shí)際上不是的,中間多了一道操作系統(tǒng)的PageCache頁(yè)緩存,可以理解為內(nèi)存。

kafka為什么如此之快?,Kafka,kafka,分布式
當(dāng)kafka有寫(xiě)操作時(shí),先將數(shù)據(jù)寫(xiě)入PageCache中,然后在定時(shí)方式順序?qū)懭氲酱疟P(pán)中。
當(dāng)讀操作發(fā)生時(shí),先從PageCache中查找,如果找不到,再去磁盤(pán)中讀取。
通過(guò)頁(yè)緩存技術(shù),更近一步的提高了讀寫(xiě)的性能。

原因三:零拷貝技術(shù)
kafka之所以快的另外一個(gè)原因是采用了零拷貝技術(shù)。

首先我們來(lái)看下從磁盤(pán)讀取數(shù)據(jù)到網(wǎng)卡場(chǎng)景下,傳統(tǒng)IO的整個(gè)過(guò)程,如下圖所示:
kafka為什么如此之快?,Kafka,kafka,分布式

傳統(tǒng)IO模型下,從磁盤(pán)讀取數(shù)據(jù),寫(xiě)到網(wǎng)卡設(shè)備中,經(jīng)歷了4次用戶態(tài)和內(nèi)核態(tài)之間的切換,以及4次數(shù)據(jù)的拷貝,包括CPU拷貝和DMA拷貝。這些操作都是十分損耗性能。

DMA, Direct Memory Access,
直接內(nèi)存訪問(wèn)是一些計(jì)算機(jī)總線架構(gòu)提供的功能,它能使數(shù)據(jù)從附加設(shè)備(如磁盤(pán)驅(qū)動(dòng)器)直接發(fā)送到計(jì)算機(jī)主板的內(nèi)存上。

那能否減少這樣的切換和拷貝呢? 答案是肯定的,不知道大家發(fā)下沒(méi)有,kafka的消息在應(yīng)用層做任何轉(zhuǎn)換,怎么存就怎么取,你看連序列化、反序列化都是在生產(chǎn)者和消費(fèi)者做的。所以kafka采用了sendfile的零拷貝技術(shù)。
kafka為什么如此之快?,Kafka,kafka,分布式

sendfile零拷貝技術(shù)在內(nèi)核態(tài)將數(shù)據(jù)從PageCache拷貝到了Socket緩沖區(qū),這樣就大大減少了不同形態(tài)的切換以及拷貝。

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

原因四:kafka分區(qū)架構(gòu)和批量操作
一方面kafka的集群架構(gòu)采用了多分區(qū)技術(shù),并行度高。另外一方面,kafka采用了批量操作。生產(chǎn)者發(fā)送的消息先發(fā)送到一個(gè)隊(duì)列,然后有sender線程批量發(fā)送給kafka集群。
kafka為什么如此之快?,Kafka,kafka,分布式

如何提高生產(chǎn)者的吞吐量?
kafka生產(chǎn)者提供的一些配置參數(shù)可以有助于提高生產(chǎn)者的吞吐量。

kafka為什么如此之快?,Kafka,kafka,分布式
如何提高消費(fèi)者的吞吐量?
如果是Kafka消費(fèi)能力不足,則可以考慮增加Topic的分區(qū)數(shù),并且同時(shí)提升消費(fèi)組的消費(fèi)者數(shù)量,消費(fèi)者數(shù) = 分區(qū)數(shù),并發(fā)度最高。
如果是下游的數(shù)據(jù)處理不及時(shí):提高每批次拉取的數(shù)量。批次拉取數(shù)據(jù)過(guò)少,使處理的數(shù)據(jù)小于生產(chǎn)的數(shù)據(jù),也會(huì)造成數(shù)據(jù)積壓。
fetch.max.bytes:默認(rèn) Default: 52428800(50 m)。消費(fèi)者獲取服務(wù)器端一批消息最大的字節(jié)數(shù)。如果服務(wù)器端一批次的數(shù)據(jù)大于該值(50m)仍然可以拉取回來(lái)這批數(shù)據(jù),因此,這不是一個(gè)絕、對(duì)最大值。一批次的大小受 message.max.bytes (broker config)or max.message.bytes (topic config)影響。
max.poll.records:一次 poll 拉取數(shù)據(jù)返回消息的最大條數(shù),默認(rèn)是 500 條
優(yōu)化消費(fèi)者代碼處理的邏輯。

總結(jié)

本文總結(jié)了Kafka為什么快的原因,4個(gè)關(guān)鍵字,磁盤(pán)順序讀寫(xiě),頁(yè)緩存技術(shù),零拷貝技術(shù),Kafka本身分區(qū)機(jī)制和批量操作。我們抓住這4個(gè)關(guān)鍵字,有點(diǎn)到面地和面試官娓娓道來(lái)。

Kafka 在性能上確實(shí)是一騎絕塵,但在消息選型過(guò)程中,我們不僅僅要參考其性能,還有從功能性上來(lái)考慮,例如 RocketMQ
提供了豐富的消息檢索功能、事務(wù)消息、消息消費(fèi)重試、定時(shí)消息等。

通常在大數(shù)據(jù)、流式處理場(chǎng)景基本選用 Kafka,業(yè)務(wù)處理相關(guān)選擇 RocketMQ更佳。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-738164.html

到了這里,關(guān)于kafka為什么如此之快?的文章就介紹完了。如果您還想了解更多內(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)文章

  • 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為什么盡量使用手動(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 硬盤(pán)換成 SSD 硬盤(pán),我們?nèi)匀挥X(jué)得不夠快;用 PCI Express 接口的 SSD 硬盤(pán)替代 SATA 接口的 SSD 硬盤(pán),我們還是覺(jué)得不夠快,所以,現(xiàn)在就有了傲騰(Optane)這樣的技術(shù)。 但是,無(wú)論 I/O 速度如何提升,

    2024年02月21日
    瀏覽(16)
  • kafka的堆內(nèi)存大小對(duì)kafka的影響以及為什么堆內(nèi)存大一些kafka會(huì)更穩(wěn)定

    堆內(nèi)存是Java虛擬機(jī)(JVM)用于存儲(chǔ)運(yùn)行時(shí)數(shù)據(jù)的一部分內(nèi)存。對(duì)于Kafka Broker,它是一個(gè)由Java編寫(xiě)的分布式消息系統(tǒng),因此Kafka Broker的性能和穩(wěn)定性會(huì)受到堆內(nèi)存大小的影響。 以下是堆內(nèi)存大小對(duì)Kafka的一些詳細(xì)影響: 存儲(chǔ)和緩存消息: Kafka Broker使用內(nèi)存來(lái)存儲(chǔ)消息,以支持

    2024年01月19日
    瀏覽(63)
  • 離線數(shù)倉(cāng)中,為什么用兩個(gè)flume,一個(gè)kafka

    實(shí)時(shí)數(shù)倉(cāng)中,為什么沒(méi)有零點(diǎn)漂移問(wèn)題? 因?yàn)閒link直接取的事件時(shí)間 用kafka是為了速度快,并且數(shù)據(jù)不丟,那為什么既用了kafkachannel,也用了kafka,而不只用kafkachannel呢? 因?yàn)樾枰鞣逄罟?離線數(shù)倉(cāng)中,為什么用兩個(gè)flume,一個(gè)kafka,直接用taildirsource,kafkachannel,hdfssink不行嗎?

    2024年02月14日
    瀏覽(19)
  • ZooKeeper 用的好好地,Kafka 為什么要拋棄 ZooKeeper?

    ZooKeeper 用的好好地,Kafka 為什么要拋棄 ZooKeeper?

    ZooKeeper 是一個(gè)開(kāi)源的分布式協(xié)調(diào)服務(wù)框架,你也可以認(rèn)為它是一個(gè)可以保證一致性的分布式(小量)存儲(chǔ)系統(tǒng)。特別適合存儲(chǔ)一些公共的配置信息、集群的一些元數(shù)據(jù)等等。 它有持久節(jié)點(diǎn)和臨時(shí)節(jié)點(diǎn),而臨時(shí)節(jié)點(diǎn)這個(gè)玩意再配合 Watcher 機(jī)制就很有用。 當(dāng)創(chuàng)建臨時(shí)節(jié)點(diǎn)的客戶端

    2024年02月06日
    瀏覽(14)
  • Kafka必須掌握的核心技術(shù):為什么吞吐量大、速度快?

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

    如果不刪除硬盤(pá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)存。這樣做

    2024年04月08日
    瀏覽(19)
  • 什么是 sudo,為什么它如此重要?

    什么是 sudo,為什么它如此重要?

    在當(dāng)今的技術(shù)世界中,Linux 操作系統(tǒng)廣泛應(yīng)用于各種環(huán)境,包括個(gè)人計(jì)算機(jī)、服務(wù)器和嵌入式設(shè)備。作為一種強(qiáng)大的開(kāi)源操作系統(tǒng),Linux 提供了豐富的安全功能,以保護(hù)系統(tǒng)和用戶的數(shù)據(jù)安全。在 Linux 安全領(lǐng)域中,sudo 是一項(xiàng)關(guān)鍵的安全工具,它在用戶權(quán)限管理和系統(tǒng)保護(hù)方

    2024年02月06日
    瀏覽(22)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包