What are the Benefits of DDS?

The Data Distribution Service for Real-Time Systems (DDS) has many benefits including:

DDS makes it much easier to develop distributed applications: DDS provides a completely de-centralised architecture that enables loosely coupled systems. Applications communicate in a true peer-to-peer way, there are no intermediate services or message brokers that can introduce single points of failure or performance bottlenecks. DDS systems are dynamic and can support “plug-and-play” for new application components making it easy to extend or evolve a system. DDS applications are completely decoupled from each other and an application can still publish information even if there are no subscriber applications active. DDS automatically decides which subscriber applications should receive information and can ensure that the right data is delivered reliably and in real-time to the right subscriber applications.

DDS reduces costs: DDS can significantly reduce the time to market for new products and can help ensure cost savings across the life cycle of a project by enabling systems that are easier to design, implement, integrate, deploy and maintain. Specifically:

  • from a system design perspective the decoupled nature of the DDS architecture and shared information space enables developers to focus on the design of individual application components and less on the mechanics of how these components will interact and share information.
  • from an application development perspective DDS enables the development of autonomous applications that significantly reduce the need for developers to concern themselves with the implementation of complex communication patterns to support information exchanges between applications in a distributed system. Developers can focus on “core” application business logic and not the plumbing.
  • from a system integration perspective DDS provides support for “Dynamic Discovery” that enables application to join the system and then automatically discover publishers of interesting data and then receive this information. This can be completed at runtime and not necessarily at design or compile time, enabling real “plug-and-play” for DDS applications.
  • from a system deployment and evolution perspective DDS decouples the configuration of a DDS application to suit different deployment scenarios from the development of the application. DDS provide a number of configuration options (e.g. the choice of broadcast, multicast or unicast communications) that allow an application’s behaviour to be “tuned” to match the requirements of a specific deployment.

DDS supports application portability: the DDS standard defines a Data Centric Publish Subscribe (DCPS) layer providing a set of APIs and corresponding programming language specific mappings that present a coherent set of standardized “profiles” targeting real-time information-availability across multiple applications domains (from large scale enterprise systems to resource constrained embedded systems). The standardised APIs help ensure maximum portability between different DDS implementations.

DDS enables interoperability between applications: DDS also specifies a wire protocol, the DDS Interoperability Wire Protocol, referred to as DDSI. A wire-level protocol refers to the mechanism for transmitting data from point-to-point. A wire protocol is needed if more than one application has to interoperate. In contrast to protocols at the transport level (like TCP or UDP), the term wire-protocol is used to describe a common way to represent information at the application level.

DDS provides users with vendor independence and choice: DDS is an international and open standard from the Object Management Group (OMG). By using a technology compliant with a standard such as DDS, users are protected from vendor lock-in and are provided with choice. If you are not happy with you current vendor or the quality of their implementation, switching to an alternative is very straight forward in comparison to basing a system on non-standard proprietary technology which you may be locked into.

DDS is programming language independent: the DCPS APIs have been implemented in a range of different languages including Ada, C, C++, C#, Java, JavaScript, CoffeeScript, Scala, Lua and Ruby giving users great flexibility in their choice of programming language.

DDS is operating system and hardware independent: DDS implementations are available on many flavors of operating system including different variations of Windows, Linux and Unix. It is also available on more specialised real-time operating systems (RTOSs) such as VxWorks, ElinOS, QNX, Integrity and mobile operating systems such as Android. DDS can also be used independently from the underlying hardware and support is available for a range of devices including sensors, other types of specialized real-time embedded processing unit, mobile handheld devices, desktops, enterprise servers or just about any other type of computing resource that needs to share data.

DDS can be used to share information across heterogeneous networks: DDS can support different network configurations including over a LAN, or WAN (Internet) and via a range of wired and wireless communication technologies including Ethernet, Wi-Fi, Bluetooth, GSM, GPRS, GPS, 3G, 4G. It can be used with either reliable or unreliable networks as communication reliability is provided by the DDSI wire protocol itself and not dependent on the physical transport.

DDS enables high performance scalable systems: DDS provides the low latency, high throughput communications required by the most demanding applications. For example, over GigaBit Ethernet latencies of < 75 Micro seconds can be achieved. Data is exchanged in a compact binary format and with multicast support data can be shared with many applications/devices at once making DDS suitable for even the largest scale system.

DDS can be used in real-time systems: DDS enables predictable and deterministic data sharing between applications by enabling users to have control over the real-time behavior of the system. QoS can be specified to control timing, communication channel priority and resource utilization.

DDS filters information based on an application’s needs: filtering based on content ensures that applications only receive the data that they are specifically interested in. This frees a subscribing application from performing complex sorting algorithms in order to access information of interest.

DDS provides tailored data management: the rich set of QoS provided by DDS enables users to tune the communications behavior of the system to meet specific requirements. This includes being able to specify how long data is available for future use, whether data exchanges are reliable or best effort, the ordering of data presented to a subscriber and whether the data is exchanged as part of a wider transactional context.

DDS enables fault tolerant and reliable systems: the de-centralised architecture of DDS mans that applications can communicate with each other independently from other servers, message brokers or communication services that can act as single points of failure or potential performance bottlenecks. DDS applications exchange data with each other directly in a true peer-to-peer way.  DDS publishers and subscribers are completely de-coupled in space and time. This means that a so called “late-joining” subscriber can successfully receive data published before the subscriber itself was started. DDS is responsible for the storage and deliver of the data. Alternatively DDS can be configured to manage data from multiple sources so that if one publisher fails a subscriber can still receive the information it needs from an alternative source. DDS can also guarantee that data can be exchanged successfully between applications even if the network is un-reliable. No information is ever lost and DDS ensures that a data exchange is repeated until successful.

PrismTech's Vortex OpenSplice is the leading (Commercial and Open Source) implementation of the DDS standard.