1、什么是数据分发服务(DDS):
数据分发服务 (DDS) 是一种以数据为中心的通信协议,用于分布式软件应用程序通信。它描述了支持数据提供者和数据消费者之间通信的通信应用程序编程接口(API)和通信语义。
由于它是一个以数据为中心的发布订阅(DCPS)模型,因此在其实现中定义了三个关键应用程序实体:发布实体,定义信息生成对象及其属性;订阅实体,定义信息消费对象及其属性;和配置实体,定义作为主题传输的信息类型,并使用其服务质量(QoS)属性创建发布者和订阅者,确保上述实体的正确性能。
2、DCPS模型:
在DCPS模型中,为通信应用系统开发定义了四个基本元素:
- Publisher:它是 DCPS 实体,负责其实现的DataWriter的创建和配置。DataWriter是负责实际发布消息的实体。每个消息都会有一个分配的主题,消息将在该主题下发布。
- Subscriber:它是 DCPS 实体,负责接收在其订阅的主题下发布的数据。它为一个或多个DataReader对象提供服务,这些对象负责将新数据的可用性传达给应用程序。
- Topic:它是绑定发布和订阅的实体。它在 DDS 域中是唯一的。通过TopicDescription,它允许发布和订阅的数据类型的统一。
- Domain:这一概念用于链接属于一个或多个应用程序的所有发布者和订阅者,这些发布者和订阅者在不同主题下交换数据。这些参与域的单独应用程序称为DomainParticipant。DDS 域由域 ID 来标识。DomainParticipant定义域ID来指定其所属的DDS域。具有不同 ID 的两个 DomainParticipant 不知道彼此在网络中的存在。因此,可以创建多个通信渠道。这适用于涉及多个 DDS 应用程序的场景,它们各自的 DomainParticipants 相互通信,但这些应用程序不得相互干扰。域参与者充当其他 DCPS 实体的容器,充当 发布者、订阅者和主题实体的工厂,并在域中提供管理服务。
这些元素的关系如图所示:
3、DCPS模型的特点:
DCPS代表"Data-Centric Publish-Subscribe",是一种用于实现分布式系统通信的通信模型和协议。在DCPS中,数据是中心,发布者(Publishers)可以发布数据,订阅者(Subscribers)可以订阅数据,而中间件负责将数据从发布者传递给订阅者。这种模型适用于需要在分布式系统中高效地传递数据的场景,如实时数据分析、监控、控制系统等。
DCPS的一些关键特点包括:
- 发布者-订阅者模型:DCPS使用发布者-订阅者模型,发布者负责发布数据,订阅者负责订阅感兴趣的数据。
- 数据中心:DCPS强调数据的重要性,数据是通信的核心,订阅者会根据数据内容来决定是否接收。
- 实时性:DCPS通常设计用于实时系统,支持实时的数据传递和响应。
- 异步通讯:DCPS允许异步通信,发布者和订阅者之间的通信不需要即时的直接连接。
- 数据过滤和选择:订阅者可以根据自身的需求对数据进行过滤和选择,只订阅感兴趣的数据。
- 可靠性和QoS:DCPS通常提供一些质量 of 服务(QoS)选项,允许配置数据传递的可靠性、延迟等参数。
- 分布式系统支持:DCPS旨在支持分布式系统中多个节点之间的通信,适用于复杂的系统架构。
- 可扩展性:DCPS通常具备一定的可扩展性,可以在需要时扩展到更多的发布者和订阅者。
综上所述,DCPS是一种用于实现数据中心的发布-订阅通信模型,适用于需要实时、异步和分布式通信的应用场景,如控制系统、实时监测和分布式应用。
4、QoS:
QoS(Quality of Service,服务质量)是一种用于描述和控制通信系统性能和可靠性的概念。在计算机网络和分布式系统中,QoS用于指定和管理数据传输的各种参数和属性,以满足特定的性能需求和服务水平。QoS旨在确保在网络中传输的数据能够满足用户的期望,同时优化资源利用和网络拥塞。
以下是一些常见的QoS参数和属性:
- 可靠性(Reliability):衡量数据传输的可靠性程度。高可靠性意味着数据传输不容易丢失或损坏,适用于需要确保数据完整性的应用。
- 延迟(Latency):衡量数据从发送到接收所需的时间。低延迟通常适用于实时通信和交互式应用,如实时音视频通话。
- 带宽(Bandwidth):表示网络传输的数据速率。高带宽适用于需要传输大量数据的应用,如视频流和大文件传输。
- 吞吐量(Throughput):衡量网络传输的数据量,通常以单位时间内传输的数据量为指标。高吞吐量适用于需要高效处理大量数据的应用,如数据中心。
- 优先级(Priority):标识数据传输的优先级,允许高优先级的数据在网络中得到优先处理。优先级适用于需要确保重要数据传输的应用。
- 持久性(Persistence):指定数据的持久性需求,即数据是否需要被持久化保存。持久性适用于需要保留历史数据的应用,如日志记录。
- 失序(Ordering):确定数据传输的顺序是否需要得到保持。有些应用需要确保数据按照特定的顺序被传输和接收。
- 流量控制(Flow Control):控制数据传输速率,以避免网络拥塞。流量控制适用于确保网络资源合理分配的应用。
- 拥塞控制(Congestion Control):防止网络拥塞,通过适当地调整数据传输速率来保持网络的稳定性和性能。
QoS参数和属性的配置取决于应用的需求和系统的能力。在分布式系统中,例如DDS(Data Distribution Service),QoS可以用于定义数据传输的方式,以满足不同应用的实时性、可靠性和资源需求。
5、实时发布订阅协议(RTPS):
实时发布订阅协议(Real-Time Publish-Subscribe,缩写为RTPS)是用于实现实时通信的协议,是一种基于尽力而为传输的发布-订阅通信中间件,通常用于分布式系统和网络中。它是对象管理组织(OMG)的数据分发服务(DDS)标准的一部分,该标准旨在支持高效、实时的数据交换。
RTPS 提供了一种机制,使数据的发布者(数据源)可以向多个订阅者(数据接收方)异步地传输数据。这些数据可以是各种类型的信息,如传感器数据、控制命令、状态更新等。
在继承自 DDS 的 RTPS 的顶部,可以找到域,它定义了一个单独的通信平面。多个域可以同时独立共存。域包含任意数量的RTPSParticipants,即能够发送和接收数据的元素。为此,TPSParticipants 使用他们的Endpoints:
- RTPSWriter:能够发送数据的端点。
- RTPSReader:能够接收数据的端点。
RTPSParticipant 可以有任意数量的写入器和读取器端点。
通信围绕主题进行,主题定义和标记正在交换的数据。这些主题不属于特定参与者。参与者通过 RTPSWriter 对主题下发布的数据进行更改,并通过 RTPSReaders 接收与其订阅的主题关联的数据。通信单元称为Change
,它表示在 Topic 下写入的数据的更新。 RTPSReaders/RTPSWriters在其History上注册这些更改,History 是一种数据结构,用作最近更改的缓存。
在eProsima Fast DDS的默认配置中,当您通过 RTPSWriter 端点发布更改时,会在幕后执行以下步骤:
- 更改将添加到 RTPSWriter 的历史缓存中。
- RTPSWriter 将更改发送到它知道的任何 RTPSReaders。
- 接收数据后,RTPSReaders 使用新的更改更新其历史缓存。
但是,Fast DDS 支持多种配置,允许更改 RTPSWriters/RTPSReaders 的行为。RTPS 实体默认配置的修改意味着 RTPSWriter 和 RTPSReaders 之间数据交换流的更改。此外,通过选择服务质量 (QoS) 策略,可以通过多种方式影响这些历史缓存的管理方式,但通信循环保持不变。
6、RTPS 具有以下特点:
- 实时性: RTPS 旨在支持实时性要求,允许数据在发布后立即传送给订阅者,从而实现及时的数据交换。
- 分布式通信: RTPS 可用于连接分布在网络中不同位置的节点,使得数据的发布和订阅可以跨越不同的计算机和设备。
- 异步通信: 数据发布者和订阅者之间的通信是异步的,这意味着发布者不需要等待订阅者的响应,从而提高了系统的并发性和可伸缩性。
- 灵活性: RTPS 允许发布者和订阅者按照其需要定义和管理感兴趣的数据类型和主题,从而实现高度定制的数据交换。