Page 248 - 《软件学报》2021年第6期
P. 248
1822 Journal of Software 软件学报 Vol.32, No.6, June 2021
后续的订阅者可顺利接收到此数据;否则,将数据发送给订阅者之后,将该数据删除;
• 订阅模块:订阅者首先需要创建一个数据读取者 DR j ,DR j 在它的全局数据空间的发布主题表中查询
相匹配的发布者,将订阅主题 T j 及 QoS 发送至该发布者的全局数据空间上;随后,DR j 变为阻塞状态.
当该发布者接收到 DR j 的订阅消息时,需将其订阅记录添加至全局数据空间的订阅主题表内,并查询
发布主题表中 T j 相对应的 Durablity 值:若其取值为 0,表示数据没有存入到发布数据缓冲区中,则表示
此次订阅失败;若 Durablity 取值为 1 时,说明在发布数据缓冲区中存有满足订阅条件的数据信息,然后
激活 DW i ,将所有符合条件的数据按照对应的 QoS 策略传输给订阅者;
• 全局数据空间模块:在全局数据空间模块中,包含发布主题表、订阅主题表、订阅失败表、发布数据
缓冲区.其中:发布主题表内保存了同一 DDS 域中所有节点的发布主题信息;订阅主题表保存了订阅
该节点的订阅信息.发布模块中的数据写入者和订阅模块中的数据读取者之间的联系通过主题实现,
并通过将名称、数据类型、与数据本身相关的 QoS 联系到一起,完成发布订阅之间的连接.订阅失败
表保存本节点订阅失败的历史记录,发布数据缓冲区保存了发布者发布且需要长期保存的数据.DDS
发布订阅模型将发布者可提供的数据资源状况及订阅者对数据资源的期待程度用 QoS 参数来描
述.DDS 中间件通过这些参数选择最符合通信双方 QoS 要求的传输方式来分发数据,既实现了数据传
输的实时性,也增加了通信的灵活性.以数据流作为整个平台的触发点和导向,实现数据的实时分发;
• 通信信道模块:通信信道负责数据发布者和数据订阅者之间的数据传输功能.在通信信道中,数据以
数据流的形式进行传输,数据流可以被视为一组有顺序、有起止和终止的数据序列.在数据传输中,由
于通信信道是不可靠的,可能会发生数据的丢失.为满足不同的通信需求,通过选择一定的 QoS 策略,
数据传输的性能可以被动态调整.
面向数据流 ROS2 的 DDS 发布订阅模型的模型图如图 3 所示.
Fig.3 DDS publish subscribe model
图 3 DDS 发布订阅模型