在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

大數據開發最火技術Kafka背后的“黑科技”

張康康 ? 2019-10-22 17:53 ? 次閱讀

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

  • 消息順序寫入磁盤

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

圖 1 Kafka順序IO

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

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

Sequence I/O: 600MB/s

Random I/O: 100KB/s

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

  • Zero Copy

考慮一個web程序讀取文件內容并傳輸到網絡的場景,實現的核心代碼如下:

圖 2 普通read方法

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

# mmap:

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

應用程序調用mmap(),磁盤上的數據會通過DMA被拷貝到內核緩沖區,接著操作系統會把這段內核緩沖區與應用程序共享,這樣就不需要把內核緩沖區的內容往用戶空間拷貝。應用程序再調用write(),操作系統直接將內核緩沖區的內容拷貝到socket緩沖區中,最后再把數據發到網卡去。

圖 3 mmap方法

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

# sendfile:

從2.1版內核開始,Linux引入了sendfile來簡化操作

圖 4 sendfile方法

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

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

圖 5 sendfile方法(DMA gather)

sendfile系統調用利用DMA引擎將文件內容拷貝到內核緩沖區去,然后將帶有文件位置和長度信息的緩沖區描述符添加socket緩沖區去,這一步不會將內核中的數據拷貝到socket緩沖區中,DMA引擎會將內核緩沖區的數據拷貝到協議引擎中去,避免了最后一次CPU拷貝。

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


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
收藏 人收藏

    評論

    相關推薦
    熱點推薦

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

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

    大數據與云計算是干嘛的?

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

    工程大數據平臺

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

    華為云 FlexusX 實例下的 Kafka 集群部署實踐與性能優化

    前言 華為云 FlexusX 實例,以創新的柔性算力技術,為 Kafka 集群部署帶來前所未有的性能飛躍。其靈活的 CPU 與內存配比,結合智能調度與加速技術,讓 Kafka 在高并發
    的頭像 發表于 01-07 17:23 ?396次閱讀
    華為云 FlexusX 實例下的 <b class='flag-5'>Kafka</b> 集群部署實踐與性能優化

    超詳細“零”基礎kafka入門篇

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

    raid 在大數據分析中的應用

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

    智慧城市與大數據的關系

    智慧城市與大數據之間存在著密切的關系,這種關系體現在大數據對智慧城市建設的支撐和推動作用,以及智慧城市產生的大量數據大數據技術的應用需求。
    的頭像 發表于 10-24 15:27 ?1221次閱讀

    Kafka高性能背后技術原理

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

    基于Kepware的Hadoop大數據應用構建-提升數據價值利用效能

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

    迅為RK3588開發板!神話悟空,啟動?

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

    神話:悟空》背后的數字化中國——天創信用守衛數據安全

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

    獨家探秘!Datasheet5背后大數據機制

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

    語言RPA中有哪些優勢,可以提高開發效率?

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

    大數據采集系統分為幾類

    和應用場景. 1. 概述 大數據采集系統是實現數據收集、處理和存儲的關鍵環節。隨著大數據技術的快速發展,大數據采集系統也在不斷演進和創新。本
    的頭像 發表于 07-01 15:44 ?2213次閱讀

    大數據在軍事方面的應用有哪些

    大數據技術為戰爭決策提供了全新的思路和工具。軍事機關指揮系統通過搜集和分析大量的戰場數據,可以建立復雜的決策模型,快速分析敵我態勢,評估作戰可行性,并推薦最優的戰術方案。 利用大數據
    的頭像 發表于 06-23 10:34 ?1677次閱讀
    主站蜘蛛池模板: 色丁香在线视频 | dvd碟片色爱 | 户外露出 自拍系列 | 亚洲综合色网 | 亚洲一本高清 | 国产精选经典三级小泽玛利亚 | 色综合久久98天天综合 | 男人资源| 亚洲激情 | 99久久精品免费看国产 | 中文字幕在线观看第一页 | 一区二区三区四区国产精品 | 国内精品久久久久久久久蜜桃 | 午夜看大片 | 亚洲地址一地址二地址三 | 亚洲开心激情网 | 四虎影视在线观看 | aaa在线| 日本久久久 | 一个色在线 | 亚洲天堂亚洲天堂 | 亚洲第成色999久久网站 | 伦理片日本韩国电影三级在线观看 | 亚洲视频一区在线观看 | 34pao强力打造免费永久视频 | 久久综合九色综合98一99久久99久 | 午夜精品久久久久久99热 | 深夜国产成人福利在线观看女同 | 色综合天天操 | 性欧美xxx 不卡视频 | 天天躁夜夜躁狠狠躁2021a | 好男人社区在线观看www | 日本一区二区三区免费看 | 日本免费的一级绿象 | 在线观看视频h | www.天堂.com| 日本黄视频在线观看 | 亚洲国产精品热久久2022 | 国产人成精品免费视频 | 狠狠色影院| 国产h视频在线观看 |