久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

如何解析Kafka性能優化

170次閱讀
沒有評論

共計 1526 個字符,預計需要花費 4 分鐘才能閱讀完成。

這期內容當中丸趣 TV 小編將會給大家帶來有關如何解析 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 的數據流向:

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

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

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

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

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

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

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-16發表,共計1526字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 东丽区| 龙海市| 湘乡市| 东辽县| 临颍县| 高清| 平阳县| 长沙市| 望江县| 友谊县| 鄂温| 汝州市| 鸡东县| 卢氏县| 城步| 盐源县| 宝丰县| 宜宾市| 唐山市| 云安县| 四子王旗| 洱源县| 宜兰市| 中阳县| 封开县| 布拖县| 白水县| 屯留县| 湖口县| 新邵县| 阳春市| 井研县| 茶陵县| 来安县| 巍山| 镇远县| 洞口县| 镇沅| 永新县| 崇文区| 城固县|