成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Kafka是如何實(shí)現(xiàn)高吞吐率的

RyanQ / 2033人閱讀

摘要:是分布式消息系統(tǒng),需要處理海量的消息,的設(shè)計(jì)是把所有的消息都寫入速度低容量大的硬盤,以此來換取更強(qiáng)的存儲(chǔ)能力,但實(shí)際上,使用硬盤并沒有帶來過多的性能損失主要使用了以下幾個(gè)方式實(shí)現(xiàn)了超高的吞吐率順序讀寫的消息是不斷追加到文件中的,這個(gè)特性使可

Kafka是分布式消息系統(tǒng),需要處理海量的消息,Kafka的設(shè)計(jì)是把所有的消息都寫入速度低容量大的硬盤,以此來換取更強(qiáng)的存儲(chǔ)能力,但實(shí)際上,使用硬盤并沒有帶來過多的性能損失

kafka主要使用了以下幾個(gè)方式實(shí)現(xiàn)了超高的吞吐率

順序讀寫

kafka的消息是不斷追加到文件中的,這個(gè)特性使kafka可以充分利用磁盤的順序讀寫性能

順序讀寫不需要硬盤磁頭的尋道時(shí)間,只需很少的扇區(qū)旋轉(zhuǎn)時(shí)間,所以速度遠(yuǎn)快于隨機(jī)讀寫

Kafka官方給出了測試數(shù)據(jù)(Raid-5,7200rpm):

順序 I/O: 600MB/s

隨機(jī) I/O: 100KB/s

零拷貝

先簡單了解下文件系統(tǒng)的操作流程,例如一個(gè)程序要把文件內(nèi)容發(fā)送到網(wǎng)絡(luò)

這個(gè)程序是工作在用戶空間,文件和網(wǎng)絡(luò)socket屬于硬件資源,兩者之間有一個(gè)內(nèi)核空間

在操作系統(tǒng)內(nèi)部,整個(gè)過程為:

在Linux kernel2.2 之后出現(xiàn)了一種叫做"零拷貝(zero-copy)"系統(tǒng)調(diào)用機(jī)制,就是跳過“用戶緩沖區(qū)”的拷貝,建立一個(gè)磁盤空間和內(nèi)存的直接映射,數(shù)據(jù)不再復(fù)制到“用戶態(tài)緩沖區(qū)”

系統(tǒng)上下文切換減少為2次,可以提升一倍的性能

文件分段

kafka的隊(duì)列topic被分為了多個(gè)區(qū)partition,每個(gè)partition又分為多個(gè)段segment,所以一個(gè)隊(duì)列中的消息實(shí)際上是保存在N多個(gè)片段文件中

通過分段的方式,每次文件操作都是對一個(gè)小文件的操作,非常輕便,同時(shí)也增加了并行處理能力

批量發(fā)送

Kafka允許進(jìn)行批量發(fā)送消息,先將消息緩存在內(nèi)存中,然后一次請求批量發(fā)送出去

比如可以指定緩存的消息達(dá)到某個(gè)量的時(shí)候就發(fā)出去,或者緩存了固定的時(shí)間后就發(fā)送出去

如100條消息就發(fā)送,或者每5秒發(fā)送一次

這種策略將大大減少服務(wù)端的I/O次數(shù)

數(shù)據(jù)壓縮

Kafka還支持對消息集合進(jìn)行壓縮,Producer可以通過GZIP或Snappy格式對消息集合進(jìn)行壓縮

壓縮的好處就是減少傳輸?shù)臄?shù)據(jù)量,減輕對網(wǎng)絡(luò)傳輸?shù)膲毫?/p>

Producer壓縮之后,在Consumer需進(jìn)行解壓,雖然增加了CPU的工作,但在對大數(shù)據(jù)處理上,瓶頸在網(wǎng)絡(luò)上而不是CPU,所以這個(gè)成本很值得

歡迎加入本站公開興趣群

