ADLINK-IST/opensplice

domain and partition

ZTY-star opened this issue · 4 comments

Is there a fundamental difference between establishing multiple domains isolated communications and establishing multiple partitions isolated communications in the same domain? Is there a difference between them in the efficiency of transferring large amounts of data?

Hi ZTY-star,

Please go through below link to understand the difference between domain and partitions:
http://download.prismtech.com/docs/Vortex/html/ospl/DDSTutorial/topics-etc.html#scoping-information

We are now thinking of establishing multiple domains or multiple partitions to isolate communications, but we don't know much about the difference in efficiency between the two? how to choice?

To choose multiple domains or multiple partitions depends on the requirement. Partition provides a better way to control the communication in a singe domain, so to use multiple partitions are more optimal.

In the DDS-standard, there are different means for data-partitioning, one is the concept of a ‘Domain’ and the other is a ‘Partition’.

Domains completely separate DDS-instantiations meaning that information (Topics/types/instances/samples) can have a completely different meaning between domains even if their names suggest otherwise.

In OpenSplice DDS, a Domain is characterised by a shared memory segment that holds

  • All the data of that domain in a node.
  • A set of applications that have created Domain Participants for that domain
  • A set of pluggable services that aid in realising the required and configured functionality that is needed in that domain (with services such as for networking, durability, SOAP-connector, DBMS connector, etc.).

A DDS ‘Partition’ is a more granular, dynamic and therefore powerful concept in DDS in that any Publisher and/or Subscriber is always related / connected to one or more DDS-partitions.

A DDS-Partition is a QoS policy of Publishers and Subscribers and all readers/writers that belong to a publisher/subscriber share information that is written in those partitions.

Partitions can be created on-the-fly, are characterised by a ‘name’ and subscribers and publishers (but typically subscribers) can even use wildcards in the partition-name to allow connection to dynamic sets of partitions.

To know more about multiple domains you can use below link:
https://istkb.adlinktech.com/article/how-can-i-connect-to-multiple-dds-domains/

Domains are Administrative boundaries that isolate and config the data definition ( i.e Topic Names ,data types and data dissemination) . Topic data types and names need to be unique in a given domain, Domains are identified by a unique ID that is used to compute the multicast address DDS will use underneath. Use multiples domains for fragmented sub-systems that do not need to exchange data, To force communication using multiple domains , you need to build a sort of application bridge with one domain participants in each domain, then read data from a given domain to explicitly sent it to the other domain. This bridging approach comes to a cost as data as exchanged fundamentally at the application level. It has also the drawback to be rigid as you need to know in advance the domains you are going to be involved into. The support of multiple-domains in the same application is available only in the so-called federated architecture available in the commercial edition. Using the opensource edition you can still use multiple domains as far as there is no application that needs to belong to multiple domains.

Partition is a more agile concept that you can use to gather publisher and subscribers in the same logical group. from the engineering perspective partition is a logical name made by a regular expression, you can use it for instance to represent a logical hierarchy or geography repartition (a network partition ) of your system. Partitions can be defined at the runtime.
The support of partitions is available in both commercial and opensource edition,

In OpenspliceDDS when using the Extended DDSi Service implementation, you can map the concept of Logical Partition on the concept of Network partition. (The network partition is a set of IP addresses ( unicast and/or multicast ). ) by doing so you're physically confining the data traffic dissemination where it needs really to go, while remaining in the scope of the same DDS domain, so you are enjoying the flexibility of the partition concept and the physical traffic confinement of the domains.