日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
程序員經(jīng)典面試題,Kafka讀寫(xiě)硬盤(pán)為什么速度還那么快

程序員經(jīng)典面試題,Kafka讀寫(xiě)硬盤(pán)為什么速度還那么快

作者:沙茶敏碎碎念 2019-10-18 09:40:19

新聞

Kafka 在今天的很多程序員招聘里,都會(huì)要求能夠熟練運(yùn)用Apache Kafka等至少一種消息隊(duì)列,Apache Kafka也是程序員面試?yán)锏某??。在大多?shù)人的映象中,寫(xiě)磁盤(pán)都是比較慢的,可是,為什么Apache Kafka在各大MQ性能的評(píng)測(cè)中,還能夠擊敗眾多對(duì)手,取得不錯(cuò)的成績(jī)呢?

十余年的芒市網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開(kāi)發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。營(yíng)銷(xiāo)型網(wǎng)站建設(shè)的優(yōu)勢(shì)是能夠根據(jù)用戶(hù)設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整芒市建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)從事“芒市網(wǎng)站設(shè)計(jì)”,“芒市網(wǎng)站推廣”以來(lái),每個(gè)客戶(hù)項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

 在今天的很多程序員招聘里,都會(huì)要求能夠熟練運(yùn)用Apache Kafka等至少一種消息隊(duì)列,Apache Kafka也是程序員面試?yán)锏某??。在大多?shù)人的映象中,寫(xiě)磁盤(pán)都是比較慢的,可是,為什么Apache Kafka在各大MQ性能的評(píng)測(cè)中,還能夠擊敗眾多對(duì)手,取得不錯(cuò)的成績(jī)呢?

順序?qū)懘疟P(pán)

在我們的生產(chǎn)環(huán)境中,為了節(jié)約成本,大部分服務(wù)器仍然使用機(jī)械磁盤(pán),而非固態(tài)硬盤(pán)。我們知道,機(jī)械磁盤(pán)讀寫(xiě)數(shù)據(jù),首先需要尋道,將磁頭調(diào)整到對(duì)應(yīng)的磁道上,緊接著,會(huì)進(jìn)行旋轉(zhuǎn),將磁頭旋轉(zhuǎn)到對(duì)應(yīng)的位置上,最后才是讀寫(xiě)數(shù)據(jù),尋道跟旋轉(zhuǎn),占用了磁盤(pán)讀寫(xiě)的大量時(shí)間,所以,Apache Kafka在寫(xiě)磁盤(pán)的時(shí)候,大量地使用了追加寫(xiě)的模式,減少了磁盤(pán)尋道與旋轉(zhuǎn)地時(shí)間,從而達(dá)到更高的磁盤(pán)利用率。

大量使用內(nèi)存頁(yè)

我們知道,即便是順序?qū)懘疟P(pán),磁盤(pán)的讀寫(xiě)速度任然比內(nèi)存慢慢的多得多,好在操作系統(tǒng)已經(jīng)幫我們解決這個(gè)問(wèn)題了,在linux操作系統(tǒng)中,Linux會(huì)將磁盤(pán)中的一些數(shù)據(jù)讀取到內(nèi)存當(dāng)中,我們稱(chēng)之為內(nèi)存頁(yè)。當(dāng)需要讀寫(xiě)硬盤(pán)的時(shí)候,都優(yōu)先在內(nèi)存頁(yè)中進(jìn)行處理。讀的話(huà)大家比較好理解,就是緩存嘛,寫(xiě)的話(huà)如果只寫(xiě)在緩存沒(méi)有落盤(pán)不是會(huì)形成臟數(shù)據(jù)么?的確如此,只有當(dāng)臟頁(yè)到達(dá)一定比例之后,Linux操作系統(tǒng)才會(huì)把數(shù)據(jù)刷到磁盤(pán)當(dāng)中。在機(jī)器發(fā)生掉電的時(shí)候,的確會(huì)出現(xiàn)臟數(shù)據(jù)。但是,我們更應(yīng)該使用分布式寫(xiě)到多臺(tái)機(jī)器上來(lái)從根本上解決這個(gè)問(wèn)題。

并且,寫(xiě)在內(nèi)存頁(yè)的另外一個(gè)好處是減少應(yīng)用內(nèi)存的使用,我們都知道Apache Kafka是用Java語(yǔ)言編寫(xiě)的,不得不避免的便是Java的GC問(wèn)題,隨著應(yīng)用內(nèi)存的增多,垃圾回收的時(shí)間會(huì)更多,帶來(lái)整體性能的下降。

零拷貝技術(shù)的使用

作為一個(gè)消息系統(tǒng),不可避免的便是消息的拷貝,常規(guī)的操作,一條消息,需要從創(chuàng)建者的socket到應(yīng)用,再到操作系統(tǒng)內(nèi)核,然后才能落盤(pán)。同樣,一條消息發(fā)送給消費(fèi)者也要從磁盤(pán)到內(nèi)核到應(yīng)用再到接受者的socket,中間經(jīng)過(guò)了多次不是很有必要的拷貝。

在Linux操作系統(tǒng)中,同樣為我們提供了零拷貝技術(shù),零拷貝技術(shù)并非真的不用拷貝,而是大大地減少了拷貝次數(shù)。舉個(gè)例子,原本從磁盤(pán)到接收者Socket中,需要見(jiàn)過(guò)內(nèi)核態(tài),又要經(jīng)過(guò)Apache Kafka應(yīng)用,那么有沒(méi)有可能直接越過(guò)這兩層狀態(tài),達(dá)到更少的拷貝次數(shù)呢?Java 的NIO庫(kù),幫我們實(shí)現(xiàn)了這一切,借用JavaNIO庫(kù)封裝的API,我們可以直接使用Linux操作系統(tǒng)的零拷貝技術(shù),讓系統(tǒng)更快。

總結(jié)

以上三點(diǎn),便是Apache Kafka雖然使用了硬盤(pán)存儲(chǔ),但是仍然可以速度很快的原因,當(dāng)然,除此之外,Apache Kafka還有很多特性讓他很快,如果你有興趣,歡迎大家關(guān)注我,共同學(xué)習(xí),共同進(jìn)步。大家的支持是我繼續(xù)嘮嗑的動(dòng)力。


名稱(chēng)欄目:程序員經(jīng)典面試題,Kafka讀寫(xiě)硬盤(pán)為什么速度還那么快
鏈接URL:http://m.5511xx.com/article/dhocjpo.html