国产精品嫩草99av在线_一区在线视频观看_欧美高清一区_欧美 日韩 国产 一区_99精品欧美一区二区三区_久久大香伊蕉在人线观看热2_一色屋精品视频在线观看网站_在线亚洲国产精品网站_亚洲区一区二区三区_你懂的视频一区二区

當前位置:首頁 > 科技  > 軟件

Rust中的高吞吐量流處理

來源: 責編: 時間:2023-08-05 11:44:33 5123觀看
導讀作者 | Noz編譯 | 王瑞平本篇文章主要介紹了Rust中流處理的概念、方法和優化。作者不僅介紹了流處理的基本概念以及Rust中常用的流處理庫,還使用這些庫實現了一個流處理程序。最后,作者介紹了如何通過測量空閑和阻塞時

作者 | NozUfu28資訊網——每日最新資訊28at.com

編譯 | 王瑞平Ufu28資訊網——每日最新資訊28at.com

本篇文章主要介紹了Rust中流處理的概念、方法和優化。作者不僅介紹了流處理的基本概念以及Rust中常用的流處理庫,還使用這些庫實現了一個流處理程序。Ufu28資訊網——每日最新資訊28at.com

最后,作者介紹了如何通過測量空閑和阻塞時間來優化流處理程序的性能,并將這些內容同步至Twitter和blog。Ufu28資訊網——每日最新資訊28at.com

圖片圖片Ufu28資訊網——每日最新資訊28at.com

此外,作者還提供了一些其它方面的優化建議,例如:Ufu28資訊網——每日最新資訊28at.com

  • 在實際系統中,應考慮將線程固定至CPU內核上或使用一種版本的綠色線程減少上下文切換。
  • 在處理流時,通常需要為結果分配內存。內存分配是昂貴的,所以,在以后的文章中,作者將會介紹一些優化內存分配的好方法。

首先,分別介紹下在同步和異步Rust中的流特質。Ufu28資訊網——每日最新資訊28at.com

一、同步和異步Rust中的流特質

在同步Rust中,流核心抽象是Iterator。它提供了在序列中產生項的方法并在它們之間進行阻塞,然后,通過將迭代器傳遞給其它迭代器的構造函數完成組合。這使我們可以毫不費力地將事物連接在一起。Ufu28資訊網——每日最新資訊28at.com

在異步Rust中,流核心抽象是Stream。它的行為與Iterator非常相似;但是,它并不是在每個項之間產生的阻塞,而是允許其它任務在阻塞等待時運行。Ufu28資訊網——每日最新資訊28at.com

在異步Rust與同步Rust中,Read和Write分別對應AsyncRead和AsyncWrite。這些特質表明:未解析的字節通常直接來自10層(例如,來自套接字或文件)。Ufu28資訊網——每日最新資訊28at.com

圖片圖片Ufu28資訊網——每日最新資訊28at.com

Rust流吸收了其它語言所具備的最佳功能;例如,它們能通過利用Rust特質系統回避Node.js的Duplex流中出現的遺留問題,也能同時實施背壓和惰性迭代,大大提升了效率。最重要的是,Rust流允許使用相同類型的異步迭代。Ufu28資訊網——每日最新資訊28at.com

未來,關于Rust流還有很多值得關注之處,盡管仍有一些問題亟待解決。Ufu28資訊網——每日最新資訊28at.com

二、總體概括:什么是流處理?

現在,也許你已經了解到了同步和異步Rust中的流特質,下面再來介紹下什么是“流處理”。Ufu28資訊網——每日最新資訊28at.com

“流處理”是一種重要的大數據處理手段,其主要特點是處理的數據是源源不斷且實時到來的。Ufu28資訊網——每日最新資訊28at.com

在不同規模的科技公司中,流處理通常被用于分析和處理具體事件,且常被應用于分布式系統。Ufu28資訊網——每日最新資訊28at.com

