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


分享到:


相關文章: