一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

大數(shù)據(jù)開發(fā)最火技術(shù)Kafka背后的“黑科技”

張康康 ? 2019-10-22 17:53 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Kafka是由Apache軟件基金會開發(fā)的一個開源流處理平臺,被廣泛地應(yīng)用在數(shù)據(jù)緩沖、異步通信、匯集日志、系統(tǒng)解耦等方面。相比較于其他常見消息系統(tǒng),Kafka在保障了大部分功能特性的同時,還在高吞吐、低延遲等方面有很突出的表現(xiàn)。這篇文章不同于其他介紹Kafka使用或?qū)崿F(xiàn)的文章,只是談?wù)凨afka用了什么“黑科技”使他在性能方面有這么突出的表現(xiàn)。

  • 消息順序?qū)懭氪疟P

磁盤大多數(shù)都還是機械結(jié)構(gòu)(SSD不在討論的范圍內(nèi)),如果將消息以隨機寫的方式存入磁盤,就需要按柱面、磁頭、扇區(qū)的方式尋址,尋址是一個“機械動作”也最耗時。為了提高讀寫硬盤的速度,Kafka就是使用順序I/O

圖 1 Kafka順序IO

上圖中,每個partition就是一個文件,每條消息都被append 到該 partition 中,屬于順序?qū)懘疟P,因此效率非常高。這種方法有一個缺陷—— 沒有辦法刪除數(shù)據(jù) ,所以Kafka是不會刪除數(shù)據(jù)的,它會把所有的數(shù)據(jù)都保留下來,每個消費者(Consumer)對每個Topic都有一個offset用來表示讀取到了第幾條數(shù)據(jù) 。

關(guān)于磁盤順序讀寫和隨機讀寫的性能,引用一組Kafka官方給出的測試數(shù)據(jù)(Raid-5,7200rpm):

Sequence I/O: 600MB/s

Random I/O: 100KB/s

所以通過只做Sequence I/O,給Kafka帶來了性能的極大提升。

  • Zero Copy

考慮一個web程序讀取文件內(nèi)容并傳輸?shù)骄W(wǎng)絡(luò)的場景,實現(xiàn)的核心代碼如下:

圖 2 普通read方法

雖然只是兩個調(diào)用,但卻經(jīng)過了4次copy,其中有2次cpu copy,還有多次用戶態(tài)與內(nèi)核態(tài)的上下文切換,這會加重cpu的負擔,而零拷貝就是為了解決這種低效。

# mmap:

減少拷貝次數(shù)的一種方法是調(diào)用mmap()來代替read()調(diào)用:

應(yīng)用程序調(diào)用mmap(),磁盤上的數(shù)據(jù)會通過DMA被拷貝到內(nèi)核緩沖區(qū),接著操作系統(tǒng)會把這段內(nèi)核緩沖區(qū)與應(yīng)用程序共享,這樣就不需要把內(nèi)核緩沖區(qū)的內(nèi)容往用戶空間拷貝。應(yīng)用程序再調(diào)用write(),操作系統(tǒng)直接將內(nèi)核緩沖區(qū)的內(nèi)容拷貝到socket緩沖區(qū)中,最后再把數(shù)據(jù)發(fā)到網(wǎng)卡去。

圖 3 mmap方法

使用mmap可以減少一次cpu copy,但也會遇到一些陷阱,當你的程序map了一個文件,但是當這個文件被另一個進程截斷(truncate)時, write系統(tǒng)調(diào)用會因為訪問非法地址而被SIGBUS信號終止。通常可以通過,為SIGBUS信號建立信號處理程序或使用文件租憑(file leasing)的方式去解決,這里就不再贅述了。

# sendfile:

從2.1版內(nèi)核開始,Linux引入了sendfile來簡化操作

圖 4 sendfile方法

sendfile() 方法引發(fā) DMA 引擎將文件內(nèi)容拷貝到一個讀取緩沖區(qū)(DMA copy)然后由內(nèi)核將數(shù)據(jù)拷貝到socket buffer(cpu copy)最后再拷貝到網(wǎng)卡(DMA copy)使用sendfile不僅減少了數(shù)據(jù)拷貝的次數(shù),還減少了上下文切換,數(shù)據(jù)傳送始終只發(fā)生在kernel space

聊到這里,sendfile至少還需要一次cpu copy,那么這一步能不能省去呢?為了消除內(nèi)核完成的所有數(shù)據(jù)復(fù)制,我們需要一個支持收集(gather)操作的網(wǎng)絡(luò)接口。同時,在內(nèi)核版本2.4中,也修改了套接字緩沖區(qū)描述符以適應(yīng)零拷貝要求。 這種方法不僅減少了多個上下文切換,還完全取消了cpu copy。