有些領域確實會大量使用“流處理”手段,包括:視頻處理和高頻交易。我們也能夠借此尋找到新型區塊鏈之中的架構靈感。因為,區塊鏈需要處理交易和元數據流等。Ufu28資訊網——每日最新資訊28at.com

如今,你可以租用具有100多個CPU的內核、100GB內存、多個GPU和100Gbps帶寬的AWS實例,還無需擁有一個節點的分布式系統。Ufu28資訊網——每日最新資訊28at.com

現在,讓我們了解下流處理在Rust編程中的應用:Ufu28資訊網——每日最新資訊28at.com

三、舉個例子:計算10億個數字的哈希程序

現在,讓我們寫一個用來計算10億個數字的SHA512和BLAKE3哈希程序吧!你可以想象:數字代表交易、分析事件或價格信號。散列法可用來表示對這些輸入的任意轉換。Ufu28資訊網——每日最新資訊28at.com

如下是單線程解決方案程序:Ufu28資訊網——每日最新資訊28at.com

圖片圖片Ufu28資訊網——每日最新資訊28at.com

當我在帶有專用CPU和16核的Digital Ocean上用發布模式運行此程序時,只需6分鐘多一點。Ufu28資訊網——每日最新資訊28at.com

圖片圖片Ufu28資訊網——每日最新資訊28at.com

1.通道

現在,讓我們用“流處理”來重寫這個程序。與在單個循環中執行散列不同,我們將設置一個線程管道并行執行散列,然后收集結果。Ufu28資訊網——每日最新資訊28at.com

在兩個線程之間發送數據的本地流被稱為通道。我們的新程序將生成四個線程。生成器線程將生成數字并同時將它們發送至兩個不同的哈希線程。散列線程將讀取這些數字,分別對它們進行散列,然后將它們的輸出發送給結果線程,下圖是它的架構:Ufu28資訊網——每日最新資訊28at.com

圖片圖片Ufu28資訊網——每日最新資訊28at.com

我們也將使用標準庫中的mpsc通道發送和接收數據。mpsc可用來表示“多生產者-單消費者”,代表你可以從多個線程向通道發送數據,但是,只有一個管道能夠輸出數據。雖然我們不會使用這個多制作人功能,但是了解這一點很重要。Ufu28資訊網——每日最新資訊28at.com

它仍是一個相當簡單的程序:Ufu28資訊網——每日最新資訊28at.com

圖片圖片Ufu28資訊網——每日最新資訊28at.com

輸出結果如下:Ufu28資訊網——每日最新資訊28at.com

圖片圖片Ufu28資訊網——每日最新資訊28at.com

哦!帶通道的新版本花費了兩倍時間,這是怎么了?Ufu28資訊網——每日最新資訊28at.com

2.環形緩沖器

你可以用火焰圖進行測試,但還是省省時間吧!Ufu28資訊網——每日最新資訊28at.com

無論多小,所有通道庫的構建都會產生額外的費用,并行化所帶來的好處必須大于此種開銷,才能保證系統正常運作。這種情況下的瓶頸是通道send()和recv()。由于Rust中的標準庫mpsc通道相對緩慢,但仍有其它替代方案,比如,crossbeam-channel。Ufu28資訊網——每日最新資訊28at.com

為此,我們分析了4個不同的通道庫,結果如下:Ufu28資訊網——每日最新資訊28at.com

圖片圖片Ufu28資訊網——每日最新資訊28at.com

顯然,ringbuf和rtrb速度最快。因為它們的環形緩沖區無鎖,扮演著“單個生產者-單個消費者”的角色。單個生產者意味著只有一個管道將數據放入隊列,另一個管道將負責數據輸出,這比“多生產者隊列”開銷小。Ufu28資訊網——每日最新資訊28at.com

此外,這些程序庫也是非阻塞式的。當隊列已滿時,如果嘗試推送,它將提示“error”而不是“block”,“空隊列”亦是如此。Ufu28資訊網——每日最新資訊28at.com

