DDS系统架构及功能模块
一、DDS系统架构DDS通信中间件的体系架构以及在整个系统中所处的位置如下图所示主要包括操作系统/通信协议屏蔽层、RTPS互联互通层、发布订阅逻辑层、用户接口层。图1 DDS中间件体系架构图DDS数据分发中间件自底向上包括异构资源屏蔽层该层负责硬件平台/操作系统/通信资源的封装并统一提供给上层使用使得上层可以不用关心操作系统资源异构而专注发布订阅数据模型的逻辑设计。RTPS互联互通层该层通过实现RTPS协议以保证能与不同厂商DDS进行报文层面的互联互通。发布订阅逻辑层该层利用底层RTPS设计的报文以及报文行为来实现发布订阅数据模型定义并实现发布订阅数据模型中的实体及其功能。用户接口层该层实现DDS规范中定义的接口应用程序通过这些开发接口创建DDS实体、发布数据、订阅数据以及配置发布订阅的通信要求。DDS中间件采用发布/订阅机制图2 DDS中间件中的发布/订阅机制域时DDS支持的一个通信环境应用程序实现相互通信的前提是在同一个域内这一约束有利于隔离不同的应用程序。每个分布式系统可以由一个或多个域组成。数据写者是数据发布方的类型化的接入器数据写者将数据提供给数据发布方由发布者完成数据分发数据发布方根据自身的QoS策略和数据写者的QoS策略进行数据分发。数据读者负责获取订阅者接收到的数据并传递给应用程序的DCPS层。数据订阅方负责接收来自发布者的数据然后将接收到的数据传给相应的数据读者使应用程序获得它所感兴趣的数据。主题作为数据发布方和数据订阅方之间的基本连接点两个节点上的发布方主题和订阅方主题相匹配才能进行通信一个主题由主题名Topic Name和主题类型Topic Type组成。二、DDS功能模块DDS中间件遵循国际OMG组织制定的数据分发服务DDS规范将单点集成和即插即用的理念转化为可用平台采用发布订阅模式支持软件与硬件的松耦合、数据发布方和数据接收方的送耦合。DDS中间件分为用户接口层、发布订阅逻辑层、RTPS互联互通层和异构资源屏蔽层。用户接口层用户接口层定义了一套标准接口如图所示分布在五个模块中图3 订阅/发布接口模块定义基础模块定义由其他模块精炼的接口提供两种与中间件交互的方式即WaitSet的同步模式以及Listener的异步模式。主题模块包含Topic接口即应用定义Topic对象以及关联相应QoS策略所需要的所有数据结构及接口。发布模块包含Publisher、DataWriter接口即发布端所需要的所有数据结构及接口。订阅模块包含Subscriber、DataReader、DataReaderListener接口即订阅端所需要的全部数据结构及接口。Domain模块包含DomainParticipant接口作为服务的入口点及多个实体的工厂并作为其他组成服务对象的容器。2.发布订阅逻辑层由DDS实现全局数据空间的概念按照逻辑上的数据类型-主题来组织标识系统中的所有数据发布者和订阅者在该全局空间中分别发布和订阅自己需要的数据类型-主题通过中间件处理后完成数据分发。在该模式中数据并非存在于同一存储的地址空间中而是仅仅存在于那些对它感兴趣的应用程序的本地缓存中。图4 DDS数据传递过程上图为DDS中数据传递的过程主要包括以下实体域参与者DomainParticipant、发布者Publisher、数据写者DataWriter、订阅者Subscriber、数据读者DataReader、数据对象标识Topic。Publisher是一个负责分发数据的实体可以发布不同类型的数据应用程序通过DataWriter的操作来写数据。每一个Publisher都有一个关联的DataWriter当关联的数据对象有了新的值通过写操作通知中间件Publisher负责发布DataWriter描述的数据并根据用户配置的QoS来决定如何发送数据并执行发送操作。Subscriber负责接收并分发不同类型的数据应用程序使用主题化类型、主题名称化的DataReader来获取接收到的数据。Topic包含名称系统中唯一、数据类型通过Topic使空间和时间上松耦合的发布者和订阅者之间产生关联。这种订阅/发布数据模型不需要系统中其他应用程序的信息包括存在性以及位置等信息以实现软硬件的解耦。DDS支持多种通信特征并提供接口通过丰富的QoS策略让应用程序来定制DDS通信实体所需的通信特征的组合。图5 Qos策略的作用如上图所示QoS策略将精细化地控制数据他在全局数据空间的生命周期、资源使用量以及数据传输的行为等。3.RTPS互联互通层RTPS层包含四个模块RTPS结构定义模块、RTPS报文定义模块、RTPS行为模块和RTPS发现模块。RTPS结构定义模块定义了通信端点RTPS报文定义模块定义了这些端点可以交换的消息集合RTPS行为定义模块定义了合法的交互消息交换的集合以及这些交互如何影响通信端点的状态RTPS发现模块定义了实体如何自动地被发现以及配置。图6 RTPS的组成4.异构资源屏蔽层异构资源屏蔽层负责对DDS系统使用到的硬件平台/操作系统/通信协议进行封装并统一提供给上层使用使得上层可以不用关心操作系统资源异构而专注发布订阅数据模型的逻辑设计。同时屏蔽层的存在也增加了DDS的可定制性以及可扩展性。图7 异构资源屏蔽层异构资源屏蔽层的模块划分如上图所示包含两个模块操作系统资源屏蔽模块该模块主要包括线程/任务封装子模块、同步资源封装子模块、内存访问封装子模块、IO封装子模块对异构操作系统银河麒麟桌面版、银河麒麟服务器版的上述系统资源访问接口进行封装。网络资源屏蔽模块主要包括已经实现的以太网封装子模块、反射内存网络子模块以及TSN仿真网络子模块。1.线程/任务封装子模块DDS利用该子模块封装不同操作系统银河麒麟桌面版、银河麒麟服务器版下的进程、线程任务资源包括资源创建、销毁、标识、优先级设置等。根据实际提供的操作系统在进程/线程任务属性等标识来实现该模块下的创建、销毁等子模块定义的接口。2.同步资源封装子模块对于不同操作系统银河麒麟桌面版、银河麒麟服务器版多线程、多任务的进程模块需要利用同步资源包括线程锁、信号量等对共享资源进行访问同步以保证系统状态的一致性。DDS利用该子模块来屏蔽不同平台的差异定义统一的创建、销毁、获取资源、释放资源、属性配置的接口。需要针对目标操作系统的同步资源的特征进行分析并选取合适的同步资源使用。3.内存访问封装子模块DDS利用该子模块封装不同操作系统银河麒麟桌面版、银河麒麟服务器版的堆栈资源的访问以及整个DDS的内存管理。DDS中间件封装了2种内存管理方式分别为动态内存管理和静态内存管理。动态内存管理提供了更加灵活的使用方式可以更有效地利用系统资源。静态内存管理提供了对内存全局的监控和管理避免用户进行不规范的内存访问或占满内存导致系统发生卡死、崩溃等故障。4.异构网络屏蔽模块异构网络屏蔽模块抽象出网络通信原语并进一步抽象为通用的网络通信接口。用不同的网络通信方式实现这些接口形成子模块如以太网通信子模块、反射内存网络通信子模块以及TSN仿真网络子模块等。DDS数据如何监控DDS数据监控工具用于监控网络中所有部署了DDS应用程序的节点的通信状况。该工具检测整个网络中所有DDS系统的可用信息并将获取到的信息显示到一个人机交互界面上供用户查阅。用户通过此工具可以直观地了解到当前网络中节点的联通情况并且可以查看每个节点中的详细的版本状态、发布/订阅信息以及QoS配置等属性。只有开启了可监控状态的节点的信息才能被DDS数据监控工具获取到。DDS数据监控工具主要分为节点信息交互模块和用户界面模块整体布局如下图图8 DDS 监控界面布局DDS节点交互模块节点信息交互模块负责获取各个DDS节点通过Monitor接口发送的Monitor数据报文并解析为具体的属性值提供给上层用户界面进行显示。DDS数据监控工具启动后可以指定域号获取该域中所有节点的信息此时监控工具会向所有开启了监控状态的DDS节点发送报文通知这些节点向监控工具发送信息。每一次开启/取消监控的动作都会发送特殊报文通知DDS节点是否需要继续向监控工具发送状态报文。当DDS节点开启监控状态时每一次状态的变更发布/订阅数据更新、节点上下线等都会通过Monitor接口向DDS数据监控工具发送一条报文DDS数据监控工具解析该报文后将结果提交给上层界面。