圖 5 sendfile方法(DMA gather)

sendfile系統(tǒng)調(diào)用利用DMA引擎將文件內(nèi)容拷貝到內(nèi)核緩沖區(qū)去,然后將帶有文件位置和長度信息的緩沖區(qū)描述符添加socket緩沖區(qū)去,這一步不會將內(nèi)核中的數(shù)據(jù)拷貝到socket緩沖區(qū)中,DMA引擎會將內(nèi)核緩沖區(qū)的數(shù)據(jù)拷貝到協(xié)議引擎中去,避免了最后一次CPU拷貝。

零拷貝技術(shù)非常普遍,JAVA的transferTo、transferFrom方法就是Zero Copy。


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    Kafka工作流程及文件存儲機制

    Kafka 中消息是以 topic 進行分類的,生產(chǎn)者生產(chǎn)消息,消費者消費消息,都是面向 topic 的。
    的頭像 發(fā)表于 05-19 10:14 ?385次閱讀
    <b class='flag-5'>Kafka</b>工作流程及文件存儲機制

    大數(shù)據(jù)與云計算是干嘛的?

    大數(shù)據(jù)與云計算是支撐現(xiàn)代數(shù)字化技術(shù)的兩大核心。大數(shù)據(jù)專注于海量數(shù)據(jù)的采集、存儲、分析與價值挖掘;云計算通過虛擬化資源池提供彈性計算、存儲及服務(wù)能力。兩者結(jié)合,共同賦能企業(yè)決策、業(yè)務(wù)創(chuàng)新
    的頭像 發(fā)表于 02-20 14:48 ?546次閱讀

    大數(shù)據(jù)云計算都需要考什么證書?

    大數(shù)據(jù)和云計算領(lǐng)域包含多種專業(yè)證書,其中大數(shù)據(jù)領(lǐng)域涵蓋數(shù)據(jù)分析類證書、大數(shù)據(jù)工程類證書、數(shù)據(jù)治理類證書。云計算領(lǐng)域領(lǐng)域涵蓋云計算
    的頭像 發(fā)表于 02-19 11:05 ?570次閱讀

    工程大數(shù)據(jù)平臺

    由于無人駕駛系統(tǒng)開發(fā)需要長期迭代優(yōu)化,其過程需要大量的路試數(shù)據(jù)支撐,經(jīng)緯恒潤針對無人駕駛系統(tǒng)持續(xù)運營和持續(xù)迭代的需求,開發(fā)并在云端部署了車路云工程大數(shù)據(jù)平臺,依托5G網(wǎng)絡(luò),具有遠程
    的頭像 發(fā)表于 01-10 17:00 ?559次閱讀
    工程<b class='flag-5'>大數(shù)據(jù)</b>平臺

    華為云 FlexusX 實例下的 Kafka 集群部署實踐與性能優(yōu)化

    前言 華為云 FlexusX 實例,以創(chuàng)新的柔性算力技術(shù),為 Kafka 集群部署帶來前所未有的性能飛躍。其靈活的 CPU 與內(nèi)存配比,結(jié)合智能調(diào)度與加速技術(shù),讓 Kafka 在高并發(fā)
    的頭像 發(fā)表于 01-07 17:23 ?407次閱讀
    華為云 FlexusX 實例下的 <b class='flag-5'>Kafka</b> 集群部署實踐與性能優(yōu)化

    超詳細“零”基礎(chǔ)kafka入門篇

    ,類似于消息隊列或企業(yè)消息傳遞系統(tǒng)。 以 容錯的持久方式存儲記錄流 。 記錄發(fā)生時處理流。 (2)Kafka通常用于兩大類應(yīng)用: 構(gòu)建可在 系統(tǒng)或應(yīng)用程序之間 可靠獲取數(shù)據(jù)的實時流數(shù)據(jù)管道 構(gòu)建轉(zhuǎn)換或
    的頭像 發(fā)表于 12-18 09:50 ?2857次閱讀
    超詳細“零”基礎(chǔ)<b class='flag-5'>kafka</b>入門篇

    raid 在大數(shù)據(jù)分析中的應(yīng)用

    的具體應(yīng)用: 一、提高性能 并行讀寫 :RAID技術(shù)通過并行讀寫多個磁盤,可以顯著提高數(shù)據(jù)的讀寫速度。在大數(shù)據(jù)分析環(huán)境中,數(shù)據(jù)讀寫速度是影響分析效率的關(guān)鍵因素之一。RAID 0(條帶化
    的頭像 發(fā)表于 11-12 09:44 ?686次閱讀

    智慧城市與大數(shù)據(jù)的關(guān)系

    智慧城市與大數(shù)據(jù)之間存在著密切的關(guān)系,這種關(guān)系體現(xiàn)在大數(shù)據(jù)對智慧城市建設(shè)的支撐和推動作用,以及智慧城市產(chǎn)生的大量數(shù)據(jù)大數(shù)據(jù)技術(shù)的應(yīng)用需求。
    的頭像 發(fā)表于 10-24 15:27 ?1259次閱讀

    Kafka高性能背后技術(shù)原理

    Kafka 是一款性能非常優(yōu)秀的消息隊列,每秒處理的消息體量可以達到千萬級別。
    的頭像 發(fā)表于 10-23 09:37 ?742次閱讀
    <b class='flag-5'>Kafka</b>高性能<b class='flag-5'>背后</b>的<b class='flag-5'>技術(shù)</b>原理

    基于Kepware的Hadoop大數(shù)據(jù)應(yīng)用構(gòu)建-提升數(shù)據(jù)價值利用效能

    處理超大數(shù)據(jù)集。 Hadoop的生態(tài)系統(tǒng)非常豐富,包括許多相關(guān)工具和技術(shù),如Hive、Pig、HBase等,這些工具可以方便地構(gòu)建復(fù)雜的大數(shù)據(jù)應(yīng)用。Hadoop廣泛應(yīng)用于各種場景,包括數(shù)據(jù)
    的頭像 發(fā)表于 10-08 15:12 ?332次閱讀
    基于Kepware的Hadoop<b class='flag-5'>大數(shù)據(jù)</b>應(yīng)用構(gòu)建-提升<b class='flag-5'>數(shù)據(jù)</b>價值利用效能

    迅為RK3588開發(fā)板!神話悟空,啟動?

    之后,就引起了全球范圍內(nèi)的廣泛關(guān)注和熱議。 那能否在iTOP-RK3588開發(fā)板上暢玩《神話 悟空》呢?請看VCR: https://www.bilibili.com/video
    發(fā)表于 09-23 10:48

    神話:悟空》背后的數(shù)字化中國——天創(chuàng)信用守衛(wèi)數(shù)據(jù)安全

    國產(chǎn)單機游戲《神話:悟空》遍全球之后,游戲中的“數(shù)字孿生”古建受到了強烈的關(guān)注,為取景地最多的山西帶來了不菲流量,相關(guān)文旅部門紛紛計劃借勢開展文旅活動、打造數(shù)字文旅精品。這種現(xiàn)象反映了中國社會
    的頭像 發(fā)表于 09-06 16:52 ?447次閱讀
    《<b class='flag-5'>黑</b>神話:悟空》<b class='flag-5'>背后</b>的數(shù)字化中國——天創(chuàng)信用守衛(wèi)<b class='flag-5'>數(shù)據(jù)</b>安全

    獨家探秘!Datasheet5背后大數(shù)據(jù)機制

    現(xiàn)在市面上林林總總、各式各樣的數(shù)據(jù)手冊網(wǎng)站,國內(nèi)的,國外的,并不少,也都號稱運用大數(shù)據(jù)智能匹配和運算,為工程師提供數(shù)據(jù)手冊查詢、器件參數(shù),應(yīng)用等等等等。
    的頭像 發(fā)表于 08-26 17:24 ?661次閱讀
    獨家探秘!Datasheet5<b class='flag-5'>背后</b>的<b class='flag-5'>大數(shù)據(jù)</b>機制

    語言RPA中有哪些優(yōu)勢,可以提高開發(fā)效率?

    語言RPA提供了多種資源和工具來幫助用戶提高開發(fā)效率,以下是一些值得關(guān)注的點: 1、跨平臺兼容:語言支持在Win, Mac, Linux上三端跨平臺運行,一個腳本規(guī)則適配所有系統(tǒng)。 2、發(fā)布本地
    的頭像 發(fā)表于 08-07 13:40 ?653次閱讀

    大數(shù)據(jù)采集系統(tǒng)分為幾類

    和應(yīng)用場景. 1. 概述 大數(shù)據(jù)采集系統(tǒng)是實現(xiàn)數(shù)據(jù)收集、處理和存儲的關(guān)鍵環(huán)節(jié)。隨著大數(shù)據(jù)技術(shù)的快速發(fā)展,大數(shù)據(jù)采集系統(tǒng)也在不斷演進和創(chuàng)新。本
    的頭像 發(fā)表于 07-01 15:44 ?2283次閱讀