為使用這些環形緩沖區庫,我添加了自旋鎖,以便在通道阻塞時繼續重試。事實證明,這也是高頻交易架構中所使用的方法。Ufu28資訊網——每日最新資訊28at.com

我還發現,在等待時增加非常短的“休眠”時間整體性能就能提高。這可能是由于當核心使用率達到100%或高于某些溫度時,啟動CPU就會發生節流的現象。Ufu28資訊網——每日最新資訊28at.com

如下是新的pop()和push(value)幫助器:Ufu28資訊網——每日最新資訊28at.com

圖片圖片Ufu28資訊網——每日最新資訊28at.com

我們將用新方法展示:Ufu28資訊網——每日最新資訊28at.com

圖片圖片Ufu28資訊網——每日最新資訊28at.com

速度確實比以前快了,但也快不了多少,現在,就讓我們把并行化提升至另一個層次。Ufu28資訊網——每日最新資訊28at.com

3.更多的并行化

目前,我們為哈希創建了兩個線程,一個用于SHA512,另一個用于BLAKE3。兩者中較慢的那個將成為我們技術發展的瓶頸。為證明這一點,我重新運行了原始的單線程示例,僅使用SHA512哈希,結果如下:Ufu28資訊網——每日最新資訊28at.com

圖片圖片Ufu28資訊網——每日最新資訊28at.com

這與并行哈希示例中的性能非常接近,意味著,總體上花在哈希上的大部分時間都是由SHA512產生。Ufu28資訊網——每日最新資訊28at.com

那么,如果我們同時創建更多的線程并將多個數字進行散列排列呢?讓我們試一試。我們將創建2個SHA512哈希線程和2個BLAKE3哈希線程來啟動。Ufu28資訊網——每日最新資訊28at.com

4.可視化

每個線程都擁有自己的輸入和輸出隊列。我們將用循環順序將生成的數字循環發送至每個線程并用相同的順序讀取結果。Ufu28資訊網——每日最新資訊28at.com

圖片圖片Ufu28資訊網——每日最新資訊28at.com

這確保了流的順序能夠在結果線程中維持不變;如果排序不重要或消息處理時間多變,那么,其它的調度機制可能會更好。Ufu28資訊網——每日最新資訊28at.com

如下是循環調度代碼:Ufu28資訊網——每日最新資訊28at.com

圖片圖片Ufu28資訊網——每日最新資訊28at.com

新的代碼更復雜,部分如下:Ufu28資訊網——每日最新資訊28at.com

圖片圖片Ufu28資訊網——每日最新資訊28at.com

一起來看看,現在表現如何?輸出結果如下:Ufu28資訊網——每日最新資訊28at.com

圖片圖片Ufu28資訊網——每日最新資訊28at.com

確實好多了!Ufu28資訊網——每日最新資訊28at.com

5.測量“閑置”和“阻塞”時間

每個哈希函數應該有多少個線程?在更復雜的系統中,這很難確定,甚至可能是動態的。Ufu28資訊網——每日最新資訊28at.com

實際上,有一種技術對“流處理”很有幫助,即,在某個時間窗口內測量空閑和阻塞時間。Ufu28資訊網——每日最新資訊28at.com

  • 空閑時間

等待空隊列接收消息所花的時間Ufu28資訊網——每日最新資訊28at.com

  • 全程時間

等待滿隊列發送輸出所花費的時間Ufu28資訊網——每日最新資訊28at.com

空閑時間是pop()期間旋轉的時間,阻塞時間是push()期間旋轉的時間。我修改了這兩個函數,用來跟蹤花費時間。這段代碼使用了開銷很小的單元:Ufu28資訊網——每日最新資訊28at.com

圖片圖片Ufu28資訊網——每日最新資訊28at.com

我還創建了一個新的線程統計這些時間,輸出結果如下:Ufu28資訊網——每日最新資訊28at.com

