亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何解析Kafka性能優化

發布時間:2021-12-15 10:23:36 來源:億速云 閱讀:150 作者:柒染 欄目:云計算

這期內容當中小編將會給大家帶來有關如何解析Kafka性能優化,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

Kafka在提高效率方面做了很大努力。Kafka的一個主要使用場景是處理網站活動日志,吞吐量是非常大的,每個頁面都會產生好多次寫操作。讀方面,假設每個消息只被消費一次,讀的量的也是很大的,Kafka也盡量使讀的操作更輕量化。

我們之前討論了磁盤的性能問題,線性讀寫的情況下影響磁盤性能問題大約有兩個方面:太多的瑣碎的I/O操作和太多的字節拷貝。I/O問題發生在客戶端和服務端之間,也發生在服務端內部的持久化的操作中。
消息集(message set)
為了避免這些問題,Kafka建立了“消息集(message set)”的概念,將消息組織到一起,作為處理的單位。以消息集為單位處理消息,比以單個的消息為單位處理,會提升不少性能。Producer把消息集一塊發送給服務端,而不是一條條的發送;服務端把消息集一次性的追加到日志文件中,這樣減少了瑣碎的I/O操作。consumer也可以一次性的請求一個消息集。
另外一個性能優化是在字節拷貝方面。在低負載的情況下這不是問題,但是在高負載的情況下它的影響還是很大的。為了避免這個問題,Kafka使用了標準的二進制消息格式,這個格式可以在producer,broker和producer之間共享而無需做任何改動。
zero copy
Broker維護的消息日志僅僅是一些目錄文件,消息集以固定隊的格式寫入到日志文件中,這個格式producer和consumer是共享的,這使得Kafka可以一個很重要的點進行優化:消息在網絡上的傳遞。現代的unix操作系統提供了高性能的將數據從頁面緩存發送到socket的系統函數,在linux中,這個函數是sendfile.
為了更好的理解sendfile的好處,我們先來看下一般將數據從文件發送到socket的數據流向:

  1.  操作系統把數據從文件拷貝內核中的頁緩存中

  2. 應用程序從頁緩存從把數據拷貝自己的內存緩存中

  3. 應用程序將數據寫入到內核中socket緩存中

  4.  操作系統把數據從socket緩存中拷貝到網卡接口緩存,從這里發送到網絡上。


這顯然是低效率的,有4次拷貝和2次系統調用。Sendfile通過直接將數據從頁面緩存發送網卡接口緩存,避免了重復拷貝,大大的優化了性能。
在一個多consumers的場景里,數據僅僅被拷貝到頁面緩存一次而不是每次消費消息的時候都重復的進行拷貝。這使得消息以近乎網絡帶寬的速率發送出去。這樣在磁盤層面你幾乎看不到任何的讀操作,因為數據都是從頁面緩存中直接發送到網絡上去了。
這篇文章詳細介紹了sendfile和zero-copy技術在Java方面的應用。
數據壓縮
很多時候,性能的瓶頸并非CPU或者硬盤而是網絡帶寬,對于需要在數據中心之間傳送大量數據的應用更是如此。當然用戶可以在沒有Kafka支持的情況下各自壓縮自己的消息,但是這將導致較低的壓縮率,因為相比于將消息單獨壓縮,將大量文件壓縮在一起才能起到最好的壓縮效果。
Kafka采用了端到端的壓縮:因為有“消息集”的概念,客戶端的消息可以一起被壓縮后送到服務端,并以壓縮后的格式寫入日志文件,以壓縮的格式發送到consumer,消息從producer發出到consumer拿到都被是壓縮的,只有在consumer使用的時候才被解壓縮,所以叫做“端到端的壓縮”。
Kafka支持GZIP和Snappy壓縮協議。

上述就是小編為大家分享的如何解析Kafka性能優化了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

通化县| 社旗县| 屏山县| 宜都市| 江华| 双江| 恭城| 武定县| 佛冈县| 炎陵县| 合山市| 启东市| 乌兰县| 老河口市| 贡山| 开化县| 永宁县| 抚顺市| 东方市| 湖口县| 册亨县| 裕民县| 新乐市| 如东县| 南丰县| 西昌市| 宜兰市| 若羌县| 库尔勒市| 藁城市| 贵德县| 马龙县| 仁化县| 昆山市| 金秀| 淮阳县| 承德县| 民勤县| 分宜县| 关岭| 常熟市|