自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

互聯(lián)網(wǎng)企業(yè)都在用的Kafka為什么可以這么快?

大數(shù)據(jù) Kafka
在數(shù)據(jù)為王的時(shí)代,對于海量數(shù)據(jù)的存儲(chǔ)、傳輸、分析變得尤為重要。在數(shù)據(jù)的存儲(chǔ)上有clickhouse、Hbase等大數(shù)據(jù)庫來完成,在數(shù)據(jù)的分析上一般也是借助clickhouse或hbase的特性將數(shù)據(jù)分維度進(jìn)行,而在數(shù)據(jù)的傳輸上,大家都不約而同使用了Kafka。

 在數(shù)據(jù)為王的時(shí)代,對于海量數(shù)據(jù)的存儲(chǔ)、傳輸、分析變得尤為重要。在數(shù)據(jù)的存儲(chǔ)上有clickhouse、Hbase等大數(shù)據(jù)庫來完成,在數(shù)據(jù)的分析上一般也是借助clickhouse或hbase的特性將數(shù)據(jù)分維度進(jìn)行,而在數(shù)據(jù)的傳輸上,大家都不約而同使用了Kafka。高并發(fā)、高性能、快速成為了Kafka的代名詞。

[[346030]]

Kafka+clickhouse+zookeeper成為了大數(shù)據(jù)分析處理行業(yè)的三件套,不過今天我們只聊Kafka,你所知道的一線大廠,如阿里、百度、騰訊、頭條、美團(tuán)、滴滴等,均在Kafka上做了二次開發(fā),集合業(yè)務(wù)擴(kuò)展了它的能力,你所不知道的互聯(lián)網(wǎng)企業(yè)則利用了Kafka的原生能力來輔助做業(yè)務(wù)處理。那么Kafka為什么可以做到這么快呢?今天我們就來聊一聊。

在第一點(diǎn)便是Kafka的特性,使用partition分區(qū)來做并行處理。Kafka作為一個(gè)發(fā)布-訂閱系統(tǒng),它所操作的最小單元便是topic主題消息,而每一個(gè)topic可以劃分為多個(gè)partition。不同partition一般位于不同的機(jī)器中,利用集群的優(yōu)勢就可以實(shí)現(xiàn)機(jī)器間的并行處理。另外因?yàn)橐粋€(gè)partition在機(jī)器上對應(yīng)一個(gè)文件夾,即使存在多個(gè)partition位于同一個(gè)機(jī)器節(jié)點(diǎn),也可以配置同一個(gè)機(jī)器節(jié)點(diǎn)的partition處于不同的磁盤,實(shí)現(xiàn)磁盤間的并行處理,提高速度。

第二點(diǎn)便是順序?qū)懭氪疟P,我們知道Kafka數(shù)據(jù)是存儲(chǔ)在磁盤上的,磁盤讀取數(shù)據(jù)的時(shí)間主要由尋道時(shí)間(正確的找到磁道)、旋轉(zhuǎn)延遲(讀寫磁頭旋轉(zhuǎn))、數(shù)據(jù)傳輸時(shí)間組成。如果磁盤是順序讀寫數(shù)據(jù),磁頭只要找到正確的磁道就可以不斷的旋轉(zhuǎn)獲取數(shù)據(jù)了,而如果磁盤是隨機(jī)讀寫數(shù)據(jù),最差的情況每一份數(shù)據(jù)都在不同的磁道上,那么就需要每次尋道、旋轉(zhuǎn)磁頭,非常的耗時(shí),性能也很差。在Kafka中每個(gè)分區(qū)的數(shù)據(jù)是有序的、不可變的消息隊(duì)列,新的消息來到分區(qū)就會(huì)追加在最末尾,順序?qū)懙姆绞骄吞岣吡怂俣?。?dāng)我們要去刪除數(shù)據(jù)的時(shí)候,也是通過把partition分為多個(gè)segment,直接刪除segment即可,也是非常的快。

第三點(diǎn)是利用pagecache。我們知道Kafka一般都是裝在Linux系統(tǒng)使用的,在Linux系統(tǒng)的設(shè)計(jì)中,為了提高對磁盤訪問的性能,將文件的cache分為pagecache、buffercache兩部分,在pagecache模塊緩存文件系統(tǒng)的數(shù)據(jù),支持進(jìn)程對文件的讀寫,在buffercache緩存塊數(shù)據(jù),支持系統(tǒng)對塊設(shè)備的讀寫。在Kafka中,服務(wù)器節(jié)點(diǎn)broker收到數(shù)據(jù)后,在寫磁盤時(shí)把數(shù)據(jù)寫入pagecache,把連續(xù)的小塊組裝成大塊的物理寫提高了性能,在讀磁盤數(shù)據(jù)時(shí)從pagecache讀,不通過物理磁盤獲取,提高了速度。

