C++高性能開源發佈訂閱框架eProsima Fast RTPS

數據發佈/訂閱概述

消息中間件包括點到點、消息隊列和發佈/訂閱三種工作模式。點到點模式具有很強的時間和空間耦合性,使得通信靈活性受到很大限制。消息隊列模式通過一個消息隊列來傳遞消息,解決了通信雙方時間和空間松耦合的問題,但不能實現消息消費者通信的異步,並且還存在服務器瓶頸和單點失效的問題,可靠性得不到保障。發佈/訂閱模型中發佈者和訂閱者通過主題相關聯,雙方不必知道對方在何處.也不必同時在線,實現了通信雙方時間、空間和數據通信的多維松耦合。

DDS(Data Distribution Service)數據分發服務技術最早應用於美國海軍,用於解決艦船複雜網絡環境中大量軟件升級的兼容性問題,目前已經成為美國國防部的強制標準。2003年DDS被OMG組織接受,併發布了專門為實時系統設計的數據分發/訂閱標準。DDS目前已經廣泛應用於國防、民航、工業控制等領域,成為分佈式實時系統中數據發佈/訂閱的標準解決方案。DDS技術是基於以數據為核心的設計思想提出的,定義了描述網絡環境下數據內容、交互行為和服務質量要求的標準。DDS以數據為核心的設計思想非常貼合如傳感器網絡、指揮信息網等應用場景,其提供的數據傳輸模型能夠很好地適應應用系統的開發需要。

在分佈式系統中,中間件是位於操作系統和應用程序之間的軟件層。它使系統的各個組件更容易通信和共享數據。它通過讓軟件開發人員專注於其應用程序的特定目的而不是在應用程序和系統之間傳遞信息的機制,簡化了分佈式系統的開發。

C++高性能開源發佈訂閱框架eProsima Fast RTPS

eProsima Fast RTPS概述

eProsima Fast RTPS 是eProsima公司對DDS協議(RTPS,實時發佈訂閱協議)的一種新的輕量級實現。eProsima Fast RTPS是一個高性能的發佈訂閱框架,使用基於發佈者/訂閱和數據主題的解耦模型在分佈式系統中共享數據。eProsima Fast RTPS速度驚人,在Windows和Linux中擊敗ZeroMQ和其他消息中間件等替代品。該框架使用接口定義語言(IDL)從主題定義生成發佈/訂閱代碼,允許開發人員專注於他的應用程序邏輯,而無需擔心網絡細節。

C++高性能開源發佈訂閱框架eProsima Fast RTPS

eProsima Fast RTPS 是免費開源軟件(Apache License 2.0),提供商業支持,並通過C++語言實現,包括DDS API,IDL支持和自動代碼生成。它可以在許多平臺(windows,linux,android,mac os等)中使用,並且完全符合最新的RTPS 2.2版本。

eProsima Fast RTPS的主要特點是高性能、多平臺、易使用、免費開源、商業支持、和完全符合OMG RTPS 2.2標準。性能數據包括延遲和吞吐量,其測試硬件平臺如下:

英特爾酷睿i3 @ 3.4GHz

4GB RAM

英特爾千兆網絡適配器,速率為1Gbps

eProsima Fast RTPS延遲

C++高性能開源發佈訂閱框架eProsima Fast RTPS

通過上圖可以觀察到,對於在16和512字節之間變化的消息大小,延遲在大約90-100μs內保持穩定。對於1024字節,可以觀察到延遲的小幅增加,儘管與消息大小的增量相比非常小。

eProsima Fast RTPS吞吐量

C++高性能開源發佈訂閱框架eProsima Fast RTPS

上圖清楚地顯示了吞吐量與消息大小的漸近行為。使用Fast RTPS實現獲得可持續的大吞吐量值。使用1024字節的消息獲得大於600MBits/sec的吞吐量值。當消息大小增加時,獲得的最大吞吐量值保持穩定在950MBits/sec左右,意味著Fast RTPS可以利用大約95%的可用帶寬。由於Fast RTPS直接在發佈者和訂閱者之間發送消息,而不需要任何集中式服務器,因此Fast RTPS不會對可傳輸的數據量施加任何限制,限制僅來自網絡適配器。

目前ROS2、百度阿波羅等著名的開源項目都採用Fast RTPS作為底層的消息通信中間件。

eProsima Fast RTPS安裝

https://github.com/eProsima/Fast-RTPS下載源碼包

Fast-RTPS-master.zip

編譯配置

./configure –-libdir=/usr/lib

配置完成後,只需運行此命令編譯並安裝庫

sudo make install


分享到:


相關文章: