I guess not many people have ever hear of Data Distribution Service (DDS) before. For me this was a completely new technology, but I am open for new things and I was curious to find out what it was all about.
Since at my new job they have decided to use this technology for the core of their products, it is something I will have to learn all about it. DDS is a open standard for communication between different participants and is aimed for IoT. If you are interested, keep on reading, and see what it is all about together with me.
As already briefly mentioned, DDS is designed for IoT and it clearly shows in the basic design of the protocol as it is based on the publisher-subscriber pattern. Instead of having a central server to connect to all participants are equals and all data is gathered on the bus. This means that the discovery between participants that want to write data and those that read data is done automatically by registering to the bus for a specific topic.
Besides that DDS offers a large set of different QoS settings that allow data to be delivered to new participants, and even old data after the original participant has died.
It is easy to imagine that this type of protocol is very useful if you have many participants of which you don’t know when and if they will be online, as well for systems where new participants should be able to be added without any effort.
However, in my opinion not all is said with this description. For instance if you have many publishers but only a single subscriber there isn’t really any need to use DDS as this is similar to a web server. You know exactly where the single subscriber is located and thus you can just connect to it.
In my opinion this protocol is only relevant for distributed systems, either where each publisher is also a subscriber or when there are multiple different subscribers that want to do to something with the data from the publishers. Even in these cases there are alternatives such as introducing a middle-layer where all publishers publish data to and all subscribers get data from it.
The biggest problem with such an approach would be the single source of failure. A true distributed system would not want to have such a risk, and thus automatically connecting all participants is a nice feature.
If you ask my opinion, DDS is a protocol that offers little extra over already existing protocols and is only useful in the case where you have a very dynamic system that needs to be able to cope with new participants coming and going and automatically adapt to it. While such systems are often talked about I have not seen many systems that achieve this, not just because of the problems with communication, but mostly due to the fact that the actual software needs to be able to handle this as well!
Still DDS is an interesting protocol that has a very clear use-case, as it says on it’s own website: IoT. Many small components that need to be able to find each other and need to work in a dynamic world without having any upfront knowledge of it.