Kafka高性能高吞吐的原因總結

1、磁盤順序讀寫

保證了消息的堆積? ??

順序讀寫 磁盤會預讀,預讀即在讀取的起始地址連續讀取多個頁面,主要時間花費在了傳輸時間,而這個時間兩種讀寫可以認為是一樣的。
? ?

隨機讀寫 因為數據沒有在一起,將預讀浪費掉了,需要多次尋道和旋轉延遲,而這個時間可能是傳輸時間的許多倍。

2、零拷貝

避免CPU將數據從一塊存儲拷貝到另外一塊存儲的技術


? ? 傳統的數據復制:

  1. ? ? ? ? 讀取磁盤文件數據到內核緩沖區
  2. ? ? ? ? 將內核緩沖區的數據copy到用戶緩沖區
  3. ? ? ? ? 將用戶緩沖區的數據copy到socket的發送緩沖區
  4. ? ? ? ? 將socket發送緩沖區中的數據發送到網卡、進行傳輸

? ? 零拷貝:
? ? ? ? 磁盤文件 → 內核空間讀取緩沖區 → 網卡接口 → 消費者進程


3、分區分段+索引


? ? Kafka的message消息實際上是分布式存儲在一個一 個小的segment中的,每次文件操作也是直接操作的segment。為了進一步的查詢優化, Kafka又 默認為分段后的數據文件建立了索引文件,就是文件系統上的index文件。這種分區分段+索引的設計,不僅提升了數據讀取的效率,同時也提高了數據操作的并行度

4、批量壓縮

多條消息一起壓縮,降低帶寬


5、批量讀寫

kafka允許進行批量發送消息,producer發送消息的時候,可以將消息緩存在本地,等到固定條件再發送到kafka

消息條數滿足固定條數
一段時間發送一次數據壓縮

kafka還支持對消息集合進行壓縮,producer可以通過GZIP或Snappy格式對消息集合進行壓縮,壓縮的好處就是減少傳輸的數據量,減輕對網絡傳輸的壓力。?


6、優化JVM

直接操作page cache,不是JVM、避免GC耗時及對象創建耗時,且讀寫速度更高,進程重啟、緩存也不會丟失。


?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/283810.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/283810.shtml
英文地址,請注明出處:http://en.pswp.cn/news/283810.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

日利率

2019獨角獸企業重金招聘Python工程師標準>>> 利率計算 轉載于:https://my.oschina.net/u/3342652/blog/1649028

linux下使用tar命令

解壓語法:tar [主選項輔選項] 文件或者目錄 使用該命令時,主選項是必須要有的,它告訴tar要做什么事情,輔選項是輔助使用的,可以選用。主選項:c 創建新的檔案文件。如果用戶想備份一個目錄或是一些文件&…

Kafka 安裝詳解

注意:確保有JDK1.8版本及以上 官方文檔:https://kafka.apache.org/quickstart 清華鏡像下載:https://mirrors.tuna.tsinghua.edu.cn/apache/kafka/ 首先下載安裝包,在linux及Windows都可以使用。 1. Centos 安裝部署 1.1 下載 將下…

【Maui正式版】創建可跨平臺的Maui程序,以及有關依賴注入、MVVM雙向綁定的實現和演示...

前言:Maui終于在2022年8月9日推送出來了。今兒就迫不及待來把玩一下先。A、我本地已有VS2022,不過版本比較老,此處選擇更新。工具 -> 獲取功能和更新里面,可以獲取到新版本更新。B、最新版本是17.3.0,我本地只有17.…

學go語言能做什么工作?

Go語言主要用作服務器端開發,其定位是用來開發“大型軟件”的,適合于很多程序員一起開發大型軟件,并且開發周期長,支持云計算的網絡服務。Go語言能夠讓程序員快速開發,并且在軟件不斷的增長過程中,它能讓程…

WebSQL存儲

2019獨角獸企業重金招聘Python工程師標準>>> WebSQL這種存儲技術,相對于學過數據庫的人來說,還是比較容易理解和上手的,主要就是它的存儲風格和我們一般所學的SQL Server 和Oracle比較像,對于HTML5來說,當然…

軟件工程第一次作業補充

1.關注《構建之法》的作者鄒欣老師的博客;2.花二十分鐘寫一個能自動生成小學四則運算題目的“軟件”,要求除了整數以外,還要支持真分數的四則運算。將代碼上傳至coding.net,并將地址發布至自己的博客。代碼地址: https://coding.n…

抖音服務器帶寬有多大,才能供上億人同時刷?

