新聞中心
這篇文章將為大家詳細(xì)講解有關(guān)基于磁盤的Kafka為什么這么快,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。
公司主營(yíng)業(yè)務(wù):成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)公司是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來(lái)驚喜。創(chuàng)新互聯(lián)公司推出浪卡子免費(fèi)做網(wǎng)站回饋大家。
零拷貝
這里主要講的是Kafka利用linux操作系統(tǒng)的 "零拷貝(zero-copy)" 機(jī)制在消費(fèi)端做的優(yōu)化。首先來(lái)了解下數(shù)據(jù)從文件發(fā)送到socket網(wǎng)絡(luò)連接中的常規(guī)傳輸路徑:
操作系統(tǒng)從磁盤讀取數(shù)據(jù)到內(nèi)核空間(kernel space)的Page Cache
應(yīng)用程序讀取Page Cache的數(shù)據(jù)到用戶空間(user space)的緩沖區(qū)
應(yīng)用程序?qū)⒂脩艨臻g緩沖區(qū)的數(shù)據(jù)寫回內(nèi)核空間到socket緩沖區(qū)(socket buffer)
操作系統(tǒng)將數(shù)據(jù)從socket緩沖區(qū)復(fù)制到網(wǎng)絡(luò)發(fā)送的NIC緩沖區(qū)
這個(gè)過(guò)程包含4次copy操作和2次系統(tǒng)上下文切換,性能其實(shí)非常低效。linux操作系統(tǒng) "零拷貝" 機(jī)制使用了sendfile方法,允許操作系統(tǒng)將數(shù)據(jù)從Page Cache 直接發(fā)送到網(wǎng)絡(luò),只需要最后一步的copy操作將數(shù)據(jù)復(fù)制到 NIC 緩沖區(qū),這樣避免重新復(fù)制數(shù)據(jù)。示意圖如下:
通過(guò)這種 "零拷貝" 的機(jī)制,Page Cache 結(jié)合 sendfile 方法,Kafka消費(fèi)端的性能也大幅提升。這也是為什么有時(shí)候消費(fèi)端在不斷消費(fèi)數(shù)據(jù)時(shí),我們并沒(méi)有看到磁盤io比較高,此刻正是操作系統(tǒng)緩存在提供數(shù)據(jù)。
關(guān)于基于磁盤的Kafka為什么這么快就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。
本文名稱:基于磁盤的Kafka為什么這么快
地址分享:http://fisionsoft.com.cn/article/jjjjgs.html