国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

[RDMA] 高性能異步的消息傳遞和RPC :Accelio

這篇具有很好參考價值的文章主要介紹了[RDMA] 高性能異步的消息傳遞和RPC :Accelio。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

1. Introduce

Accelio是一個高性能異步的可靠消息傳遞和RPC庫,能優(yōu)化硬件加速。 RDMA和TCP / IP傳輸被實(shí)現(xiàn),并且其他的傳輸也能被實(shí)現(xiàn),如共享存儲器可以利用這個高效和方便的API的優(yōu)點(diǎn)。Accelio 是 Mellanox 公司的RDMA中間件,用于高性能異步的可靠消息傳遞和RPC庫。

2. Accelio 設(shè)計(jì)目標(biāo)

Accelio提供了一個易于使用的,可靠的,可擴(kuò)展和高性能的數(shù)據(jù)/消息傳遞中間件,最大限度地提高現(xiàn)代CPU和網(wǎng)卡硬件的效率,減少將新的擴(kuò)展應(yīng)用程序產(chǎn)品推向市場的的時間。

3. Accelio Key Features

  1. 專注于高性能異步的API
  2. 可靠的消息傳遞(端對端)
  3. 請求/響應(yīng)(交易)或發(fā)送/接收模式
  4. 提供連接和資源抽象到最大的可擴(kuò)展性和可用性
  5. 最大限度地發(fā)揮每個線程專用的硬件資源,多線程應(yīng)用程序的性能
  6. 旨在最大限度地利用RDMA,硬件卸載和多核CPU的優(yōu)勢
  7. 支持多種傳輸選項(xiàng)(RDMA,TCP,..)
  8. 服務(wù)和存儲集群/向外擴(kuò)展的原生支持
  9. 小消息合并
  10. 簡單和抽象的API

4. Who can take advantage of it?

對那些高效的,高性能的,可靠消息傳遞實(shí)現(xiàn)的應(yīng)用,如集群,橫向擴(kuò)展塊/文件/對象存儲,BigData和NoSQL應(yīng)用程序,快速消息總線等,感興趣的開發(fā)商可以使用。

5. Accelio 的結(jié)構(gòu)示意圖

[RDMA] 高性能異步的消息傳遞和RPC :Accelio,Ceph專欄,ceph

?

Accelio的主層分別是:
?應(yīng)用程序接口?- 提供易于使用的原語進(jìn)行快速,可靠的異步消息隊(duì)列或RPC
?連接和會話管理?- 提供可靠的終端到終端的連接等端點(diǎn),動態(tài)連接建立,池,故障恢復(fù)和遷移/重定向
?可插拔傳輸層?- 使映射到不同的硬件或軟件傳輸實(shí)現(xiàn)

6. Accelio Integration With Other Applications/Projects

[RDMA] 高性能異步的消息傳遞和RPC :Accelio,Ceph專欄,ceph

Accelio被用作高性能,低延遲,可靠消息/ RPC庫的各種開源和商業(yè)產(chǎn)品,客戶項(xiàng)目
支持多種綁定(Kernel C, User Space C/C++, Java, Python (future))。

7. 一個會話/連接建立流程

在建立連接到遠(yuǎn)程端點(diǎn),客戶指定遠(yuǎn)程統(tǒng)一資源標(biāo)識符(URI)。URI包含首選傳輸方式,強(qiáng)制領(lǐng)先的IP地址和可選端口數(shù)目,以及可選的資源ID或名稱。

[RDMA] 高性能異步的消息傳遞和RPC :Accelio,Ceph專欄,ceph