軟件開發(fā)技術(shù)群

興趣范圍包括:Java,C/C++,Python,PHP,Ruby,shell等各種語言開發(fā)經(jīng)驗(yàn)交流,各種框架使用,外包項(xiàng)目機(jī)會(huì),學(xué)習(xí)、培訓(xùn)、跳槽等交流

QQ群:26931708

Hadoop源代碼研究群

興趣范圍包括:Hadoop源代碼解讀,改進(jìn),優(yōu)化,分布式系統(tǒng)場景定制,與Hadoop有關(guān)的各種開源項(xiàng)目,總之就是玩轉(zhuǎn)Hadoop

QQ群:288410967?

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/4190.html

相關(guān)文章

  • Kafka如何做到1秒處理1500萬條消息

    摘要:例如,在的生產(chǎn)環(huán)境中,群集每秒能夠處理超過萬條消息,而且其數(shù)據(jù)聚合率接近。為高吞吐量的,調(diào)優(yōu)緩沖區(qū)的大小特別是和以字節(jié)為單位。 來源:51CTO技術(shù)棧(ID:blog51cto) Apache Kafka是一款流行的分布式數(shù)據(jù)流平臺(tái),它已經(jīng)廣泛地被諸如New Relic(數(shù)據(jù)智能平臺(tái))、Uber、Square(移動(dòng)支付公司)等大型公司用來構(gòu)建可擴(kuò)展的、高吞吐量的、高可靠的實(shí)時(shí)數(shù)據(jù)流系統(tǒng)...

    tracy 評論0 收藏0
  • 關(guān)于MQ的幾件小事(一)消息隊(duì)列的用途、優(yōu)缺點(diǎn)、技術(shù)選型

    摘要:數(shù)量對吞吐量的影響可以達(dá)到幾百幾千個(gè)的級別,吞吐量會(huì)有小幅度的下降。這是的一大優(yōu)勢,可在同等數(shù)量機(jī)器下支撐大量的從幾十個(gè)到幾百個(gè)的時(shí)候,吞吐量會(huì)大幅下降。下一篇如何保證消息隊(duì)列的高可用 1.為什么使用消息隊(duì)列? (1)解耦:可以在多個(gè)系統(tǒng)之間進(jìn)行解耦,將原本通過網(wǎng)絡(luò)之間的調(diào)用的方式改為使用MQ進(jìn)行消息的異步通訊,只要該操作不是需要同步的,就可以改為使用MQ進(jìn)行不同系統(tǒng)之間的聯(lián)系,這樣項(xiàng)目之間...

    xialong 評論0 收藏0
  • 【備戰(zhàn)春招/秋招系列】美團(tuán)Java面經(jīng)總結(jié)進(jìn)階篇 (附詳解答案)

    摘要:我在前面的文章中也提到了應(yīng)該怎么做自我介紹與項(xiàng)目介紹,詳情可以查看這篇文章備戰(zhàn)春招秋招系列初出茅廬的程序員該如何準(zhǔn)備面試。因此基于事件消息對象驅(qū)動(dòng)的業(yè)務(wù)架構(gòu)可以是一系列流程。 showImg(https://user-gold-cdn.xitu.io/2018/11/14/16711ac29c2ae52c?w=928&h=531&f=png&s=798562); 一 消息隊(duì)列MQ的...

    chengjianhua 評論0 收藏0
  • 消息中間件——RabbitMQ(二)各大主流消息中間件綜合對比介紹!

    摘要:主流消息中間件介紹是由出品,是一個(gè)完全支持和規(guī)范的實(shí)現(xiàn)。主流消息中間件介紹是阿里開源的消息中間件,目前也已經(jīng)孵化為頂級項(xiàng)目。 showImg(https://img-blog.csdnimg.cn/20190509221741422.gif);showImg(https://img-blog.csdnimg.cn/20190718204938932.png?x-oss-process=...

    hiyang 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<