最近看到一個有意思的提問:抖音服務器帶寬有多大,為什么能夠供那么多人同時刷?今天來給小伙伴們科普一下。 抖音,百度,阿里云,騰訊都是自建的數據中心,都是 T 級別出口帶寬(總出口帶…

ASP.NET Core 5.0中的Host.CreateDefaultBuilder執行過程

通過Rider調試的方式看了下ASP.NET Core 5.0的Web API默認項目,重點關注Host.CreateDefaultBuilder(args)中的執行過程,主要包括主機配置、應用程序配置、日志配置和依賴注入配置這4個部分。由于水平和篇幅有限,先整體理解、建立框架&#xf…

404和302

為什么80%的碼農都做不了架構師?>>> 404 php中用header()函數是可以為返回頁面添加404的頭信息的,從而提示瀏覽器該網頁找不到了。 所以可以使用:header("HTTP/1.0 404 Not Found");或者:header("Stat…

oracle sqlplus使用

2019獨角獸企業重金招聘Python工程師標準>>> 1、常用連接方式 sqlplus / as sysdba 無需數據庫進入可用狀態,就可用用該命令登錄,運行startup來啟動。 sqlplus username/pwdhost/service_name,如: sqlplus tiger/scott…

20款IDEA 神級插件 效率提升 30 倍,寫代碼必備

插件目錄 1. Alibaba Java Coding Guidelines 2.GsonFormat 3.A8Translation 4.Maven Helper 5.Free Mybatis plugin 6.Grep Console 7.Lombok 8.Nyan progress bar 9.FindBugs-IDEA 10.Key Promoter X 11.JavaDoc 12.ignore 13.RainbowBrackets 14.Activate-power-mode 15.C…

【溫故知新】C# Linq中 Where使用技巧

微信公眾號:趣編程ACE關注可了解更多的.NET日常實戰開發技巧,如需源碼 后臺回復 源碼 即可;如果覺得對你有幫助,歡迎關注C# Linq中 Where使用技巧hello 大家好,很開心又能重新分享C#編程開發技巧了,之前因為工作和生活…

JS引用類型 -- Array類型

ECMAScript數組與其他語言中的數組都是數據的有序列表,但與其他語言不同的是,ECMAScript數組的每一項可以保存任何類型的數據。而且ECMAScript數組的大小是可以動態調整的,即可以隨著數據的添加自動增長。 創建數組的基本方式有兩種&#xff…

分布式id解決方案

文章目錄 1.分布式id實現方案 1.1.uuid1.2 數據庫主鍵自增1.3 Redis自增1.4 號段模式1.5 雪花算法(snowflake) 1.5.1 百度(uid-generator)1.5.2 美團(Leaf)所謂id就是能夠用作唯一標識的記號。 在我們日常的…

我和大象的十年往事 - 感恩、感謝、加油、騰飛

背景 http://www.idcquan.com/Special/OSCAR2018/index.html 由中國信息通信研究院主辦、中國通信標準化協會支持的"OSCAR云計算開源產業大會"于2018年3月21日-22日在國家會議中心舉行。 非常有幸獲得了“OSCAR尖峰開源人物”獎項。 獎項不敢自居&#xf…

Httpclient發送json請求

一、Httpclient發送json請求 public String RequestJsonPost(String url){ String strresponse null; try{ HttpClient hc new DefaultHttpClient(); HttpPost hp new HttpPost(url); JSONObject jsonParam new JSONObject(); jsonParam.pu…

基于ABP的AppUser對象擴展

在ABP中AppUser表的數據字段是有限的,現在有個場景是和小程序對接,需要在AppUser表中添加一個OpenId字段。今天有個小伙伴在群中遇到的問題是基于ABP的AppUser對象擴展后,用戶查詢是沒有問題的,但是增加和更新就會報"XXX fie…

html (align 、placeholder )

onblur 事件會在對象失去焦點時發生。 onkeyup 事件會在鍵盤按鍵被松開時發生。 ----------------------------------------------------------------------------------------------------------- align 屬性規定單元格中內容的水平對齊方式。 <td align"value"&…

4種分布式session解決方案

cookie和session的區別和聯系 cookie是本地客戶端用來存儲少量數據信息的&#xff0c;保存在客戶端&#xff0c;用戶能夠很容易的獲取&#xff0c;安全性不高&#xff0c;存儲的數據量小 session是服務器用來存儲部分數據信息&#xff0c;保存在服務器&#xff0c;用戶不容易獲…