国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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、RocketMQ、JMQ 存儲架構深度對比

    開源,金融級特性突出)、JMQ(京東開源,側重高可用與靈活性),從存儲模型、數據組織、索引設計等維度展開深度對比,為技術選型與架構優化提供參考。? 本文將從概念辨析出發,系統拆解主流存儲模型與存儲引擎的設計邏輯,對比 JMQ、Kafka
    的頭像 發表于 01-13 16:19 ?182次閱讀
    工程師之夜系列分享第三十九篇:<b class='flag-5'>Kafka</b>、RocketMQ、JMQ 存儲架構深度對比

    大數據解決方案如何實施

    大數據解決方案實施的難點在于以下幾點: ?1.很少有優質可用的數據 ?在數聚股份看來,這幾年數據交易機構如雨后春筍,“數據變現”成為很多擁有數據
    的頭像 發表于 12-25 18:22 ?1041次閱讀

    大數據平臺運營的基礎是什么

    ,值得每一位企業運營者思考。 本文提供大數據平臺運營的三元素模型,旨在幫助企業管理層以全面的視角審視企業當前正在建設的大數據體系,真正地實現數據驅動。 1. ? ?大數據平臺的
    的頭像 發表于 12-23 16:07 ?228次閱讀

    揭秘施耐德電氣中壓開關背后科技

    關乎電力系統運行的安全與可靠。看似常規的操作背后,每一次可靠動作都絕非偶然——它不僅是現代工業制造實力的體現,也是前沿技術與百年電氣技術經驗深度融合的結晶。
    的頭像 發表于 12-12 15:20 ?499次閱讀

    AI時代大數據背后的網絡力量-上海兆越100G核心工業交換機

    AI大數據與云計算的全球普及,讓海量數據實時傳輸處理成為各行業數字化轉型的核心挑戰,工業通信網絡面臨巨大數據壓力。工業交換機作為數據傳輸的核心載體,既能實現設備互聯,又以高效穩定的網絡
    的頭像 發表于 11-18 17:33 ?2668次閱讀
    AI時代<b class='flag-5'>大數據</b><b class='flag-5'>背后</b>的網絡力量-上海兆越100G核心工業交換機

    充電樁背后藏著多少科技?國內的充電樁安全嗎?

    隨著新能源汽車駛入千家萬戶,為它們“補充能量”的充電樁已成為我們生活中常見的基礎設施。這個看似簡單的“大插座”背后,實則凝聚了多項前沿技術,而其安全性更是廣大車主和社會關注的焦點。 一、 充電樁里
    的頭像 發表于 11-04 13:46 ?870次閱讀

    湖北大數據集團到訪維智科技參觀交流

    近日,湖北大數據集團有限公司黨委書記、董事長汪小波率隊到訪維智科技。雙方圍繞時空數據融合、公共數據授權運營及行業應用場景開發等議題展開深入探討。
    的頭像 發表于 11-03 10:02 ?629次閱讀

    組態大數據平臺是什么?有什么功能?

    組態大數據平臺是融合 組態技術大數據處理能力 的綜合性平臺,通過圖形化、可配置的方式實現數據采集、存儲、分析、可視化及遠程控制,適用于工業自動化、能源管理、樓宇監控等領域。其核心
    的頭像 發表于 10-30 11:29 ?223次閱讀
    組態<b class='flag-5'>大數據</b>平臺是什么?有什么功能?

    微電子登陸2025深圳安博會——安防有我,共見芯

    全球規模最大、最具影響力的安防行業盛會——第二十屆中國國際社會公共安全博覽會(CPSE2025)于2025年10月28日-31日在深圳會展中心盛大啟幕!大會聚焦AI傳感、物聯網、5G、大數據技術
    的頭像 發表于 10-29 10:21 ?514次閱讀
    芯<b class='flag-5'>火</b>微電子登陸2025深圳安博會——安防有我,共見芯<b class='flag-5'>火</b>

    御控工業物聯網大數據解決方案:排水設備遠程監控與大數據統計系統

    御控工業物聯網推出排水設備遠程監控與大數據統計系統,通過物聯網、大數據、云計算等技術構建“感知-傳輸-分析-決策”閉環管理體系,助力排水行業數字化轉型。
    的頭像 發表于 09-12 10:04 ?662次閱讀

    ?Groq LPU 如何讓萬億參數模型「飛」起來?揭秘 Kimi K2 40 倍提速背后科技

    Groq LPU 如何讓萬億參數模型「飛」起來?揭秘 Kimi K2 40 倍提速背后科技? 最近,Moonshot AI 的千億參數大模型 ?Kimi K2? 在 ?GroqCloud? 上
    的頭像 發表于 08-07 10:01 ?973次閱讀

    揭秘Air8000對講科技:AirTalk+MQTT開發示例深度解析

    的實時傳輸,帶你深度理解這一科技背后技術奧秘。 Air8000 系列的 Airtalk 是基于 LuatOS 核心庫的對講方案,采用 MQTT 協議實現設備端、手機端、網頁端的跨終端對講,支持服務器
    的頭像 發表于 08-06 17:16 ?782次閱讀
    揭秘Air8000對講<b class='flag-5'>黑</b>科技:AirTalk+MQTT<b class='flag-5'>開發</b>示例深度解析

    Kafka生產環境應用方案

    Apache Kafka作為分布式流處理平臺,在現代大數據架構中扮演著消息中間件的核心角色。本文將從運維工程師的角度,詳細介紹Kafka在生產環境中的部署方案、配置優化、監控運維等關鍵技術
    的頭像 發表于 07-09 09:56 ?583次閱讀

    更改最大數據包大小時無法識別USB設備如何解決?

    將生產者 EP 端點描述符中的最大數據包大小從 1024 字節更改為 512 字節時,無法識別 USB 設備。 請告知如何解決這個問題。
    發表于 05-20 08:13

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

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