With the advent of ubiquitous networking and cheap processing, data distribution is emerging as a key paradigm for disseminating information in real-time and embedded systems. The applications are characterized by complex dataflows for example one-to-many, many-to-one, many-to-many dataflows with differing update rates, reliability, and bandwidth requirements; real-time performance which may be defined in terms of tight latency, throughput, or bandwidth requirements; fault-tolerance which may be defined in terms of not having a single point of failure or supporting self-healing communication, or having redundant communication paths; dynamic configuration changes where participants may join or leave arbitrarily; and the ability to scale with network size. The applications typically reflect the fluid and ever-changing nature of the real world.
The need for data-distribution is so fundamental that domains as diverse as command and control systems, traffic monitoring, financial data-distribution, combat systems, industrial sensing all use it as a core technology. The lack of established standards has led to the development of ad-hoc custom one-off solutions with sub-optimal performance and robustness that end up being very expensive to maintain. Commercial implementations of publish-subscribe data-distribution middleware have existed and have been deployed with success. However each vendor provided a different API and slightly different semantics for equivalent concepts.
This situation was similar to the one prior to the adoption of UML. Successful modeling tools existed but widespread acceptance, availability of trained developers, and broad knowledge exchange did not come until the UML standard consolidated terminology and notation. The recent adoption of the Data-Distribution Service (DDS) for Real-Time Systems specification by the Object Management Group (OMG) will do for data-distribution what UML did for modeling technologies.
The OMG Data Distribution Service (DDS) Standard specifies a mandatory API for data-centric publish-subscribe (DCPS) communication, and an optional data local reconstruction layer (DLRL). The DDS specification is programming language agnostic; it is specified via a platform independent model in UML, and a platform-specific model in IDL, which can be mapped to programming language APIs via standard mappings. In the rest of this article, we highlight the key aspects of the OMG DDS/DCPS specification and illustrate it by building a mock distributed real-time application.