什么是DDS ?
工业物联网成熟的数据连接标准
OMG 数据分发服务 (DDS™) 是一个中间件协议和 API 标准,用于来自 Object Management Group® (OMG®) 的以数据为中心的连接。它将系统的组件集成在一起,提供业务和关键任务物联网 (IoT) 应用程序所需的低延迟数据连接、极高的可靠性和可扩展架构。
在分布式系统中,中间件是位于操作系统和应用程序之间的软件层。它使系统的各个组件能够更轻松地通信和共享数据。它让软件开发人员专注于其应用程序的特定用途,而不是在应用程序和系统之间传递信息的机制,从而简化了分布式系统的开发。
数据中心(Data Centricity)
有许多通信中间件标准和产品。DDS 具有独特的以数据为中心的特点,是工业物联网的理想选择。大多数中间件的工作原理是在应用程序和系统之间发送信息。以数据为中心可确保所有消息都包含应用程序理解其接收的数据所需的上下文信息。
以数据为中心的本质是DDS知道它存储什么数据并控制如何共享这些数据。使用传统的以消息为中心的中间件的程序员必须编写发送消息的代码。使用以数据为中心的中间件的程序员编写代码来指定如何以及何时共享数据,然后直接共享数据值。DDS 不是在应用程序(您的)代码中管理所有这些复杂性,而是直接为您实现受控、托管、安全的数据共享。
全局数据空间 (Global Data space)
从概念上讲,DDS 将本地数据存储称为“全局数据空间”。对于应用程序来说,全局数据空间看起来就像通过 API 访问的本地内存。您写入看起来像本地存储的内容。实际上,DDS 发送消息来更新远程节点上的相应存储。您从看起来像当地商店的地方阅读。
总而言之,本地存储给应用程序带来了可以访问整个全局数据空间的错觉。这只是一种幻觉;没有一个全球性的地方可以容纳所有数据。每个应用程序仅在本地存储其需要的内容,并且仅在需要时存储。DDS 处理动态数据;全局数据空间是一个虚拟概念,实际上只是本地存储的集合。每个应用程序,无论使用几乎任何语言,在任何系统上运行,都会以最佳的本机格式看到本地内存。全球数据空间可跨任何传输方式在嵌入式、移动和云应用程序之间共享数据,无论语言或系统如何,并且延迟极低。
服务质量(Quality of service)
数据还可以通过灵活的服务质量 (QoS) 规范进行共享,包括可靠性、系统运行状况(活跃性)甚至安全性。在真实的系统中,并非所有其他端点都需要本地商店中的所有商品。DDS 很聪明,只发送它需要的内容。如果消息并不总是到达预期目的地,中间件会在需要时实现可靠性。当系统发生变化时,中间件会动态地确定将哪些数据发送到哪里,并智能地将变化通知参与者。如果总数据量很大,DDS会智能过滤并仅发送每个端点真正需要的数据。当需要快速更新时,DDS 会发送多播消息来同时更新许多远程应用程序。随着数据格式的发展,DDS 跟踪系统各个部分使用的版本并自动翻译。对于安全关键型应用程序,DDS 控制访问、强制执行数据流路径并对运行中的数据进行加密。
当您在非常动态、要求严格且不可预测的环境中以极高的速度同时指定所有这些内容时,DDS 的真正威力就会显现出来。
动态发现(Dynamic Discovery)
DDS 提供发布者和订阅者的动态发现。动态发现使您的 DDS 应用程序可扩展。这意味着应用程序不必知道或配置通信端点,因为它们是由 DDS 自动发现的。这可以在运行时完成,而不必在设计或编译时完成,从而为 DDS 应用程序实现真正的“即插即用”。
这种动态发现比发现端点更进一步。DDS 将发现端点是否正在发布数据、订阅数据或两者。它将发现正在发布或订阅的数据的类型。它还将发现发布者提供的通信特征和订阅者请求的通信特征。在 DDS 参与者的动态发现和匹配过程中,所有这些属性都会被考虑在内。
DDS 参与者可以位于同一台计算机上,也可以跨网络:应用程序使用相同的 DDS API 进行通信。由于无需了解或配置 IP 地址,也无需考虑机器架构的差异,因此在任何操作系统或硬件平台上添加额外的通信参与者就变成了一项简单、几乎微不足道的任务。
可扩展架构(Scalable Architecture)
OMG DDS 架构设计为可从小型设备扩展到云以及超大型系统。DDS 通过扩展到数千或数百万参与者、超高速传输数据、管理数千个数据对象来实现物联网,并提供极高的可用性和安全性。DDS 通过在单个标准通信层中吸收大部分复杂性来简化分布式系统开发。
安全(Security)
保护任务关键型工业物联网环境需要从边缘扩展到云、跨系统和供应商的安全性。
DDS 包括为信息分发提供身份验证、访问控制、机密性和完整性的安全机制。DDS Security 使用分散的点对点架构,在不牺牲实时性能的情况下提供安全性。
注意: DDS DomainParticipant 代表域中应用程序的本地成员身份。域是一个分布式概念,它将所有能够相互通信的应用程序链接起来。它代表一个通信平面:只有属于同一域的发布者和订阅者可以交互。此外,它还充当 DDS 发布者、订阅者、主题、多主题和 ContentFilteredTopics 的工厂。