美文网首页
一文读懂什么是DDS

一文读懂什么是DDS

作者: 迪捷软件 | 来源:发表于2021-12-13 09:46 被阅读0次

    DDS(Data Distribution Service) 数据分发服务

    什么是DDS

    数据分发服务(DDS™)是一个由对象管理组(OMG)发布的以数据为中心的中间件协议和API标准。采用分布式发布/订阅体系架构,以中间件的形式提供通信服务,强调以数据为中心。DDS中间件是一个软件层,从操作系统、网络传输和底层数据格式的细节中抽象出应用。相同的概念和api提供给不同的编成语言,使得应用在不同的操作系统、编成语言和处理体系架构之间交换信息。底层细节包括数据传输格式、发现、连接、可靠性和、协议、Qos策略等由中间件来管理。

    为什么要使用DDS

    DDS集成系统中的各个组件,提供低延迟数据连接、高可靠性以及高可扩展体系结构,以适应商业级物联网(IoT)应用程序的需求。

    基本概念

    全局数据空间

    DDS把所有的本地存储的数据称作全局数据空间(domain)。对于应用来说,全局数据空间看上去像通过api来访问内存一样。你使用时,就像使用本地存储一样。事实上,DDS发送消息来更新远端节点的相应存储值。这样,在使用时,如同本地存储。

    发布者

    发布者(publisher)设置发布的主题(topic),数据读者(subscriber)订阅感兴趣的主题。publisher作为发布者角色,至少包含一个DataWriter,并负责创建,删除和管理datawriter。同样,subscriber作为订阅者,至少与一个datareader关联,并负责发布数据,数据发布者通过调用datawriter的write函数发布数据,但数据不会立刻被送出,实际的消息产生是通过publisher和Qos综合控制的。datareader负责订阅数据,订阅方式可采用异步方式(listener),同步方式和非阻塞三种。

    // Create the subscriber    DDS::Subscriber_var sub =      participant->create_subscriber(SUBSCRIBER_QOS_DEFAULT,0,OpenDDS::DCPS::DEFAULT_STATUS_MASK);// No listener required                                            if(!sub) {std::cerr<<"Failed to create_subscriber."<

    QoS策略

    QoS(Quality of Service)服务质量:指一个网络能够利用各种基础技术,为指定的网络通信提供更好的服务能力,是网络的一种安全机制, 是用来解决网络延迟和阻塞等问题的一种技术。

    在一个真实系统中,并不是所有其他端点都需要另一个节点本地存储中的所有内容 ,DDS在提供最基础的发布订阅功能之外,还可以根据不同使用场景向用户提供满足对应需求的服务。QoS有可靠性、持久性、紧迫性等,可单独或组合使用。

    例如“尽力而为”模式(BESTEFFORTRELIABILITYQOS):

    对样本的可靠性没有任何保证,在某些情况下可能会丢弃样本。(通俗解释:在外界环境不稳定的时候,可能会导致丢包,但是DDS为了保证整体数据分发效率,不会重新分发丢包的数据)

    “可靠”模式(RELIABLERELIABILITY_QOS):

    该服务最终应将所有值传递给合格的数据读取器。(通俗解释:万一出现丢包现象,会重新分发数据,保证订阅者能够收到)重新分发数据表示:修复错误并根据需要重新传输数据样本

    数据读者和主题的此策略的默认值为“尽力而为”,而数据写者的默认值为“可靠”。在创建数据写者和数据读者之间的关联时会考虑此策略。 关联双方的值必须兼容才能创建关联。 数据写入器的可靠性类型必须大于或等于数据读者的值。

    idl文件

    IDL(接口描述语言)是一种使用类似C ++风格定义结构的文本文件。该文件包含必须交换的数据结构。IDL通常用于远程调用软件。在这种情况下,一般是由远程客户终端调用不同操作系统上的对象组件,并且这些对象组件可能是由不同计算机语言编写的。IDL创建起了两个不同操作系统间通信的桥梁。所以使用同一份idl文件来统一接口的数据类型。

    示例:TopicData.idl

    moduleTopicData{#pragmaDCPS_DATA_TYPE"TopicData::Message"#pragmaDCPS_DATA_KEY"TopicData::Message id"structMessage{stringid;intposX;intposY;    };}

    SkyEye天目全数字实时仿真软件

    由本公司自主开发的SkyEye(天目全数字实时仿真软件)目前支持主流的嵌入式硬件平台。DDS是一套工业物联网成熟的数据连接标准,开发者可以在SkyEye上测试DDS通信代码。SkyEye目前可以运行主流的操作系统,此外还能适配国内自主研发的操作系统天脉。通过利用基于LLVM的动态二进制翻译技术,使虚拟处理器在典型的桌面计算机上运行速度可以达到2000MIPS以上。

    参考文献

    omg组织官网: 

    https://www.omg.org/dds-directory/

    OpenDDS  github地址:

    https://github.com/objectcomputing/OpenDDS

    openDDS 使用文档:

    http://download.ociweb.com/OpenDDS/OpenDDS-latest.pdf

    相关文章

      网友评论

          本文标题:一文读懂什么是DDS

          本文链接:https://www.haomeiwen.com/subject/egkjfrtx.html