1.概述
1.1. 介绍
The DDS specification describes a Data-Centric Publish-Subscribe (DCPS) model for distributed application communication and integration. This specification defines both the Application Interfaces (APIs) and the Communication Semantics (behavior and quality of service) that enable the efficient delivery of information from information producers to matching consumers.
DDS规范描述了支持分布式应用程序通信和集成的以数据为中心的发布订阅(DCPS)模型。 本规范定义了应用程序接口(API)和通信语义(行为和服务质量),使信息生产者能够有效地将信息传递给匹配的消费者。
The purpose of the DDS specification can be summarized as enabling the “Efficient and Robust Delivery of the Right Information to the Right Place at the Right Time.”
DDS规范的目的可以概括为实现“有效且稳健地将正确的信息在正确的时间传输到正确的地方。”
The expected application domains require DCPS to be high-performance and predictable as well as efficient in its use of resources. To meet these requirements it is important that the interfaces are designed in such a way that they:
- Allow the middleware to pre-allocate resources so that dynamic resource allocation can be reduced to the minimum,
- Avoid properties that may require the use of unbounded or hard-to-predict resources, and
- Minimize the need to make copies of the data.
预期的应用领域要求DCPS具有高性能、可预测性和高效的资源利用。为了满足这些要求,重要的是接口的设计方式应能够:
- 允许中间件预先分配资源,以便将资源动态分配降至最低,
- 避免可能需要使用无限或难以预测资源的属性,以及
- 最大限度地减少数据拷贝的需要。
DDS uses typed interfaces (i.e., interfaces that take into account the actual data types) to the extent possible. Typed interfaces offer the following advantages:
- They are simpler to use: the programmer directly manipulates constructs that naturally represent the data.
- They are safer to use: verifications can be performed at compile time.
- They can be more efficient: the execution code can rely on the knowledge of the exact data type it has in advance, to e.g., pre-allocate resources.
DDS尽可能使用类型化接口(typed interface,即考虑到实际数据类型的接口)。类型化的接口具有以下优点:
- 使用更简单:程序员直接操纵自然表示数据的构造。
- 类型安全:可以在编译器进行验证。
- 更高效:执行代码可以依赖于它事先确切数据类型的知识,例如预先分配资源。
It should be noted that the decision to use typed interfaces implies the need for a generation tool to translate type descriptions into appropriate interfaces and implementations that fill the gap between the typed interfaces and the generic middleware.
应该注意的是,使用类型化接口的决定意味着需要一个生成工具来将类型描述转换为合适的接口和实现,以填补类型化接口和中间件之间的空白。
QoS (Quality of Service) is a general concept that is used to specify the behavior of a service. Programming service behavior by means of QoS settings offers the advantage that the application developer only indicates ‘what’ is wanted rather than ‘how’ this QoS should be achieved. Generally speaking, QoS is comprised of several QoS policies. Each QoS policy is then an independent description that associates a name with a value. Describing QoS by means of a list of independent QoS policies gives rise to more flexibility.
QoS(服务质量)是用于指定服务行为的一般概念。通过QoS设置编程服务行为的好处是,应用程序开发人员仅指示’想要什么’,而不是’应该如何’实现这个QoS。 一般来说,QoS由几个QoS策略组成。 然后,每个QoS策略都是一个将名称与值相关联的独立描述。 通过一系列独立的QoS策略描述QoS会带来更大的灵活性。
This specification is designed to allow a clear separation between the publish and the subscribe sides, so that an application process that only participates as a publisher can embed just what strictly relates to publication. Similarly, an application process that participates only as a subscriber can embed only what strictly relates to subscription.
此规范旨在允许发布和订阅方之间明确分离,以便仅作为发布者参与的应用程序进程可以嵌入与发布严格相关的内容。 同样,仅作为订户参与的应用程序流程只能嵌入与订阅严格相关的内容。
1.2. 目标
Many real-time applications have a requirement to model some of their communication patterns as a pure data-centric exchange, where applications publish (supply or stream) “data” which is then available to the remote applications that are interested in it. Relevant real-time applications can be found in C4I, industrial automation, distributed control and simulation, telecom equipment control, sensor networks, and network management systems. More generally, any application requiring (selective) information dissemination is a candidate for a data-driven network architecture.
许多实时应用程序都要求将它们的某些通信模式建模为纯粹以数据为中心的交换,其中应用程序发布(提供或流)“数据”,然后(这些数据就)可用于对其感兴趣的远程应用程序。有关的实时应用可以在C4I、工业自动化、分布式控制和仿真、电信设备控制、传感器网络和网络管理系统中找到。 更一般地说,任何需要(选择性)信息传播的应用程序都是数据驱动的网络体系结构的候选者。
Predictable distribution of data with minimal overhead is of primary concern to these real-time applications. Since it is not feasible to infinitely extend the needed resources, it is important to be able to specify the available resources and provide policies that allow the middleware to align the resources to the most critical requirements. This necessity translates into the ability to control Quality of Service (QoS) properties that affect predictability, overhead, and resource utilization.
这些实时应用主要关注可预测的数据分布和最小的开销。 由于无限延伸所需资源是不可行的,因此能够指定可用资源并提供允许中间件将资源调整为最关键要求的策略非常重要。 这种必要性转化为控制影响可预测性、开销和资源利用率的服务质量(QoS)属性的能力。
The need to scale to hundreds or thousands of publishers and subscribers in a robust manner is also an important requirement. This is actually not only a requirement of scalability but also a requirement of flexibility: on many of these systems, applications are added with no need/possibility to reconstruct the whole system. Data-centric communications decouples senders from receivers; the less coupled the publishers and the subscribers are, the easier these extensions become.
以鲁棒的方式扩展到成百上千个发布者和订阅者的需求也是一个重要的要求。 这实际上不仅是可扩展性的要求,而且也是灵活性的要求:在许多这些系统中,应用程序在不需要或不可能重建整个系统的情况下被添加。 以数据为中心的通信将发送者与接收者分离; 发布者和订阅者耦合程度越低,这些扩展就越容易。
Distributed shared memory is a classic model that provides data-centric exchanges. However, this model is difficult to implement efficiently over a network and does not offer the required scalability and flexibility. Therefore, another model, the Data-Centric Publish-Subscribe (DCPS) model, has become popular in many real-time applications. This model builds on the concept of a “global data space” that is accessible to all interested applications. Applications that want to contribute information to this data space declare their intent to become “Publishers.” Similarly, applications that want to access portions of this data space declare their intent to become “Subscribers.” Each time a Publisher posts new data into this “global data space,” the middleware propagates the information to all interested Subscribers.
分布式共享内存是提供以数据为中心的交换的经典模型。 但是,这种模式很难在网络上高效实现,并且不具备所需的可扩展性和灵活性。 因此,另一种模型 – 以数据为中心的发布 – 订阅(DCPS)模型已经在许多实时应用中变得流行。 该模型基于所有感兴趣的应用程序都可访问的“全局数据空间”的概念。 希望为该数据空间贡献信息的应用程序可以声明成为“发布者”。同样,希望访问此数据空间部分的应用程序声明成为“订阅者”。每次发布者将新数据发布到此“全局数据空间”,中间件会将信息传播给所有感兴趣的订阅者。
Underlying any data-centric publish subscribe system is a data model. This model defines the “global data space” and specifies how Publishers and Subscribers refer to portions of this space. The data-model can be as simple as a set of unrelated data-structures, each identified by a topic and a type. The topic provides an identifier that uniquely identifies some data items within the global data space[1]. The type provides structural information needed to tell the middleware how to manipulate the data and also allows the middleware to provide a level of type safety. However, the target applications often require a higherlevel data model that allows expression of aggregation and coherence relationships among data elements.
任何以数据为中心的发布订阅系统的基础都是数据模型。 该模型定义了“全局数据空间”并指定发布者和订阅者如何引用此空间的某些部分。这个数据模型可以像一组不相关的数据结构一样简单,每个数据结构都由一个主题和一个类型来标识。其中主题提供了一个唯一标识全局数据空间内某些数据项的标识符。类型提供了告诉中间件如何操作数据所需的结构信息,并允许中间件提供一定级别的类型安全。 但是,目标应用程序通常需要更高级别的数据模型,以允许表达数据元素之间的聚合和一致性关系。
Prior to the adoption of the DDS specification there were commercially available products that implemented many of these features (among them, NDDS from Real-Time Innovations and Splice from THALES Naval Nederland); however, these products were proprietary and did not offer standardized interfaces and behaviors. The purpose of the DDS specification is to define the standardized interfaces and behaviors that enable application portability. Since DDS’ adoption, at least ten compliant implementations have been developed. See http://portals.omg.org/dds/category/web-links/vendors.
在DDS规范之前,有商用产品实现了许多这些功能(其中包括来自THALES Naval Nederland的Real-Time Innovations和Splice的NDDS); 然而,这些产品是专有的,并没有提供标准化的接口和行为。 DDS规范的目的是定义使应用程序可移植的标准化接口和行为。 自DDS产生以来,至少已经有了十个兼容的实现。 请参阅http://portals.omg.org/dds/category/web-links/vendors。
This specification focuses on the portability of applications using the Data-Distribution Service. Wire-protocol interoperability between vendor implementations is covered in a different OMG specification: The Real-time Publish-Subscribe Wire Protocol DDS Interoperability Wire Protocol.”
本标准侧重于使用数据分发服务(DDS)的应用程序的可移植性。另一个OMG标准涵盖了供应商实现之间的有线协议(Wire-protocol)互操作性:实时发布 – 订阅有线协议(Wire protocol)DDS互操作性有线协议。
[1] In addition to topic and type, it is sometimes desirable for subscriptions to further refine the data they are interested in based on the content of the data itself. These so called content-based subscriptions are gaining popularity in large-scale systems. 除了主题和类型之外,有时订阅方期望能够给予数据内容进一步优化他们感兴趣的数据。 这些所谓的基于内容的订阅在大型系统中越来越受欢迎。