/服務(wù)器端響應(yīng)會話請求,下列選項(xiàng)之一:
?接受可選屬性的連接
?拒絕連接
?無縫地將連接重定向到一個不同的進(jìn)程或?qū)嶓w
/成功或重定向響應(yīng),客戶端建立一個或多個并聯(lián)連接到對端,將試圖重用現(xiàn)有的連接,以減少開銷。
/*會話和連接初始化流程
(1)打開一個會話到遠(yuǎn)程資源
--例如“remote-ip:port/resource-name”
(2)服務(wù)器端回應(yīng),接受,拒絕或重定向
--用“重定向”負(fù)載平衡或遷移資源穿過整個集群(多個節(jié)點(diǎn)或進(jìn)程)
--服務(wù)器提供一個portals列表(IPs+Ports)
--每個portal識別port(IP),然后CPU/Thread去訪問
--服務(wù)器基于round/robin,Hash或者custom logic,可以加載平衡通信通過多個ports/cores
--建立連接(S)和發(fā)送/接收郵消息
--可以有多個連接(例如每個客戶端線程1個)
--如果連接已經(jīng)提供給遠(yuǎn)程進(jìn)程,可重用
--故障/變化上的重建或遷移連接

8. 高級別傳輸流程 - 異步請求/響應(yīng)模型(Transaction Delivery API Model)

Accelio提供一個RPC-like的請求/回應(yīng)事務(wù)模式,或可靠消息發(fā)送/接收模式。

在事務(wù)模式中,發(fā)起方發(fā)送一個請求,它包含專用應(yīng)用程序的頭和指向輸入與輸出數(shù)據(jù)緩沖區(qū)的指針,允許零拷貝操作和RDMA。

當(dāng)請求到達(dá)接收端時,它觸發(fā)一個回調(diào)通知,基于該接收的應(yīng)用程序處理該事務(wù)。當(dāng)在接收端完成該處理時,它以返回的狀態(tài)和數(shù)據(jù)來發(fā)送響應(yīng)。服務(wù)器端可以異步操作,并發(fā)出響應(yīng)在其方便的時候,也就是,當(dāng)所返回的數(shù)據(jù)是可用的。
發(fā)起方可以請求消息到達(dá)確認(rèn)。在這樣的情況下,接收方接受該消息之后,一個確認(rèn)消息返回到發(fā)起方。該確認(rèn)消息可用于阻擋/同步操作和消息跟蹤。

響應(yīng)到達(dá)時,發(fā)起方被通知。在這個時候,發(fā)起方的數(shù)據(jù)緩沖區(qū)包含返回的數(shù)據(jù),并且回叫應(yīng)答指向原始請求。
如果傳輸失敗,同樣的傳輸被重新傳輸?shù)揭鸦謴?fù)或備用的連接上。

發(fā)起方可以要求中止/取消某范圍內(nèi)的消息(例如,請求超時)。接收方試圖中止操作(如果不執(zhí)行他們),并以成功或失敗來反應(yīng)。無論哪種方式,相關(guān)的響應(yīng)不返回到發(fā)起方。注意,請求可以通過客戶端(無源)或服務(wù)器(有源)端發(fā)出。

[RDMA] 高性能異步的消息傳遞和RPC :Accelio,Ceph專欄,ceph

發(fā)送/接收操作遵循相似的流程去請求/響應(yīng),唯獨(dú)沒有響應(yīng)消息。消息從發(fā)起方發(fā)送,引發(fā)回調(diào)到接收端,使用可選的確認(rèn)通知。

9. 本地多線程(多進(jìn)程)支持

對于客戶端和服務(wù)器端,Accelio支持全并行和多線程操作
--應(yīng)用程序使用單個CPU核心/線程的時候的性能可以被限制
--當(dāng)多個線程在使用同一個網(wǎng)絡(luò)資源,需要復(fù)雜的狀態(tài)管理和鎖定,這樣會增加應(yīng)用程序的開銷,并限制其性能和可伸縮性
--Accelio支持全并行為客戶端和服務(wù)器
**每個線程可以被相關(guān)聯(lián)有獨(dú)立的硬件資源(QP的&個CQ)和事件循環(huán),從而無需鎖定,并允許最大的并行
**每個會話可以由多個并聯(lián)連接(每個關(guān)聯(lián)使用不同的CPU線程)組成
**服務(wù)器端可以公開多個portal(IP:port)為相同的資源/服務(wù),每個port可以由不同的CPU線程和事件循環(huán)提供服務(wù)。

如下圖所示可以直觀Accelio的多線程支持

[RDMA] 高性能異步的消息傳遞和RPC :Accelio,Ceph專欄,ceph

10. 內(nèi)存管理

--Accelio管理2種類型緩沖區(qū)
**發(fā)送/接收緩沖環(huán)的頭和小數(shù)據(jù)(通常4-8KB每個)
**大的緩沖區(qū)為大型的IOs和RDMA

--大緩沖區(qū)被應(yīng)用程序的庫來分配和控制
--應(yīng)用控制緩沖區(qū):
**需要預(yù)注冊內(nèi)存緩沖區(qū)(使用reg_mr),并保證零拷貝
--庫控制緩沖區(qū)
**可能會在客戶端上有一個copy
**接收端零拷貝(應(yīng)用程序?qū)⒌玫揭粋€指向接收緩沖區(qū))
**當(dāng)做完時,請求應(yīng)用程序來釋放緩沖區(qū)(用release_msg)

11. Accelio中的一些主要函數(shù)調(diào)用

Functionn Description
ctx_create/destroy Open thread context helping accelio to partition data without locks

ctx_run/stop Run the event loop in the context
ctx_get_poll_params Return Accelio’s single file descriptor to add to external loop
session_create/destroy Create/destroy a session to a remote peer
connect/disconnect Open/Close a connection with a remote server/portal
bind/unbind Bind/unbind a server portal with a URL (protocol:ip:port)
accept Accept incoming connection (server side)
reject Reject incoming connection (server side)
redirect Redirect a connection to a different node or portals or process
send_request/response Send a request/response message
send/recv_msg Send/receive memory buffer (like sockets send/recv)
release_msg Release message buffers
reg_mr/dereg_mr Register/deregister application buffers for app controlled RDMA

12. 異步事件處理

高性能的應(yīng)用程序使用異步API來進(jìn)行多個操作,并利用多種資源并行。
?Accelio以下面的方式處理異步事件:
1,放置一個回調(diào)在事件循環(huán),該事件循環(huán)結(jié)合來自多個資源的事件。
2,當(dāng)一個事件,發(fā)出的一組操作,諸如從網(wǎng)絡(luò)接收的消息和寫入到磁盤。
?Accelio內(nèi)置了epoll的支持。應(yīng)用程序提供的事件循環(huán)是可用的。
?對于最低的消息延遲,Accelio提供了優(yōu)化事件處理,當(dāng)一個事件循環(huán)處于空閑狀態(tài)(一個預(yù)定義的時間)時,其會結(jié)合忙等待池。

[RDMA] 高性能異步的消息傳遞和RPC :Accelio,Ceph專欄,ceph

13. Accelio概述與總結(jié)

Accelio是一個開源的高性能,異步,可靠消息傳遞和遠(yuǎn)程過程調(diào)用(RPC)的庫。對于遠(yuǎn)程直接內(nèi)存訪問(RDMA),TCP / IP和共享內(nèi)存, Accelio優(yōu)化硬件加速。 Accelio最大化消息和CPU并行性,同時最大限度地降低CPU的爭用和鎖定。并行和異步體系結(jié)構(gòu),無鎖定設(shè)計(jì)和零數(shù)據(jù)復(fù)制機(jī)制,提供每秒無與倫比的傳輸和帶寬性能,以及更低的延遲和CPU開銷。 Accelio保證終端到終端的事務(wù)傳遞和執(zhí)行力,它支持事務(wù)請求 - 應(yīng)答的通信模型。

Accelio通過提供內(nèi)置的多路徑,實(shí)時會話重定向/遷移和集群服務(wù)或存儲,解決了擴(kuò)展性和虛擬化環(huán)境的挑戰(zhàn)。管理作為一種模塊化的開源項(xiàng)目,Accelio無縫地延伸到新的功能,實(shí)現(xiàn)傳輸和服務(wù)。
libxio(又名庫accelio)是一個位于RDMA之上的輕量級消息傳遞庫。該庫為零拷貝消息傳遞和無鎖定可擴(kuò)展性,提供了異步消息傳遞設(shè)計(jì)。

Accelio是一種創(chuàng)新的API,它解決了一些現(xiàn)代計(jì)算機(jī),網(wǎng)絡(luò)和存儲系統(tǒng)主要挑戰(zhàn),如:
?有效地利用多內(nèi)核
?強(qiáng)大的橫向擴(kuò)展
?降低硬件和軟件堆棧開銷
?減少通信開銷和延遲

Accelio提供了一個強(qiáng)大的,靈活的通信和消息傳遞層,從而使得應(yīng)用程序擴(kuò)展和中間件快速發(fā)展。它能夠整合性能,可用性,管理和安全功能于一體的實(shí)現(xiàn),可用于多種應(yīng)用。工作促進(jìn)了Accelio開源社區(qū),供應(yīng)商可以專注于自己的應(yīng)用程序的核心附加價值,與開發(fā)者在一個更大的社區(qū)分享他們的實(shí)現(xiàn)和體驗(yàn)。

這個庫已經(jīng)停止開發(fā)了,在github主頁的issue 部分開發(fā)者說由于公司中心轉(zhuǎn)移,這個庫不開發(fā)了,建議用別的庫。文章來源地址http://www.zghlxwxcb.cn/news/detail-657010.html

到了這里,關(guān)于[RDMA] 高性能異步的消息傳遞和RPC :Accelio的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • System.Threading.Channels 高性能異步隊(duì)列

    System.Threading.Channels 是.NET Core 3.0 后推出的新的集合類型, 具有異步API,高性能,線程安全等特點(diǎn),它提供一個異步數(shù)據(jù)集合,可用于生產(chǎn)者和消費(fèi)者之前的數(shù)據(jù)異步傳遞。 它提供如下方法: BoundedChannelOptions Provides options that control the behavior of bounded ChannelT instances. 提供通道的行

    2024年01月24日
    瀏覽(29)
  • Simple RPC - 02 通用高性能序列化和反序列化設(shè)計(jì)與實(shí)現(xiàn)

    Simple RPC - 02 通用高性能序列化和反序列化設(shè)計(jì)與實(shí)現(xiàn)

    網(wǎng)絡(luò)傳輸和序列化這兩部分的功能相對來說是非常通用并且獨(dú)立的,在設(shè)計(jì)的時候,只要能做到比較好的抽象,這兩部的實(shí)現(xiàn),它的通用性是非常強(qiáng)的。不僅可以用于 RPC 框架中,同樣可以直接拿去用于實(shí)現(xiàn)消息隊(duì)列,或者其他需要互相通信的分布式系統(tǒng)中。 我們先來實(shí)現(xiàn)序

    2024年02月08日
    瀏覽(16)
  • 高性能消息中間件 RabbitMQ

    高性能消息中間件 RabbitMQ

    消息隊(duì)列 MQ全稱Message Queue(消息隊(duì)列),是在消息的傳輸過程中保存消息的容器。多用于系統(tǒng)之間的 異步通信 。 同步通信相當(dāng)于兩個人當(dāng)面對話,你一言我一語。必須及時回復(fù): 異步通信相當(dāng)于通過第三方轉(zhuǎn)述對話,可能有消息的延遲,但不需要二人時刻保持聯(lián)系。 消息

    2024年02月11日
    瀏覽(32)
  • 深入了解 RabbitMQ:高性能消息中間件

    深入了解 RabbitMQ:高性能消息中間件

    在現(xiàn)代分布式系統(tǒng)中,消息隊(duì)列成為了實(shí)現(xiàn)系統(tǒng)間異步通信、削峰填谷以及解耦組件的重要工具。而RabbitMQ作為一個高效可靠的消息隊(duì)列解決方案,已經(jīng)成為許多企業(yè)廣泛采用的選擇。本文將介紹RabbitMQ的基本概念、主要特性以及常見應(yīng)用場景。 RabbitMQ 是一個開源的高性能、

    2024年02月08日
    瀏覽(32)
  • 【消息隊(duì)列】Kafka如何實(shí)現(xiàn)高性能IO

    【消息隊(duì)列】Kafka如何實(shí)現(xiàn)高性能IO

    我們直到Kafka是一個自稱高性能的消息隊(duì)列引擎,一般來說對于中間件的設(shè)計(jì)需要從計(jì)算、存儲、網(wǎng)絡(luò)三方面進(jìn)行下手,而消息從產(chǎn)生到消費(fèi),也會經(jīng)歷多個流程,比如在生產(chǎn)者端采用異步同步方式發(fā)送,采用高效的壓縮算法,高效的序列化方式,以及網(wǎng)絡(luò)IO等。那么Kafka主要

    2023年04月13日
    瀏覽(27)
  • 深入詳解高性能消息隊(duì)列中間件 RabbitMQ

    深入詳解高性能消息隊(duì)列中間件 RabbitMQ

    ? 目錄 1、引言 2、什么是 RabbitMQ ? 3、RabbitMQ 優(yōu)勢 4、RabbitMQ 整體架構(gòu)剖析 4.1、發(fā)送消息流程 4.2、消費(fèi)消息流程 5、RabbitMQ 應(yīng)用 5.1、廣播 5.2、RPC VC++常用功能開發(fā)匯總(專欄文章列表,歡迎訂閱,持續(xù)更新...) https://blog.csdn.net/chenlycly/article/details/124272585 C++軟件異常排查從入

    2024年02月05日
    瀏覽(97)
  • Kafka 最佳實(shí)踐:構(gòu)建可靠、高性能的分布式消息系統(tǒng)

    Kafka 最佳實(shí)踐:構(gòu)建可靠、高性能的分布式消息系統(tǒng)

    Apache Kafka 是一個強(qiáng)大的分布式消息系統(tǒng),被廣泛應(yīng)用于實(shí)時數(shù)據(jù)流處理和事件驅(qū)動架構(gòu)。為了充分發(fā)揮 Kafka 的優(yōu)勢,需要遵循一些最佳實(shí)踐,確保系統(tǒng)在高負(fù)載下穩(wěn)定運(yùn)行,數(shù)據(jù)可靠傳遞。本文將深入探討 Kafka 的一些最佳實(shí)踐,并提供豐富的示例代碼,幫助讀者更好地應(yīng)用

    2024年02月03日
    瀏覽(43)
  • 解析RocketMQ:高性能分布式消息隊(duì)列的原理與應(yīng)用

    什么是消息隊(duì)列 消息隊(duì)列是一種消息傳遞機(jī)制,用于在應(yīng)用程序和系統(tǒng)之間傳遞消息,實(shí)現(xiàn)解耦和異步通信。它通過將消息發(fā)送到一個中間代理(消息隊(duì)列),然后由消費(fèi)者從該隊(duì)列中獲取消息并處理。 RocketMQ簡介 RocketMQ是阿里巴巴開源的一款高性能分布式消息隊(duì)列系統(tǒng)。它

    2024年02月14日
    瀏覽(26)
  • 基于 Redis 實(shí)現(xiàn)高性能、低延遲的延時消息的方案演進(jìn)

    基于 Redis 實(shí)現(xiàn)高性能、低延遲的延時消息的方案演進(jìn)

    ??歡迎來系統(tǒng)設(shè)計(jì)專欄:基于 Redis 實(shí)現(xiàn)高性能、低延遲的延時消息的方案演進(jìn) ??其他專欄:java面試?數(shù)據(jù)結(jié)構(gòu)?源碼解讀?故障分析 ??作者簡介:大家好,我是小徐?? ??博客首頁:CSDN主頁 小徐的博客 ??每日一句: 好學(xué)而不勤非真好學(xué)者 ?? 歡迎大家關(guān)注! ?? 隨著

    2024年01月22日
    瀏覽(21)
  • [RocketMQ] Broker asyncPutMessage處理消息以及存儲的高性能設(shè)計(jì)措施 (十一)

    [RocketMQ] Broker asyncPutMessage處理消息以及存儲的高性能設(shè)計(jì)措施 (十一)

    asyncPutMessage方法真正的用來存儲消息。 1.asyncPutMessage存儲普通消息 DefaultMessageStore#asyncPutMessage() checkStoreStatus, checkMessage, checkLmqMessage校驗(yàn)。 CommitLog#asyncPutMessage存儲消息, 更新耗時時間和失敗次數(shù)。 1.1 checkStoreStatus檢查存儲狀態(tài) 如果DefaultMessageStore是shutdown狀態(tài), 返回SERVICE_NOT_

    2024年02月13日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包