圖片圖片Ufu28資訊網——每日最新資訊28at.com

我們可以看到,sha512線程既沒有“空閑”也沒有“阻塞”,而是100%處于活躍狀態;此外,我們還能通過增加sha512線程數量為系統提速。Ufu28資訊網——每日最新資訊28at.com

注:當用測量系統的行為改變其性能時,可能會出現像“海森伯測不準原理”這樣的問題。如果遇到此種情況,請查看“粗時間庫”;通常,定時測量取近似值就足夠了。Ufu28資訊網——每日最新資訊28at.com

我們在Digital Ocean實例中,經過試驗和錯誤數據總結出:最佳數量是8個SHA512線程和4個BLAKE3線程。Ufu28資訊網——每日最新資訊28at.com

圖片圖片Ufu28資訊網——每日最新資訊28at.com

結果:小于初始時間的1/6。Ufu28資訊網——每日最新資訊28at.com

四、下一步:為不同的流處理結果分配內存

在這篇文章中,我們用具體實例介紹了Rust中流處理的概念、方法和優化,但是還有很多細節沒有討論。在實際系統中,我們應該考慮將“線程”固定到CPU內核上,用來減少上下文切換。Ufu28資訊網——每日最新資訊28at.com

此外,在流處理時,你通常需要為不同的結果分配內存。這是昂貴的,所以,在今后的文章中,我們還將討論這方面的一些策略。Ufu28資訊網——每日最新資訊28at.com

參考資料:

1.https://noz.ai/hash-pipeline/Ufu28資訊網——每日最新資訊28at.com

2.https://zhuanlan.zhihu.com/p/70247995?utm_id=0Ufu28資訊網——每日最新資訊28at.com

本文鏈接:http://www.rrqrq.com/showinfo-26-78-0.htmlRust中的高吞吐量流處理

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 線程通訊的三種方法!通俗易懂

下一篇: 摸魚心法第一章——和配置文件說拜拜

標簽:
  • 熱門焦點
  • 太卷!Redmi MAX 100英寸電視便宜了:12999元買Redmi史上最大屏

    8月5日消息,從小米商城了解到,Redmi MAX 100英寸巨屏電視日前迎來官方優惠,到手價12999元,比發布價便宜了7000元,在大屏電視市場開卷。據了解,Redmi MAX 100
  • 十個可以手動編寫的 JavaScript 數組 API

    JavaScript 中有很多API,使用得當,會很方便,省力不少。 你知道它的原理嗎? 今天這篇文章,我們將對它們進行一次小總結。現在開始吧。1.forEach()forEach()用于遍歷數組接收一參
  • 一文看懂為蘋果Vision Pro開發應用程序

    譯者 | 布加迪審校 | 重樓蘋果的Vision Pro是一款混合現實(MR)頭戴設備。Vision Pro結合了虛擬現實(VR)和增強現實(AR)的沉浸感。其高分辨率顯示屏、先進的傳感器和強大的處理能力
  • 如何正確使用:Has和:Nth-Last-Child

    我們可以用CSS檢查,以了解一組元素的數量是否小于或等于一個數字。例如,一個擁有三個或更多子項的grid。你可能會想,為什么需要這樣做呢?在某些情況下,一個組件或一個布局可能會
  • 量化指標是與非:挽救被量化指標扼殺的技術團隊

    作者 | 劉新翠整理 | 徐杰承本文整理自快狗打車技術總監劉新翠在WOT2023大會上的主題分享,更多精彩內容及現場PPT,請關注51CTO技術棧公眾號,發消息【WOT2023PPT】即可直接領取
  • 三言兩語說透柯里化和反柯里化

    JavaScript中的柯里化(Currying)和反柯里化(Uncurrying)是兩種很有用的技術,可以幫助我們寫出更加優雅、泛用的函數。本文將首先介紹柯里化和反柯里化的概念、實現原理和應用
  • 小米汽車電池信息疑似曝光:容量101kWh,支持800V高壓快充

    7月14日消息,今日一名博主在社交媒體發布了一張疑似小米汽車電池信息的照片,顯示該電池包正是寧德時代麒麟電池,容量為101kWh,電壓為726.7V,可以預測小
  • iQOO 11S評測:行業唯一的200W標準版旗艦

    【Techweb評測】去年底,iQOO推出了“電競旗艦”iQOO 11系列,作為一款性能強機,該機不僅全球首發2K 144Hz E6全感屏,搭載了第二代驍龍8平臺及144Hz電競
  • 親歷馬斯克血洗Twitter,硅谷的苦日子在后頭

    文/劉哲銘  編輯/李薇  馬斯克再次揮下裁員大刀。  美國時間11月14日,Twitter約4400名外包員工遭解雇,此次被解雇的員工的主要工作為內容審核等。此前,T
