DDS

RTPS

RTPS (Real-Time Publish-Subscribe) 是一种针对实时系统的发布-订阅协议,是 OMG (Object Management Group) 提出的 DDS (Data Distribution Service) 标准的基础。RTPS 协议提供了一种标准化的机制,使得不同供应商的 DDS 实现可以互相通信。RTPS 通常使用 UDP 或者共享内存等协议实现,具有高性能、低延迟、可扩展性强等特点。RTPS 协议提供了数据发现、数据交换、数据传输等功能,支持消息的可靠性和实时性需求。

DIRL与DCPS

DIRL

DIRL(Discovery Interoperability Reference Layer),意为“发现互操作性参考层”。它定义了DDS实现之间进行相互操作时必须遵守的标准协议。在这个参考层之上,DDS的实现可以自由地实现其它功能,如安全性、可靠性、质量控制等。DIRL通过定义一些标准协议,保证了DDS实现之间的互操作性和相互发现。

DIRL包含了两个部分:

  • 发现协议:用于在DDS实现之间进行相互发现,以便进行交互操作。DIRL中定义了一种基于UDP协议的发现协议,它使用组播和单播消息传递,以确保DDS实现之间可以相互发现。
  • 互操作性协议:用于DDS实现之间进行相互通信。DIRL中定义了一种基于RTPS(Real-time Publish-Subscribe)协议的互操作性协议,它是一种开放标准协议,可以保证DDS实现之间的互操作性。RTPS协议是一种应用层协议,它使用UDP协议进行消息传输,具有灵活、可扩展、可靠等特点。

DCPS

DCPS(Data-Centric Publish-Subscribe)是DDS的核心组件之一。它定义了一种基于数据中心的发布订阅模型,为DDS提供了强大的数据管理和消息传递功能。DCPS将发布者和订阅者之间的通信转化为一个基于主题的数据中心,通过使用一组特定的数据类型和传输协议,从而使DDS具有高效的通信、可靠性、实时性和可伸缩性。

DCPS提供了一些重要的概念,如主题、数据写入器、数据读取器、数据类型、QoS等。其中,主题定义了发布和订阅的数据类型和语义,数据写入器负责将数据写入DDS网络,数据读取器从DDS网络订阅数据,并按照相应的规则将数据传递给应用程序。数据类型指定了数据格式和结构,而QoS定义了消息传递的一些属性,如可靠性、持久性、优先级等。

DCPS主要包括以下内容:

  • Publisher:发布者,负责将数据发布到DDS网络中。
  • Subscriber:订阅者,负责从DDS网络中订阅数据。
  • Topic:主题,是DDS中定义数据的抽象描述,订阅者可以通过订阅特定主题来获取数据。
  • Data Writer:数据写入器,是一个与Publisher相关的对象,用于将数据写入到DDS网络中。
  • Data Reader:数据阅读器,是一个与Subscriber相关的对象,用于从DDS网络中读取数据。
  • Data Type:数据类型,是DDS中定义数据格式的方式,可以通过IDL(Interface Definition Language)来定义。
  • Quality of Service(QoS):服务质量,指定了Publisher和Subscriber的要求和约束条件,如数据传输速率、可靠性、延迟等。
    在这里插入图片描述

OpenDDS与FastDDS的比较

OpenDDS


OpenDDS是一个开源的分布式数据服务(DDS)实现,它基于OMG的DDS规范,并提供了高效的、可扩展的和可配置的实现。OpenDDS提供了多种平台和语言的支持,可以用于开发分布式应用程序,特别是需要高效、可靠的数据交换和实时通信的应用程序。

FastDDS


FastDDS是一个高性能、分布式、实时数据传输系统,实现了OMG的Data Distribution Service (DDS)标准,它由eprosima公司开发并开源发布。

两者比较

OpenDDS和FastDDS都是基于DDS标准实现的开源中间件,在性能方面,FastDDS采用了多线程和零拷贝技术,具有相对较高的性能,可以支持10万级别的Qos策略,而在支持和社区生态方面,如第三方工具和库,FastDDS则略逊OpenDDS一筹。在扩展和定制上,由于OpenDDS采用了Monolithic架构,FastDDS采用了Modular架构,所以FastDDS相对OpenDDS来说更容易扩展和定制。一般来说,OpenDDS在一些大型企业和机构中使用较为广泛,而FastDDS则更多地应用于一些小型和中型的项目中。(并不绝对)

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