摘要:是分布式消息系統,需要處理海量的消息,的設計是把所有的消息都寫入速度低容量大的硬盤,以此來換取更強的存儲能力,但實際上,使用硬盤并沒有帶來過多的性能損失主要使用了以下幾個方式實現了超高的吞吐率順序讀寫的消息是不斷追加到文件中的,這個特性使可
Kafka是分布式消息系統,需要處理海量的消息,Kafka的設計是把所有的消息都寫入速度低容量大的硬盤,以此來換取更強的存儲能力,但實際上,使用硬盤并沒有帶來過多的性能損失
kafka主要使用了以下幾個方式實現了超高的吞吐率
順序讀寫
kafka的消息是不斷追加到文件中的,這個特性使kafka可以充分利用磁盤的順序讀寫性能
順序讀寫不需要硬盤磁頭的尋道時間,只需很少的扇區旋轉時間,所以速度遠快于隨機讀寫
Kafka官方給出了測試數據(Raid-5,7200rpm):
順序 I/O: 600MB/s
隨機 I/O: 100KB/s
零拷貝
先簡單了解下文件系統的操作流程,例如一個程序要把文件內容發送到網絡
這個程序是工作在用戶空間,文件和網絡socket屬于硬件資源,兩者之間有一個內核空間
在操作系統內部,整個過程為:
在Linux kernel2.2 之后出現了一種叫做"零拷貝(zero-copy)"系統調用機制,就是跳過“用戶緩沖區”的拷貝,建立一個磁盤空間和內存的直接映射,數據不再復制到“用戶態緩沖區”
系統上下文切換減少為2次,可以提升一倍的性能
文件分段
kafka的隊列topic被分為了多個區partition,每個partition又分為多個段segment,所以一個隊列中的消息實際上是保存在N多個片段文件中
通過分段的方式,每次文件操作都是對一個小文件的操作,非常輕便,同時也增加了并行處理能力
批量發送
Kafka允許進行批量發送消息,先將消息緩存在內存中,然后一次請求批量發送出去
比如可以指定緩存的消息達到某個量的時候就發出去,或者緩存了固定的時間后就發送出去
如100條消息就發送,或者每5秒發送一次
這種策略將大大減少服務端的I/O次數
數據壓縮
Kafka還支持對消息集合進行壓縮,Producer可以通過GZIP或Snappy格式對消息集合進行壓縮
壓縮的好處就是減少傳輸的數據量,減輕對網絡傳輸的壓力
Producer壓縮之后,在Consumer需進行解壓,雖然增加了CPU的工作,但在對大數據處理上,瓶頸在網絡上而不是CPU,所以這個成本很值得
歡迎加入本站公開興趣群軟件開發技術群
興趣范圍包括:Java,C/C++,Python,PHP,Ruby,shell等各種語言開發經驗交流,各種框架使用,外包項目機會,學習、培訓、跳槽等交流
QQ群:26931708
Hadoop源代碼研究群
興趣范圍包括:Hadoop源代碼解讀,改進,優化,分布式系統場景定制,與Hadoop有關的各種開源項目,總之就是玩轉Hadoop
QQ群:288410967?
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/4190.html
摘要:例如,在的生產環境中,群集每秒能夠處理超過萬條消息,而且其數據聚合率接近。為高吞吐量的,調優緩沖區的大小特別是和以字節為單位。 來源:51CTO技術棧(ID:blog51cto) Apache Kafka是一款流行的分布式數據流平臺,它已經廣泛地被諸如New Relic(數據智能平臺)、Uber、Square(移動支付公司)等大型公司用來構建可擴展的、高吞吐量的、高可靠的實時數據流系統...
摘要:數量對吞吐量的影響可以達到幾百幾千個的級別,吞吐量會有小幅度的下降。這是的一大優勢,可在同等數量機器下支撐大量的從幾十個到幾百個的時候,吞吐量會大幅下降。下一篇如何保證消息隊列的高可用 1.為什么使用消息隊列? (1)解耦:可以在多個系統之間進行解耦,將原本通過網絡之間的調用的方式改為使用MQ進行消息的異步通訊,只要該操作不是需要同步的,就可以改為使用MQ進行不同系統之間的聯系,這樣項目之間...
摘要:我在前面的文章中也提到了應該怎么做自我介紹與項目介紹,詳情可以查看這篇文章備戰春招秋招系列初出茅廬的程序員該如何準備面試。因此基于事件消息對象驅動的業務架構可以是一系列流程。 showImg(https://user-gold-cdn.xitu.io/2018/11/14/16711ac29c2ae52c?w=928&h=531&f=png&s=798562); 一 消息隊列MQ的...
摘要:主流消息中間件介紹是由出品,是一個完全支持和規范的實現。主流消息中間件介紹是阿里開源的消息中間件,目前也已經孵化為頂級項目。 showImg(https://img-blog.csdnimg.cn/20190509221741422.gif);showImg(https://img-blog.csdnimg.cn/20190718204938932.png?x-oss-process=...
閱讀 1211·2023-04-25 20:31
閱讀 3717·2021-10-14 09:42
閱讀 1485·2021-09-22 16:06
閱讀 2636·2021-09-10 10:50
閱讀 3524·2021-09-07 10:19
閱讀 1771·2019-08-30 15:53
閱讀 1170·2019-08-29 15:13
閱讀 2818·2019-08-29 13:20