The Data Distribution Service (DDS™) is a middleware protocol and API standard for data-centric connectivity from the Object Management Group® (OMG®). It integrates the components of a system together, providing low-latency data connectivity, extreme reliability, and a scalable architecture that business and mission-critical Internet of Things (IoT) applications need.
数据分发服务(DDS™)是一个由对象管理组(OMG)发布的以数据为中心的中间件协议和API标准。DDS集成系统中的各个组件,提供低延迟数据连接、高可靠性以及高可扩展体系结构,以适应商业级物联网(IoT)应用程序的需求。
In a distributed system, middleware is the software layer that lies between the operating system and applications. It enables the various components of a system to more easily communicate and share data. It simplifies the development of distributed systems by letting software developers focus on the specific purpose of their applications rather than the mechanics of passing information between applications and systems.
在分布式系统中,中间件是介于操作系统和应用程序之间的软件层,使系统的各个组件能够更容易地通信和共享数据。中间件简化了分布式系统的开发,使软件开发人员专注于应用程序的业务本身,而不是花费精力研究应用程序和系统之间传递信息的机制。
The DDS Middleware is a software layer that abstracts the Application from the details of the operating system, network transport, and low-level data formats. The same concepts and APIs are provided in different programming languages allowing applications to exchange information across operating systems, languages, and processor architectures. Low-level details like data wire format, discovery, connections, reliability, protocols, transport selection, QoS, security, etc. are managed by the middleware.
DDS中间件是一个软件层,它将应用程序从操作系统、网络传输和底层数据格式的细节中抽象出来。DDS提供多种编程语言的API,允许应用程序跨操作系统、跨语言、跨处理器体系结构交换信息。数据格式、发现匹配机制、连接方式、可靠性、网络协议、传输方式选择、QoS、安全性等底层细节由中间件管理。
DDS provides Qos-controlled data-sharing. Applications communicate by publishing and subscribing to Topics identified by their Topic name. Subscriptions can specify time and content filters and get only a subset of the data being published on the Topic. Different DDS Domains are completely independent from each other. There is no data-sharing across DDS domains.
DDS提供Qos控制功能。应用程序通过发布和订阅主题进行通信。订阅可以指定时间和内容筛选器,并且只能获取发布主题的数据的子集。不同的DDS域彼此完全独立,跨DDS域无法进行数据通信。
There are many communications middleware standards and products. DDS is uniquely data centric, which is ideal for the Industrial Internet of Things. Most middleware works by sending information between applications and systems. Data centricity ensures that all messages include the contextual information an application needs to understand the data it receives.
市面上虽然存在多种通信中间件标准和产品,唯独DDS是以数据为中心,是工业物联网的理想选择。大多数中间件通过在应用程序和系统之间发送信息来工作。数据中心性保证应用程序能够理解其接收到的数据,因而所有消息都包含应用程序能够理解其含义所需要的上下文信息。
The essence of data centricity is that DDS knows what data it stores and controls how to share that data. Programmers using traditional message-centric middleware must write code that sends messages. Programmers using data-centric middleware write code that specifies how and when to share data and then directly share data values. Rather than managing all this complexity in the application (your) code, DDS directly implements controlled, managed, secure data sharing for you.
以数据为中心的本质是DDS知道它存储什么数据,并控制如何共享这些数据。使用传统的以消息为中心的中间件的程序员必须编写发送消息的代码;而使用以数据为中心的中间件的时,只需指定数据如何共享、何时共享,编写少量代码即可直接共享数据值。DDS使用户无需在应用程序的代码中管理所有这些复杂的操作,而是直接为用户实现了受控、托管、安全的数据共享。
DDS conceptually sees a local store of data called the “global data space.” To the application, the global data space looks like local memory accessed via an API. You write to what looks like your local storage. In reality, DDS sends messages to update the appropriate stores on remote nodes. You read from what looks like a local store.
DDS在概念上创建了一个 “全局数据空间”的本地的数据存储空间。对应用程序来说,全局数据空间看起来像是通过API访问的本地内存:发送端应用程序写入数据时,就像是写到了本地的存储空间;而实际上,由DDS发送消息以更新远程节点上的存储内容;接收端应用程序方可通过读取本地存储获取到数据。
Inside a DDS domain the unit of information sharing is data-objects within Topics. The topic is identified by its name and the data-object by some ‘Key” attributes. This is similar to how key attributes are used to identify records in a Database. This is figure is conceptual. DDS communicates peer-to-peer and does not require the data to be brokered by a server or cloud.
在DDS域中,信息共享的单位是主题的数据对象。主题由其名称标识,数据对象由一些“键(Key)”属性标识。这类似于在数据库中用键属性来标识数据。上述是一张概念性的图示, DDS进行点对点通信,不需要服务器或云代理进行转发。
All together, the local stores give applications the illusion of having access to the entire global data space. This is only an illusion; there is no global place where all the data lives. Each application locally stores only what it needs and only for as long as it needs it. DDS deals with data in motion; the global data space is a virtual concept that is really only a collection of local stores. Every application, in almost any language, running on any system, sees local memory in its optimal native format. The global data space shares data between embedded, mobile, and cloud applications across any transport, regardless of language or system, and with extremely low-latency.
本地存储的模式使应用程序产生了访问整个全局数据空间的假象,但这仅仅是一种假象;不存在一个全局空间可以容纳所有的数据。每个应用程序只在本地存储其所需的内容,并且只存储一定的时间。DDS处理地动态数据。全局数据空间是一个虚拟概念,实际上只是本地存储的集合。几乎在任何语言中,在任何系统上运行的应用程序都能以其最佳的方式访问本地内存。全局数据空间通过任意传输方式,可以跨语言和操作系统地在嵌入式应用程序、移动应用程序和云应用程序之间共享数据,并且具有极低的延迟。
The data can also be shared with flexible Quality of Service (QoS) specifications including reliability, system health (liveliness), and even security. In a real system, not every other end-point needs every item in your local store. DDS is smart about sending just what it needs. If messages don’t always reach their intended destinations, the middleware implements reliability where needed. When systems change, the middleware dynamically figures out where to send which data, and intelligently informs participants of the changes. If the total data size is huge, DDS intelligently filters and sends only the data each end-point really needs. When updates need to be fast, DDS sends multicast messages to update many remote applications at once. As data formats evolve, DDS keeps track of the versions used by various parts of the system and automatically translates. For security-critical applications, DDS controls access, enforces data flow paths, and encrypts data on-the-fly.
数据还可以使用灵活的服务质量(QoS)进行共享,包括可靠性、系统健壮性(活跃性)甚至安全性等。在一个真实系统中,并不是所有其他端点都需要另一个节点本地存储中的所有内容。DDS在仅发送每个节点所需的内容。DDS的可靠性策略可以确保数据可靠地传输到接收方。当系统发生变化时,中间件会动态地计算出将哪些数据发送到何处,并智能地将变化通知参与者(participants)。如果总数据量较大,DDS可以智能地过滤并将各个端点真正需要的数据发送给接收方。当需要快速更新时,DDS发送多播消息来同时更新多个远程应用程序。随着数据格式的发展,DDS将适配系统中使用的不同的版本并对数据进行自动翻译。对于强调高安全性的应用程序,DDS提供控制访问、强制数据流路径和动态加密数据等手段。
The true power of DDS emerges when you specify all of these things simultaneously, at extremely high speeds, and in a very dynamic, demanding, and unpredictable environment.
当您使用DDS提供的这些特性时,DDS的真正威力就显现出来了,可在动态变化、高要求、不可预测的复杂环境中提供高速可靠的数据传输服务。
DDS provides Dynamic Discovery of publishers and subscribers. Dynamic Discovery makes your DDS applications extensible. This means the application does not have to know or configure the endpoints for communications because they are automatically discovered by DDS. This can be completed at runtime and not necessarily at design or compile time, enabling real “plug-and-play” for DDS applications.
DDS提供发布者和订阅者的动态发现机制。动态发现机制使DDS应用程序可扩展。这意味着应用程序不必知道或配置用于通信的端点,因为它们是由DDS自动发现的。这可以在运行时完成,而不一定在设计或编译时完成,从而为DDS应用程序启用真正的“即插即用”。
This dynamic discovery goes even further than discovering endpoints. DDS will discover if the endpoint is publishing data, subscribing to data, or both. It will discover the type of data being published or subscribed to. It will also discover the publisher’s offered communication characteristics and the subscriber’s requested communications characteristics. All of these attributes are taken into consideration during the dynamic discovery and matching of DDS participants.
这种动态发现机制不仅仅可以发现网络中使用DDS的端点(Endpoint),还可以发现这些端点是发布数据、订阅数据还是同时发布和/或订阅数据,以及相关的数据类型、发布者提供的通信特性与订阅者请求的通信特性等等。在DDS参与者的动态发现和匹配过程中,考虑了所有这些属性。
DDS participants can be on the same machine or across a network: the application uses the same DDS API for communications. Because there is no need to know or configure IP addresses, or take into account the differences in machine architectures, adding an additional communication participant on any operating system or hardware platform becomes an easy, almost trivial, task.
DDS参与者可以在同一台计算机上,也可以跨网络,应用程序使用相同的DDS API进行通信。因为不需要知道或配置IP地址,也不需要考虑机器体系结构的差异,所以在任何操作系统或硬件平台上添加新的通信节点就成了一项极其简单的工作。
DDS systems can span from Edge to Fog to Cloud. At the edge they can be used for high-speed real-time machine to machine communications. Within the intermediary system they can provide robust, reliable QoS and content-aware information flows. Integrating these systems DDS provides scalable access and distribution of information all the way to and within the cloud.
DDS可应用于边缘计算、雾计算和云计算。在边缘计算,DDS可以用于实现高速实时的机器间通信。在中间系统中,它们可以提供健壮、可靠的QoS和内容可感知(content-aware)的信息流。DDS提供了可扩展的信息访问和数据分发手段用于集成信息系统,可将各系统接入云端。
The OMG DDS architecture is designed to be scalable from small devices to the cloud and for very large systems. DDS enables the Internet of Things by scaling across thousands or millions of participants, delivering data at ultra-high speed, managing many thousands of data objects, and providing extreme availability and security. DDS simplifies distributed systems development by absorbing much of the complexity in a single, standard communications layer.
OMG DDS的适用范围覆盖了从小型设备到云计算系统等超大型系统。DDS可为成千上万参与者提供以超高速传输数据,同时管理数千个数据对象,提供极高的可用性和安全性,适用于物联网。DDS通过提供一个标准通信层,屏蔽了大量的底层复杂性,简化了分布式系统的开发。
Protecting mission-critical Industrial IoT environments requires security that scales from edge to cloud, across systems and suppliers.
为关键任务的工业物联网环境提供保护机制,需要提供跨系统、跨供应商的,覆盖从边缘设备到云端的安全性机制。
DDS includes security mechanisms that provide authentication, access control, confidentiality, and integrity to the information distribution. DDS Security uses a decentralized peer-to-peer architecture that provides security without sacrificing real-time performance.
DDS为数据分发提供了身份验证、访问控制、数据加密和数据完整性等安全机制。DDS安全机制在点对点对等架构上实现的,不会影响实时通信的性能。
For further information on the DDS standard then please visit the specifications page.
有关DDS标准的更多信息,请查看DDS规范《DDS (Data Distribution Service) 数据分发服务-规范中文翻译_001》。
Note: A DDS DomainParticipant represents the local membership of the application in a domain. A domain is a distributed concept that links all the applications able to communicate with each other. It represents a communication plane: only the publishers and the subscribers attached to the same domain may interact. Furthermore, it acts as a factory for DDS Publishers, Subscribers, Topics, MultiTopics and ContentFilteredTopics.
注意:DDS 域参与者(DomainParticipant)表示域中应用程序的本地成员身份。域是一个分布式概念,它将所有能够相互通信的应用程序连接起来。它表示一个通信平面:只有同一域中的发布者和订阅者可以进行数据交互。此外,它还充当工厂类用于产生DDS的发布者、订阅者、主题、多主题(MultiTopics)和内容过滤主题(ContentFilteredTopics)等。