FastDDS
FastDDS
文章目录
- FastDDS
-
- 什么是 DDS?
-
- DDS 的核心思想
- DDS 的关键特性
- FastDDS
-
- 构建FastDDS
-
- 构建FastCDR
- 构建foonathan/memory
- 构建tinyxml2
- 构建Asio
- 构建FastDDS
什么是 DDS?
DDS 的全称是 Data Distribution Service for Real-Time Systems,即“实时系统的数据分发服务”。它是由对象管理组织制定的一个规范,但它本身不是一个具体的实现。
DDS 规范定义了一套用于实时分布式系统中数据交换的API、行为和 QoS (服务质量) 策略。它解决了分布式系统中最核心的通信问题。
DDS 的核心思想
DDS 的核心是以数据为中心的发布/订阅模型。
- 发布者:数据的生产者。
- 订阅者:数据的消费者。
- 主题:数据流的“标签”,用于匹配发布者和订阅者。
DDS 的关键特性
- 全局数据空间:所有参与的应用程序共享一个逻辑上的“数据总线”,任何应用都可以向其中发布数据或从中订阅数据。
- 解耦:
- 空间解耦:应用不需要知道对方的 IP 地址或位置。
- 时间解耦:应用不需要同时运行。
- 同步解耦:应用不会因为等待数据而阻塞。
- 丰富的 QoS (Quality of Service):这是 DDS 最强大的地方。规范定义了超过 20 种 QoS 策略,让你可以精确控制数据传输的各个方面,如可靠性、延迟、持久性、资源限制等,以满足不同场景的需求(例如,视频流可以“尽力而为”,而指令必须是“可靠”的)。
- 可扩展性和互操作性:DDS 规范保证了不同厂商的 DDS 实现之间可以互相通信。
总结:DDS 是一个“是什么”和“应该怎么做”的规范,它描述了一个理想的、功能完备的通信中间件应该是什么样子。
FastDDS
FastDDS 是 eProsima 公司对 DDS 规范的一个具体、开源的 C++ 实现。
构建FastDDS
构建FastCDR
- Fast-CDR Releases: 负责序列化。
# 下载Fast-CDR
download "https://github.com/eProsima/Fast-CDR/archive/refs/tags/v2.3.2.tar.gz"# 测试压缩包
tar -tvf Fast-CDR-*.tar.gz# 解压
tar -xvf Fast-CDR-*.tar.gz
mv ./Fast-CDR-*/ ./Fast-CDR/# 构建