Top 国产精品嫩草99av在线_一区在线视频观看_欧美高清一区_欧美 日韩 国产 一区_99精品欧美一区二区三区_久久大香伊蕉在人线观看热2_一色屋精品视频在线观看网站_在线亚洲国产精品网站_亚洲区一区二区三区_你懂的视频一区二区
国产欧美视频一区二区三区| 午夜在线精品偷拍| 在线精品亚洲一区二区| 精品国产免费久久| 国产999精品久久久久久绿帽| 欧美色图片你懂的| 亚洲h精品动漫在线观看| 国产色综合网| 亚洲精品国产第一综合99久久| 国内精品久久国产| 国产精品区一区二区三区| 欧美暴力喷水在线| 久久久久久9999| 白白色亚洲国产精品| 精品久久国产字幕高潮| 风间由美一区二区三区在线观看| 日韩一级免费一区| 成人av电影在线观看| 精品国产伦一区二区三区免费| 不卡视频一二三| 久久亚洲精华国产精华液| av在线不卡免费看| 久久久亚洲精品石原莉奈| 欧美在线三区| 国产欧美精品在线观看| 欧美欧美天天天天操| 中文字幕电影一区| 国产一区日韩一区| 中文字幕高清不卡| 尤物精品在线| 亚洲精品久久久久久国产精华液| 一区二区三区高清视频在线观看| 亚洲欧美视频在线观看视频| 亚洲精品在线观看免费| 亚洲小说欧美激情另类| 久久人人97超碰人人澡爱香蕉| 日韩精品电影在线| 欧美日韩久久一区二区| 国产99久久久精品| 久久这里只有精品首页| 欧美日韩一区二区视频在线 | 久久精品噜噜噜成人88aⅴ| 国产精品国码视频| 亚洲男人天堂一区| 校园激情久久| 青青草91视频| 欧美一区二区三区成人| 成人蜜臀av电影| 久久久久久久久蜜桃| 一区精品久久| 午夜国产不卡在线观看视频| 欧美日韩在线精品一区二区三区激情| 国产精品自拍毛片| 久久久国产精品不卡| 亚洲国产精品www| 午夜精品在线看| 538在线一区二区精品国产| 99久久久国产精品免费蜜臀| 亚洲色图视频免费播放| 色偷偷88欧美精品久久久 | 91在线视频观看| 中文字幕一区二区5566日韩| 久久国产精品一区二区三区四区 | 欧美1区免费| 亚洲午夜日本在线观看| 欧美喷潮久久久xxxxx| 欧美承认网站| 亚洲国产一二三| 91精品国产一区二区| 国产主播一区| 日韩和欧美一区二区| 欧美大片国产精品| 亚洲精品欧美精品| 黄色日韩网站视频| 国产色一区二区| 麻豆av一区二区三区久久| 国产aⅴ综合色| 亚洲乱码国产乱码精品精98午夜| 欧美丝袜第三区| 欧美极品一区二区三区| 日日夜夜免费精品视频| 欧美精品一区二区三区蜜桃 | 国产精品综合久久| 成人免费在线观看入口| 欧美午夜精品久久久久久孕妇| 97成人超碰视| 亚洲国产精品麻豆| 日韩精品中文字幕一区二区三区 | 成人精品电影在线观看| 一区二区三区91| 日韩美女一区二区三区| 亚洲一区二区高清视频| 国内精品嫩模私拍在线| √…a在线天堂一区| 欧美日韩一区二区三区在线看| 欧美成人国产| 美女视频一区在线观看| 国产视频一区二区在线| 欧美性一区二区| 伊人狠狠色j香婷婷综合| 国产乱人伦精品一区二区在线观看| 亚洲人成网站色在线观看| 4438x亚洲最大成人网| 国产一级精品aaaaa看| 成人免费视频网站在线观看| 午夜欧美视频在线观看| 欧美国产一区二区在线观看| 欧美日韩综合在线免费观看| 一区精品在线| 成人视屏免费看| 日韩一区精品字幕| 国产精品私人影院| 在线播放一区二区三区| 国产区欧美区日韩区| 99久久免费视频.com| 美女一区二区久久| 亚洲视频免费在线观看| 26uuu精品一区二区| 欧美日韩精品欧美日韩精品一 | 亚洲美女区一区| 欧美成人猛片aaaaaaa| 色天天综合色天天久久| 影音先锋久久资源网| 成人av免费在线观看| 免费成人性网站| 一区二区三区加勒比av| 久久久www免费人成精品| 欧美精品一二三| 男女精品网站| 亚洲午夜黄色| 97成人超碰视| 国产一区二区三区四区五区美女 | 国产精品久久久久久久久久妞妞| 91丝袜呻吟高潮美腿白嫩在线观看| 久久99精品久久久久婷婷| 亚洲国产日韩av| 中文字幕色av一区二区三区| 26uuu欧美| 欧美一区二区在线播放| 色美美综合视频| 亚洲一区二区在线看| 激情亚洲网站| 色综合天天狠狠| 成人免费视频视频| 国产一区在线不卡| 日韩国产精品久久久| 亚洲黄色免费电影| 国产精品国产三级国产aⅴ原创| 亚洲精品在线观看视频| 欧美一级淫片007| 欧美色图12p| 日本韩国欧美一区二区三区| 久久福利电影| 国产欧美一区二区三区另类精品| 国内在线观看一区二区三区| 99久久伊人精品| 国产不卡视频一区二区三区| 国产自产2019最新不卡| 激情综合网最新| 久久99精品一区二区三区三区| 人人精品人人爱| 丝袜亚洲另类丝袜在线| 亚洲福利视频一区二区| 有码一区二区三区| 亚洲激情一二三区| 一区二区三区在线播放| 亚洲精品你懂的| 亚洲黄色尤物视频| 一区二区三区日韩在线观看| 亚洲伦理在线免费看| 亚洲乱码国产乱码精品精小说| 亚洲欧美偷拍卡通变态| 亚洲精品日产精品乱码不卡| 亚洲欧美日韩一区二区| 一区二区三区资源| 亚洲一二三区在线观看| 亚洲国产精品久久一线不卡| 亚洲国产综合在线| 亚洲成人av在线电影| 天堂va蜜桃一区二区三区| 午夜欧美一区二区三区在线播放| 午夜精品久久久久久久久久| 日韩国产一区二| 免费在线观看精品| 国精产品一区一区三区mba桃花| 激情久久五月天| 成人午夜免费电影| 欧美伊人久久| 国产综合第一页| 国产欧美短视频| 久久人人超碰| 欧美丝袜丝交足nylons图片| 欧美绝品在线观看成人午夜影视| 欧美一区二区三区四区久久| 久久嫩草精品久久久精品一| 中文字幕av不卡| 一区二区三区欧美日韩| 视频一区视频二区中文| 久久精品国产亚洲高清剧情介绍 | 在线天堂一区av电影|