第四點(diǎn)是Kafka的零拷貝機(jī)制。我們知道操作系統(tǒng)的核心是內(nèi)核,為了避免用戶直接操作內(nèi)核,操作系統(tǒng)一般把內(nèi)核劃分成兩部分,即內(nèi)核空間、用戶空間。在Linux系統(tǒng)中,讀取數(shù)據(jù)操作都是基于數(shù)據(jù)拷貝完成的,也就是說數(shù)據(jù)會(huì)在內(nèi)核地址空間的緩沖區(qū)和用戶地址空間的緩沖區(qū)進(jìn)行拷貝,正常的數(shù)據(jù)讀取流程一般包含四部分。

1、操作系統(tǒng)需要先從磁盤里讀取文件到內(nèi)核頁面的緩存;

2、用戶態(tài)的應(yīng)用程序從內(nèi)核態(tài)讀取數(shù)據(jù)到用戶空間緩存區(qū),由于內(nèi)核態(tài)的資源比較寶貴會(huì)經(jīng)常釋放;

3、用戶態(tài)的應(yīng)用程序還需要將數(shù)據(jù)寫回內(nèi)核空間并放入socket緩沖區(qū);

4、最后操作系統(tǒng)將數(shù)據(jù)從socket緩沖區(qū)復(fù)制到網(wǎng)卡接口,再經(jīng)由網(wǎng)絡(luò)發(fā)送給到消費(fèi)者進(jìn)程。

在消費(fèi)者consumer讀取Kafka消息隊(duì)列的數(shù)據(jù)時(shí),按理說也要經(jīng)過這四次copydata的流程,但是Kafka內(nèi)置了零拷貝技術(shù),將磁盤文件的數(shù)據(jù)復(fù)制到頁面緩存中,然后將數(shù)據(jù)從頁面緩存直接發(fā)送到網(wǎng)絡(luò)給到不同的訂閱者,避免了重復(fù)拷貝操作,極大的提高了速度。

第五點(diǎn)是壓縮批處理。在Kafka的producer往broker服務(wù)器節(jié)點(diǎn)發(fā)送數(shù)據(jù)時(shí),會(huì)累積多條消息壓縮后一起發(fā)送,通過批處理和壓縮的方式提高了速度,也提高了網(wǎng)絡(luò)帶寬使用率。

通過本文的介紹,你對Kafka的速度了解了嗎?在日常技術(shù)開發(fā)或者業(yè)務(wù)選型當(dāng)中,Kafka無疑都是你最好的選擇噢。在金九銀十的面試中,如果面試官問你用什么消息隊(duì)列或者你對消息隊(duì)列有什么了解時(shí),把這些知識點(diǎn)咔咔講出來,直接讓面試官眼前一亮,最佳候選人說不定就是你了~加油鴨!

責(zé)任編輯:張燕妮 來源: 今日頭條
相關(guān)推薦

2024-02-26 21:15:20

Kafka緩存參數(shù)

2019-10-11 20:32:42

數(shù)據(jù)中心

2020-03-30 15:05:46

Kafka消息數(shù)據(jù)

2019-11-29 09:29:12

互聯(lián)網(wǎng)SRE運(yùn)維

2021-01-05 10:36:40

互聯(lián)網(wǎng)數(shù)據(jù)技術(shù)

2015-10-19 17:55:28

互聯(lián)網(wǎng)路由器

2021-01-11 00:00:03

互聯(lián)網(wǎng)IT信息

2019-09-24 09:47:20

IOT大數(shù)據(jù)物聯(lián)網(wǎng)

2018-08-15 08:07:06

2024-11-26 08:52:34

SQL優(yōu)化Kafka

2022-08-31 16:17:21

造芯互聯(lián)網(wǎng)公司大廠

2020-02-27 21:03:30

調(diào)度器架構(gòu)效率

2020-02-27 15:44:41

Nginx服務(wù)器反向代理

2022-02-10 22:59:22

互聯(lián)網(wǎng)科技IT

2021-12-06 10:23:45

互聯(lián)網(wǎng)支付牌照支付市場

2025-04-16 10:10:00

互聯(lián)網(wǎng)DNS網(wǎng)絡(luò)

2024-08-12 11:42:21

2020-10-22 15:23:29

自動(dòng)駕駛技術(shù)5G

2015-03-25 18:31:20

互聯(lián)網(wǎng)+

2017-05-19 10:01:53

互聯(lián)網(wǎng)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號