SlideShare une entreprise Scribd logo
1  sur  75
Télécharger pour lire hors ligne
Advanced OpenSplice DDS
                 Programming
                 - Part II -
OpenSplice DDS




                               Angelo CORSARO, Ph.D.
                                       Chief Technology Officer
                                       OMG DDS Sig Co-Chair
                                                  PrismTech
                               angelo.corsaro@prismtech.com
Part I - Recap
OpenSplice DDS
Key Concepts to Remember
                  ☐   OpenSplice DDS provides a mechanism for efficiently sharing user-




                                                                                                                        Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                      defined data among distributed applications and network
                      connected devices
OpenSplice DDS




                            Agricultural Vehicle Systems   Large Scale SCADA Systems            Smart Cities




                               Train Control Systems        Complex Medical Devices    Big Data (In-Memory) Analytics
Key Concepts to Remember
                  ☐   OpenSplice DDS allows to build distributed systems by reasoning in




                                                                                                                 Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                      terms of application types as opposed to messages
OpenSplice DDS




                              TopicA
                                             TopicE

                                       ...
                           TopicB
                                                TopicD

                                    TopicC



                       OpenSplice DDS Global Data Space
                                                                           PS. long in IDL is a 32 bit integer
Key Concepts to Remember
                  ☐   User defined data types are accessible through “local caches”.




                                                                                       Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                      These local caches can have a depth and store multiple updates
                      for the same data item
OpenSplice DDS
Key Concepts to Remember




                                                                                              Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                  ☐   Built-in dynamic discovery automatically establishes associations
                      between data writers and data readers
                                                                             Data
                                                                            Reader
                                           Data
OpenSplice DDS




                                           Writer

                                                                                      Data
                                                                                     Reader
                                  Data                         TopicD
                                  Writer
                                                    TopicA
                                                                                      Data
                                                              TopicB                 Reader
                                  Data
                                  Writer
                                                    TopicC
                                                                  ...

                                    Data                                         Data
                                    Writer                                      Reader

                                                    DDS Global Data Space
Anatomy of a DDS Application
                 [DDS C++ API 2010]

                 Domain
                                                                                        Domain




                                                                                                                   Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                   auto dp = DomainParticipant(domainId);
                                                                                       Participant

                 Session
                   // Create a Topic
                                                                      Publisher
          Topic
         Subscriber
OpenSplice DDS




                   auto topic = Topic<ShapeType>(dp, “Circle”);
                   // Create a Publisher / Subscriber
                   auto pub = Publisher(dp);
                   auto sub = Subscriber(dp);


                 Reader/Writers for User Defined for Types             DataWriter
                        DataReader
                   // Create a DataWriter/DataWriter
                   auto writer = DataWriter<ShapeType>(pub, topic);                 Reader/Writer for
                   auto reader = DataReader<ShapeType>(sub, topic);
                                                                                    application defined
                                                                                       Topic Types
Anatomy of a DDS Application
                 [DDS C++ API 2010]

                 Domain
                                                                                                   Domain




                                                                                                                              Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                   auto	
  dp	
  =	
  DomainParticipant(domainId);	
  
                                                                                                  Participant

                 Session
                   //	
  Create	
  a	
  Topic
                                                                                 Publisher
          Topic
         Subscriber
OpenSplice DDS




                   auto	
  topic	
  =	
  Topic<ShapeType>(dp,	
  “Circle”);
                   //	
  Create	
  a	
  Publisher	
  /	
  Subscriber
                   auto	
  pub	
  =	
  Publisher(dp);
                   auto	
  sub	
  =	
  Subscriber(dp);


                 Reader/Writers for User Defined for Types                        DataWriter
                        DataReader
                   //	
  Write	
  data
                   writer.write(ShapeType(“RED”,	
  131,	
  107,	
  89));                      Reader/Writer for
                   //	
  But	
  you	
  can	
  also	
  write	
  like	
  this...                 application defined
                   writer	
  <<	
  ShapeType(“RED”,	
  131,	
  107,	
  89);
                                                                                                  Topic Types
                   //	
  Read	
  new	
  data	
  (loaned)
                   auto	
  data	
  =	
  reader.read();
Anatomy of a DDS Application
                 [DDS Java 5 API 2010]

                 Domain
                                                                                                              Domain




                                                                                                                                         Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                 DomainParticipantFactory	
  factory	
  =	
  DomainParticipantFactory.getInstance(env);
                 DomainParticipant	
  dp	
  =	
  factory.createParticipant();                                Participant

                 Session
                  //	
  Create	
  a	
  Topic
                  Topic<ShapeType>	
  topic	
  =
                                                                                             Publisher
         Topic
         Subscriber
OpenSplice DDS




                  	
  	
  	
  dp.createParticipant(“Circle”,	
  ShapeType.class);
                  //	
  Create	
  a	
  Publisher	
  /	
  Subscriber
                  Publisher	
  	
  pub	
  =	
  dp.createPublisher();
                  Subscriber	
  sub	
  =	
  dp.createSubscriber();

                 Reader/Writers for User Defined for Types                                   DataWriter
                        DataReader
                  //	
  Create	
  a	
  DataWriter/DataWriter
                  DataWriter<ShapeType>	
  dw	
  =pub.createDataWriter(topic);	
                          Reader/Writer for
                  DataReader<ShapeType>	
  dr	
  =pub.createDataReader(topic);	
                          application defined
                                                                                                             Topic Types
Anatomy of a DDS Application
                 [DDS Java 5 API 2010]

                 Domain
                                                                                                              Domain




                                                                                                                                         Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                 DomainParticipantFactory	
  factory	
  =	
  DomainParticipantFactory.getInstance(env);
                 DomainParticipant	
  dp	
  =	
  factory.createParticipant();                                Participant

                 Session
                  //	
  Create	
  a	
  Topic
                  Topic<ShapeType>	
  topic	
  =
                                                                                             Publisher
         Topic
         Subscriber
OpenSplice DDS




                  	
  	
  	
  dp.createParticipant(“Circle”,	
  ShapeType.class);
                  //	
  Create	
  a	
  Publisher	
  /	
  Subscriber
                  Publisher	
  	
  pub	
  =	
  dp.createPublisher();
                  Subscriber	
  sub	
  =	
  dp.createSubscriber();

                 Reader/Writers for User Defined for Types                                   DataWriter
                        DataReader
                  //	
  write	
  data
                  dw.write(new	
  ShapeType(“RED”,	
  10,	
  20,	
  50);	
                                Reader/Writer for
                  //	
  read	
  data                                                                      application defined
                  Sample.Iterator<ShapeType>	
  data	
  =	
  dr.read();
                                                                                                             Topic Types
OpenSplice DDS




                 Part II
Quality of Service
OpenSplice DDS
QoS Model
                 ☐   QoS-Policies control local and
                     end-to-end properties of DDS




                                                                                                                                                                                   Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                                                                                                    Type Matching

                     entities
                                                                                                                                       QoS matching


                                                       QoS             QoS                QoS                   QoS                   QoS                QoS              QoS


                 ☐   Local properties controlled by                                                             Topic
                                                                                                                          Name

                     QoS are related resource usage
                                                                     Publisher                                                                        Subscriber

                                                                                 ...   DataWriter      writes   Type       reads   DataReader
                                                                                                                                                ...
OpenSplice DDS




                                                                                                                    ...
                 ☐   End-to-end properties              DomainParticipant              DataWriter    writes     Type      reads    DataReader                  DomainParticipant


                     controlled by QoS are related                                                              Topic
                                                                                                                          Name



                     to temporal and spatial aspects                                     QoS                    QoS                    QoS

                     of data distribution
                 ☐   Some QoS-Policies are matched
                     based on a Request vs. Offered
                     Model thus QoS-enforcement
QoS Policies
                 [T: Topic] [DR: DataReader] [DW: DataWriter] [P: Publisher]   [S: Subscriber]     [DP: Domain Participant]

                                   QoS Policy      Applicability     RxO        Modifiable




                                                                                                                              Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                                   USER_DATA       DP, DR, DW         N              Y
                                  TOPIC_DATA            T             N              Y            Configuration
                                  GROUP_DATA           P, S           N              Y
                                   DURABILITY       T, DR, DW         Y              N
OpenSplice DDS




                                   DURABILITY         T, DW           N              N
                                    SERVICE                                                      Data Availability
                                    HISTORY         T, DR, DW         N              N
                                 PRESENTATION          P, S           Y              N
                                   RELIABILITY      T, DR, DW         Y              N
                                   PARTITION           P, S           N              Y
                                                                                                  Data Delivery
                                  DESTINATION       T, DR, DW         Y              N
                                    ORDER
                                    LIFESPAN          T, DW           N              Y
QoS Policies
                 [T: Topic] [DR: DataReader] [DW: DataWriter] [P: Publisher]   [S: Subscriber]    [DP: Domain Participant]

                                    QoS Policy     Applicability     RxO        Modifiable




                                                                                                                             Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                                    DEADLINE        T, DR, DW         Y              Y
                                    LATENCY         T, DR, DW         Y              Y
                                    BUDGET                                                         Temporal/
                                  TRANSPORT           T, DW           N              Y            Importance
                                   PRIORITY                                                      Characteristics
OpenSplice DDS




                                   TIME BASED          DR             N              Y
                                      FILTER
                                  OWNERSHIP         T, DR, DW         Y              N
                                  OWNERSHIP            DW             N              Y             Replication
                                  STRENGTH
                                   LIVELINESS       T, DR, DW         Y              N           Fault-Detection
OpenSplice DDS




                      Partition
                                                                                            Data Delivery
                                                                             Reliability




   Presentation
                    Data Delivery
                    Order
                  Destination




                   Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
Reliability QoS Policy
                                                           QoS Policy   Applicability   RxO   Modifiable
                                                          RELIABILITY   T, DR, DW        Y       N




                                                                                                          Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                  The Reliability Policy controls the level of guarantee offered by
                  the DDS in delivering data to subscribers

                  ☐   Reliable. In steady-state, and no data writer crashes, the
OpenSplice DDS




                      middleware guarantees that all samples in the DataWriter
                      history will eventually be delivered to all the DataReader

                  ☐   Best Effort. Indicates that it is acceptable to not retry
                      propagation of any samples
Setting the Reliability Policy
                 [DDS C++ API 2010]




                                                                                                  Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                    DataWriterQos	
  dwqos	
  =	
  
                    	
  	
  	
  pub.default_datawriter_qos()	
  <<	
  Reliability.Reliable();
OpenSplice DDS




                    -­‐	
  or	
  -­‐

                    DataWriterQos	
  dwqos	
  =	
  
                    	
  	
  	
  pub.default_datawriter_qos()	
  <<	
  Reliability.BestEffort();
Setting the Partition Policy
                 [DDS Java 5 API 2010]




                                                                                                   Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                     final	
  PolicyFactory	
  pf	
  =	
  ...

                     DataWriterQos	
  dwqos	
  =	
  
                     	
  	
  	
  pub.getDefaultDataWriterQos()
OpenSplice DDS




                     	
  	
  	
  	
  	
  	
  .withPolicies(pf.Reliability.withReliable());	
  

                     -­‐	
  or	
  -­‐

                     DataWriterQos	
  dwqos	
  =	
  
                     	
  	
  	
  pub.getDefaultDataWriterQos()
                     	
  	
  	
  	
  	
  	
  .withPolicies(pf.Reliability.withBestEffort());	
  
Partition QoS Policy
                                                                 QoS Policy          Applicability     RxO         Modifiable
                  ☐   The Partition QoS Policy can               PARTITION               P, S          N                  Y




                                                                                                                               Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                      be used as subjects for
                      organizing the flows of data
                  ☐   The Partition QoS Policy is                                                       Subscriber
                      used to connect Publishers/    Publisher        "tracks.kfo"      "tracks.ufo"
OpenSplice DDS




                      Subscribers to a Partitions’
                      List which might also
                      contain wildcards, e.g.                                                                Subscriber
                                                     Publisher
                      tracks.*
                  ☐   Topics instances are
                      published and subscribed       Publisher                                          Subscriber

                      across one or more                         Partition
                      Partitions
Setting the Partition Policy
                 [DDS C++ API 2010]




                                                                                                  Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                    PublisherQos	
  pqos	
  =	
  
                    	
  	
  	
  dp.default_publisher_qos()	
  <<	
  Partition(“MyPartition”);
OpenSplice DDS




                    -­‐	
  or	
  -­‐

                    PublisherQos	
  pqos	
  =	
  
                    	
  	
  	
  dp.default_publisher_qos()	
  <<	
  Partition(myPartitionList);
Setting the Partition Policy
                 [DDS Java 5 API 2010]




                                                                                                 Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                     final	
  PolicyFactory	
  pf	
  =	
  ...

                     PublisherQos	
  pqos	
  =	
  
                     	
  	
  	
  dp.getDefaultPublisherQos()
OpenSplice DDS




                     	
  	
  	
  	
  	
  	
  .withPolicies(pf.Partition(“MyPartition”));	
  

                     -­‐	
  or	
  -­‐

                     PublisherQos	
  pqos	
  =	
  
                     	
  	
  	
  dp.getDefaultPublisherQos()
                     	
  	
  	
  	
  	
  	
  .withPolicies(pf.Partition(myPartitionList));	
  
Data Availability
                                  History




                                                            Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                                   Data
OpenSplice DDS




                     Lifespan                  Durability
                                Availability


                                               Ownership
                                 Ownership
                                                Strength
Durability QoS Policy
                                                                        QoS Policy Applicability   RxO   Modifiable
                                                                       DURABILITY T, DR, DW         Y       N




                                                                                                                Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                  The DURABILITY QoS controls the data availability w.r.t. late joiners,
                  specifically the DDS provides the following variants:

                  ☐   Volatile. No need to keep data instances for late joining data readers
OpenSplice DDS




                  ☐   Transient Local. Data instance availability for late joining data reader is
                      tied to the data writer availability

                  ☐   Transient. Data instance availability outlives the data writer

                  ☐   Persistent. Data instance availability outlives system restarts
Volatile
                                     Data
                                     Writer




                                                                                               Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                                              1



                                                      TopicA
                                                                                       Data
                                                                                      Reader
OpenSplice DDS




                                                      DDS Global Data Space


                  ‣ No Time Decoupling
                  ‣ Readers get only data produced after they joined the Global Data Space
Volatile                                                             Late Joiner


                                                                                  Data
                                     Data                                        Reader
                                     Writer




                                                                                                       Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                                                      TopicA
                                                                                               Data
                                                                                              Reader
OpenSplice DDS




                                                                                          1




                                                      DDS Global Data Space


                  ‣ No Time Decoupling
                  ‣ Readers get only data produced after they joined the Global Data Space
Volatile
                                                                                  Data
                                     Data                                        Reader
                                     Writer




                                                                                                       Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                                              2



                                                      TopicA
                                                                                               Data
                                                                                              Reader
OpenSplice DDS




                                                                                          1




                                                      DDS Global Data Space


                  ‣ No Time Decoupling
                  ‣ Readers get only data produced after they joined the Global Data Space
Transient Local
                                       Data
                                       Writer




                                                                                                                Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                                                1



                                                           TopicA
                                                                                                 Data
                                                                                                Reader
OpenSplice DDS




                                                           DDS Global Data Space


                  ‣ Some Time Decoupling
                  ‣ Data availability is tied to the availability of the data writer and the history settings
Transient Local                                                               Late Joiner


                                                                                           Data
                                       Data                                               Reader
                                       Writer




                                                                                                                Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                                                1



                                                           TopicA
                                                                                                        Data
                                                                                                       Reader
OpenSplice DDS




                                                                                                   1




                                                           DDS Global Data Space


                  ‣ Some Time Decoupling
                  ‣ Data availability is tied to the availability of the data writer and the history settings
Transient Local
                                                                                           Data
                                       Data                                               Reader
                                       Writer




                                                                                                                Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                                                1                                          1

                                                2
                                                           TopicA
                                                                                                        Data
                                                                                                       Reader
OpenSplice DDS




                                                                                                   1




                                                           DDS Global Data Space


                  ‣ Some Time Decoupling
                  ‣ Data availability is tied to the availability of the data writer and the history settings
Transient
                                        Data
                                        Writer




                                                                                                                     Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                                                 1


                                                            TopicA
                                                                                                   Data
                                                                                                  Reader
OpenSplice DDS




                                                             DDS Global Data Space


                  ‣ Time Decoupling
                  ‣ Data availability is tied to the availability of the durability service -- a fully distributed
                    fault-tolerant service in the case of OpenSplice DDS.
Transient                                                                       Late Joiner


                                                                                             Data
                                        Data                                                Reader
                                        Writer




                                                                                                                     Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                                                            TopicA
                                                                 1                                        Data
                                                                                                         Reader
OpenSplice DDS




                                                                                                     1




                                                             DDS Global Data Space


                  ‣ Time Decoupling
                  ‣ Data availability is tied to the availability of the durability service -- a fully distributed
                    fault-tolerant service in the case of OpenSplice DDS.
Transient
                                                                                             Data
                                                                                            Reader




                                                                                                                     Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                                                                                              1



                                                            TopicA
                                                                 1                                        Data
                                                                                                         Reader
OpenSplice DDS




                                                                                                     1




                                                            DDS Global Data Space


                  ‣ Time Decoupling
                  ‣ Data availability is tied to the availability of the durability service -- a fully distributed
                    fault-tolerant service in the case of OpenSplice DDS.
Transient
                                                                                             Data
                                                                                            Reader




                                                                                                                     Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                                                                                              1



                                                            TopicA
                                                                 1                                        Data
                                                                                                         Reader
OpenSplice DDS




                                                                                                     1




                                                                                                Data
                                                                                               Reader
                                                            DDS Global Data Space

                                                                                                     Late Joiner
                  ‣ Time Decoupling
                  ‣ Data availability is tied to the availability of the durability service -- a fully distributed
                    fault-tolerant service in the case of OpenSplice DDS.
History QoS Policy
                                                                     QoS Policy Applicability   RxO   Modifiable
                                                                     HISTORY     T, DR, DW       N       N




                                                                                                             Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                  For DataWriters, the HISTORY QoS policy controls the amount of data that
                  can be made available to late joining DataReaders under
                  TRANSIENT_LOCAL Durability
OpenSplice DDS




                  For DataReader, the HISTORY QoS policy controls how many samples will
                  be kept on the reader cache

                  ☐   Keep Last. DDS will keep the most recent “depth” samples of each
                      instance of data identified by its key

                  ☐   Keep All. The DDS keep all the samples of each instance of data
                      identified by its key -- up to reaching some configurable resource limits
Ownership QoS Policy
                                                                       QoS Policy Applicability   RxO   Modifiable
                                                                      OWNERSHIP T, DR, DW          Y       N
                                                                      STRENGTH       DW            N       Y




                                                                                                                Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                  Availability of data producers can be controlled via two QoS Policies
                  ☐   OWNERSHIP (SHARED vs. EXCLUSIVE)
OpenSplice DDS




                  ☐   OWNERSHIP STRENGTH
                  ☐   Instances of exclusively owned Topics can be modified (are
                      owned) by the higher strength writer
                  ☐   Writer strength is used to coordinate replicated writers
Temporal Properties




                                                                                         Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                      TimeBasedFilter                                    Deadline

                    [Inbound]
OpenSplice DDS




                       Throughput                    LatencyBudget      Latency
                                        [Outbound]




                                                                     TransportPriority
Latency Budget QoS Policy
                                                                                QoS Policy Applicability    RxO   Modifiable
                                                                                LATENCY     T, DR, DW        Y       Y
                  ☐   The LATENCY_BUDGET QoS                                     BUDGET




                                                                                                                          Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                      policy specifies the
                      maximum acceptable
                      delay from the time the
                      data is written until the data
OpenSplice DDS




                      is inserted in the receiver's
                      application-cache                                        Latency = T1+T2+T3

                                                             DataWriter                                T3    DataReader
                  ☐   A non-zero latency-budget                           T1

                      allows a DDS                     Batching

                      implementation to batch                                          T2

                      samples and improve CPU/
                      Network utilization
Deadline QoS Policy
                                                                                       QoS Policy Applicability   RxO   Modifiable
                                                                                       DEADLINE T, DR, DW          Y       Y




                                                                                                                                Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                  ☐   The DEADLINE QoS policy allows to define the maximum inter-arrival
                      time between data samples
                  ☐   DataWriter indicates that the application commits to write a new
OpenSplice DDS




                      value at least once every deadline period
                  ☐   DataReaders are notified by the DDS when the DEADLINE QoS
                      contract is violated


                          DataWriter   Deadline   Deadline    Deadline      Deadline   Deadline      DataReader


                                                       Deadline Violation
Transport Priority QoS Policy
                                                                  QoS Policy Applicability   RxO   Modifiable
                                                                 TRANSPORT     T, DW          N       Y
                                                                  PRIORITY




                                                                                                           Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                  ☐   The TRANSPORT_PRIORITY QoS policy is a hint to the infrastructure as
OpenSplice DDS




                      to how to set the priority of the underlying transport used to send
                      the data.
Time-Based Filter QoS Policy
                                                                                                       QoS Policy Applicability   RxO   Modifiable
                                                                                                      TIME BASED      DR           N       Y
                                                                                                         FILTER




                                                                                                                                               Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                                                                                    mit




                                                                                    mit
                                                                                          ☐   The Time Based Filter allows to
                                                                                              control the throughput at which
                                        Latency = T1+T2+T3
                                                                                              data is received by a data reader
OpenSplice DDS




                 DataWriter                                          T3   DataReader
                                                                                          ☐   Samples produced more often
                                                  T2                                          than the minimum inter-arrival
                                                                                              time are not delivered to the data
                                                                                              reader

                                         mit          mit
                                  mit = minimum inter-arrival time

                    produced sample         delivered sample         discarded sample
QoS Provider
                  ☐   The new C++ and Java APIs introduce the concept of a QoS




                                                                                                                                 Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                      Provider

                  ☐   This class allows to externally define policies and decouples the
                      mechanism used to define and access policy definition with policy
OpenSplice DDS




                      creation

                         	
  	
  	
  	
  	
  	
  //	
  QosProvider...
                         	
  	
  	
  	
  	
  	
  QosProvider	
  qos_provider(
                         	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  "http://www.opensplice.org/demo/config/qos.xml",
                         	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  "ishapes-­‐profile");

                         	
  	
  	
  	
  	
  	
  DataReader<ShapeType>	
  dr(sub,	
  topic,	
  qos_provider.datareader_qos());
QoS and Data Modeling
OpenSplice DDS




                       Patterns
Soft State
                  ☐   In distributed systems you often need to model soft-state -- a state




                                                                                                                                                          Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                      that is periodically updated
                  ☐   Examples are the reading of a sensor (e.g. Temperature Sensor),
                      the position of a vehicle, etc.
OpenSplice DDS




                  ☐   The QoS combination to model Soft-State is the following:

                      Reliability	
  	
  	
  	
  	
  	
  =>	
  	
  BestEffort
                      Durability	
  	
  	
  	
  	
  	
  	
  =>	
  	
  Volatile	
  
                      History	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  =>	
  	
  KeepLast(n)	
  [with	
  n	
  =	
  1	
  in	
  most	
  of	
  the	
  cases]
                      Deadline	
  	
  	
  	
  	
  	
  	
  	
  	
  =>	
  	
  updatePeriod
                      LatencyBudget	
  	
  	
  	
  =>	
  	
  updatePeriod/3	
  [rule	
  of	
  thumb]
                      DestinationOrder	
  =>	
  	
  SourceTimestamp	
  [if	
  multiple	
  writers	
  per	
  instance]
Hard State
                  ☐   In distributed systems you often need to model hard-state -- a state




                                                                                                                                                          Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                      that is sporadically updated and that often has temporal
                      persistence requirements
                  ☐   Examples are system configuration, a price estimate, etc.
OpenSplice DDS




                  ☐   The QoS combination to model Hard-State is the following:


                      Reliability	
  	
  	
  	
  	
  	
  =>	
  	
  Reliable
                      Durability	
  	
  	
  	
  	
  	
  	
  =>	
  	
  Transient	
  |	
  Persistent	
  
                      History	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  =>	
  	
  KeepLast(n)	
  [with	
  n	
  =	
  1	
  in	
  most	
  of	
  the	
  cases]
                      DestinationOrder	
  =>	
  	
  SourceTimestamp	
  [if	
  multiple	
  writers	
  per	
  instance]
Events
                  ☐   In distributed systems you often need to model events -- the
                      occurrence of something noteworthy for our system




                                                                                                                                                         Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                  ☐   Examples are a collision alert, the temperature beyond a given
                      threshold, etc.
OpenSplice DDS




                  ☐   The QoS combination to model Events is the following:


                      Reliability	
  	
  	
  	
  	
  	
  =>	
  	
  Reliable
                      Durability	
  	
  	
  	
  	
  	
  	
  =>	
  	
  any	
  	
  	
  	
  	
  	
  	
  	
  [depends	
  on	
  system	
  requirements]	
  
                      History	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  =>	
  	
  KeepAll	
  [on	
  both	
  DataWriter	
  and	
  DataReader!]
                      DestinationOrder	
  =>	
  	
  SourceTimestamp
Streams




                                                                                             Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                  ☐   At times you need to deal with high volumes of frequently
                      changing soft-state
                  ☐   You may have from several hundreds of thousands to several
OpenSplice DDS




                      millions of data readings that need to be distributed in your
                      system... Where each reading is usually from few tends to few
                      hundreds of bytes
                  ☐   OpenSplice provide a special abstraction to deal with this situation
                      called Streams
Streams                                                          struct SCADASensor {
                                                                                     long   sid;
                                                                                     float value;
                                                                                  };
                                                                                  #pragma stream SCADASensor

                  ☐   OpenSplice Streams




                                                                                                                              Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                      transparently perform
                      batching and un-           High Frequency                               High Frequency
                      batching of data based            Samples                                      Samples


                      on samples count or
OpenSplice DDS




                      time
                                                                   StreamDataWriter                      StreamDataReader
                  ☐   OpenSplice Streams                       Batching                                              Un-Batching

                      also provide explicit          Temporal or
                                                 Samples-Count
                      flush operation to force   Driven Batching


                      the middleware to send
                      data
StreamDataWriter




                                                                                                     Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                  StreamDataWriterQos	
  sqos(max_samples,	
  max_delay);

                  SCADASensorStreamDataWriter	
  sdw	
  =	
  
                  	
  	
  	
  new	
  SCADASensorStreamDataWriter(did,	
  sqos,	
  “ScadaSensorT”);
OpenSplice DDS




                  StreamId	
  sid	
  =	
  0;	
  //	
  Your	
  stream	
  Id
                  SCADASensor	
  data	
  =	
  ...
                  sdw.append(sid,	
  data);
                  ...
                  //	
  Explicitely	
  flush	
  the	
  stream
                  sdw.flush(sid);
StreamDataReader




                                                                                                                                Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                  SCADASensorStreamDataReader	
  sdr	
  =	
  
                  	
  	
  	
  new	
  SCADASensorStreamDataReader(did,	
  “ScadaSensorT”);

                  StreamId	
  sid	
  =	
  0;	
  //	
  Your	
  stream	
  Id
                  SCADASensorSeq	
  data;
OpenSplice DDS




                  //	
  Issue	
  a	
  blocking	
  get
                  sdw.get(sid,	
  data,	
  DDS::LENGTH_UNLIMITED,	
  DDS::DURATION_INFINITE);

                  //	
  Note:	
  
                  //	
  	
  -­‐	
  get_with_filter	
  is	
  also	
  available	
  to	
  filter	
  data
                  //	
  	
  -­‐	
  The	
  Stream	
  Examples	
  are	
  shown	
  using	
  the	
  DDS	
  C++	
  2004	
  API	
  
                  //	
  	
  	
  	
  since	
  these	
  are	
  OpenSplice	
  specific	
  extensions.	
  
                  //	
  	
  	
  	
  DDS	
  C++	
  2010	
  counterparts	
  will	
  be	
  soon	
  available.
Resource Management
OpenSplice DDS
LongVariable Example
                 ☐   The “distributed” version of the following code:




                                                                                                                  Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                                     int	
  x;
                                     int	
  y;
                                     x	
  =	
  10;
                                     y	
  =	
  20;
OpenSplice DDS




                                                                                      Topic Type
                     ☐    Becomes:
                         // Create a Publisher                                    struct LongVariable {
                         auto lvt = Topic<LongVariable>(dp, “TLongVariable”);        @Key
                                                                                     string name;
                         // Create DataWriters                                       long   value;
                         auto dw = DataWriter<LongVariable>(pub, topic);          };

                         // Write Data
                         dw.write(LongVariable(“x”,10));
                         dw.write(LongVariable(“y”,20));                        PS. long in IDL is a 32 bit integer
Looking with the Spyglass




                                                     Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                                   Topic
                                TLongValue
                             struct LongVariable {
                                @Key
                                string name;
                                long   value;
OpenSplice DDS




                      dw     };

                                   Policies
                                 name value

                                   x    10

                                   y    20
Declaration vs. Assignement




                                                                                                       Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                                                                                        Assignment
                 {	
                      Declaration
                 	
  	
  int	
  x;                            dw.write(LongVariable(“x”,10));
                 	
  	
  x	
  =	
  10;
                                             Assignment
OpenSplice DDS




                 }

                                   Resources
                                   Reclamation
                                                          ☐   Can we declare topic instances in DDS?
                                                          ☐   Can we control resource reclamation?
Instance Registration




                                                                                                               Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                 {	
                                            auto key = LongVariable(“x”,0)
                                          Declaration
                 	
  	
  int	
  x;                              auto handle =                  Declaration
                 	
  	
  x	
  =	
  10;                             dw.register_instance(key);
                                             Assignment
OpenSplice DDS




                 }
                                                                dw.write(LongVariable(“x”,10));
                                                                                                  Assignment
                                   Resources
                                   Reclamation

                     ☐     Instance registration provides a way of informing the system that the given data
                           writer will be writing the given instance
                     ☐     This operation has an impact on instance life-cycle
                     ☐     The write operation implicitly register the instance being written, if necessary
Instance Un-registration
                  ☐   DDS provides a way for a DataWriter to “un-register” an




                                                                                         Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                      instance thus informing the system that he won’t be writing that
                      specific instance any more

                      This operation has an impact on instance life-cycle
OpenSplice DDS




                  ☐




                                   dw.unregister_instance(handle);
Instance Disposal
                                                            auto key = LongVariable(“x”,0)
                 {	
                      Declaration       auto handle =




                                                                                                          Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                                                                                           Declaration
                 	
  	
  int	
  x;                             dw.register_instance(key);
                 	
  	
  x	
  =	
  10;
                 }                           Assignment     dw.write(LongVariable(“x”,10));
                                                            dw.dispose_instance(handle)
                                                                                             Assignment
OpenSplice DDS




                                   Resources
                                   Reclamation
                                                                          Resources
                                                                          Reclamation


                    ☐      Allows to control resource reclamation for a given instance.
                    ☐      The action of disposing an instance signifies that the system is done
                           with it...
Writer Data Lifecycle
                      The life-cycle of data on the Writer side is controlled by means of




                                                                                             Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                  ☐
                      QoS policy we’ve not introduced yet, the WriterDataLifecycle

                  ☐   This policy controls wether unregistered instances are automatically
OpenSplice DDS




                      disposed or not

                  ☐   This is quite important since when a writer is disposed all its
                      instances are automatically unregistered and depending on the
                      setting of this QoS might also be disposed... Which in some cases is
                      not what you want!
Reader Data Lifecycle
                  ☐   The lifecycle of the data-instances received by the DataReader is




                                                                                            Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                      controlled by the ReaderDataLifecycle policy
                  ☐   This policy allow to control two properties
                  ☐   autopurge_nowriter_samples_delay: the maximum duration for
OpenSplice DDS




                      which the DataReader will maintain information on an instance
                      once its state becomes NOT_ALIVE_NO_WRITERS
                  ☐   autopurge_disposed_samples_delay: the maximum duration for
                      which the DataReader will maintain samples for an instance once
                      its state becomes NOT_ALIVE_DISPOSED
                      PS. The default setting for this policy is INFINITE for both delays
DDS and
                 Functional Programming
OpenSplice DDS
Why Functional Programming (FP)?
                  Some of the main reasons for the steep increase in the adoption of Functional




                                                                                                       Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                  Programming languages are:
                  ☐   Referential Transparency (no side effects): makes it easier to write reusable
                      code and facilitates concurrency (increasingly more important due to multi-
                      cores)
OpenSplice DDS




                  ☐   Declarative style: makes code easier to understand (once you understand the
                      language)
                  ☐   Higher Order abstractions: Higher order functions, pattern matching, algebraic
                      data types, Higher Kinds, makes it easier to express solutions in our domain
                  ☐   Domain Specific Languages (DSL): Functional programming languages like
                      Haskel and Scala make it easy to develop DSLs
Why DDS and FP?
                  ☐   Data Centricity and Stream Computing match very naturally with




                                                                                             Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                      functional programming

                  ☐   All of a sudden your system can be easily modeled as streams of data
                      transformed by composable functions
OpenSplice DDS




                  ☐   Referential transparency makes it easily parallelizable


                                              F(x)
                                                          G(y,z)
struct	
  TempSensor	
  {


                 Example
                                                                                                                	
  	
  	
  long	
  id;
                                                                                                                	
  	
  	
  float	
  temp;
                                                                                                                	
  	
  	
  float	
  hum;
                                                                                                                };
                                                                                                                #pragma	
  keylist	
  TempSensor	
  id



                      Compute the moving average for temperature and humidity




                                                                                                                                                         Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                  ☐


                               val	
  tst	
  	
  =	
  Topic[TempSensor]("TempSensorT")
                               val	
  atst	
  =	
  Topic[TempSensor]("AverageTempSensorT")
OpenSplice DDS




                               val	
  rqos	
  =	
  DataReaderQos()	
  <=	
  History.KeepLast(windowSize)
                               val	
  dr	
  =	
  DataReader[TempSensor](tst,	
  rqos)
                               val	
  dw	
  =	
  DataWriter[TempSensor](atst)

                               reader.reactions	
  +=	
  {
                               	
  	
  case	
  DataAvailable(_)	
  =>	
  {	
  	
  	
  	
  
                               	
  	
  	
  	
  val	
  window	
  =	
  dr.history.data
                               	
  	
  	
  	
  val	
  tempAvg	
  =	
  (0F	
  /:	
  window)(_	
  +	
  _.temp)	
  /	
  window.length
                               	
  	
  	
  	
  val	
  humAvg	
  	
  =	
  (0F	
  /:	
  window)(_	
  +	
  _.hum)	
  /	
  window.length
                               	
  	
  	
  	
  dw	
  !	
  new	
  TempSensor(-­‐1,	
  tempAvg,	
  humAvg)	
  
                               	
  	
  }
                               }
List Comprehension
OpenSplice DDS
List Comprehension in DDS




                                                                                      Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                  ☐   When using the SCALA API, the DDS readers expose data as
                      LinearSeqOptimized thus making possible list comprehension to
                      address quite a few task
OpenSplice DDS




                  ☐   Example
                      ☐   dr read foreach (println)
                      ☐   dr read map (transformer)
                      ☐   ...
Examples
                      Compute the average shape and write it as a Gray Square:




                                                                                 Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                  ☐

                          val data = dr history
                          val s0 = new ShapeType(“GRAY”, 0, 0 ,0)
OpenSplice DDS




                          dw ! scaleShape((s0 /: data) (sumShape), data.size)


                  ☐   Filter samples:

                         (dr read) filter (_.x <= 100 && _.y <= 200)
OpenSplice DDS




                 References
DDS ISO C++ API 2010




                                                          Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                  ☐   github.com/kydos

                  ☐   New C++ API
OpenSplice DDS




                  ☐   Demo applications

                  ☐   Alpha reference
                      implementation (simd-cxx)

                  ☐   online docs
                      ☐   kydos.github.com/dds-psm-cxx/
OpenSplice DDS




          ☐
                             ☐
                                                     ☐


                           New Java API
                                                  github.com/kydos



       Demo applications
                                                                                                       DDS Java 5 API 2010




                              Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
DDS Scala API




                                                   Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                  ☐   github.com/kydos

                  ☐   Scala API for DDS

                      Set of demo showing how
OpenSplice DDS




                  ☐
                      the API can be used

                  ☐   Notice that this API can
                      also be used for scripting
                      DDS applications
OpenSplice DDS




                 Summing Up
Concluding Remarks
                      OpenSplice DDS provides a very powerful abstraction for building




                                                                                          Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                  ☐
                      distributed applications grounded on the concept of a fully
                      distributed global data space
OpenSplice DDS




                  ☐   Topics are used to define the types that populate the global data
                      space while DataWriters and DataReaders are used to produce
                      and consume values

                  ☐   DataReaders allow very flexible data access through cache
                      access operations
OpenSplice DDS
References




                                                                                                                          Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                  OpenSplice | DDS                                                    Escalier
                  ¥ #1 OMG DDS Implementation   ¥ Fastest growing JVM Language      ¥ Scala API for OpenSplice DDS
                  ¥ Open Source                 ¥ Open Source                       ¥ Open Source
                  ¥ www.opensplice.org          ¥ www.scala-lang.org                ¥ github.com/kydos/escalier
OpenSplice DDS




                 ¥ Simple C++ API for DDS       ¥ DDS-PSM-Java for OpenSplice DDS   ¥ DDS-based Advanced Distributed
                 ¥ Open Source                  ¥ Open Source                          Algorithms Toolkit
                 ¥ github.com/kydos/simd-cxx    ¥ github.com/kydos/simd-java        ¥ Open Source
                                                                                      ¥ github.com/kydos/dada
:: Connect with Us ::



                   ¥opensplice.com             ¥forums.opensplice.org
                                                                                         ¥@acorsaro
                   ¥opensplice.org             ¥opensplicedds@prismtech.com                 ¥@prismtech
OpenSplice DDS




                                                                                         ¥ crc@prismtech.com
                                                                                         ¥sales@prismtech.com
                 ¥youtube.com/opensplicetube          ¥slideshare.net/angelo.corsaro

Contenu connexe

Tendances

10 Reasons for Choosing OpenSplice DDS
10 Reasons for Choosing OpenSplice DDS10 Reasons for Choosing OpenSplice DDS
10 Reasons for Choosing OpenSplice DDSAngelo Corsaro
 
OpenSplice DDS Tutorial -- Part II
OpenSplice DDS Tutorial -- Part IIOpenSplice DDS Tutorial -- Part II
OpenSplice DDS Tutorial -- Part IIAngelo Corsaro
 
Advanced OpenSplice Programming - Part I
Advanced OpenSplice Programming - Part IAdvanced OpenSplice Programming - Part I
Advanced OpenSplice Programming - Part IAngelo Corsaro
 
Desktop, Embedded and Mobile Apps with Vortex Café
Desktop, Embedded and Mobile Apps with Vortex CaféDesktop, Embedded and Mobile Apps with Vortex Café
Desktop, Embedded and Mobile Apps with Vortex CaféAngelo Corsaro
 
OMG DDS: The Data Distribution Service for Real-Time Systems
OMG DDS: The Data Distribution Service for Real-Time SystemsOMG DDS: The Data Distribution Service for Real-Time Systems
OMG DDS: The Data Distribution Service for Real-Time SystemsAngelo Corsaro
 
The DDS Security Standard
The DDS Security StandardThe DDS Security Standard
The DDS Security StandardAngelo Corsaro
 
Tuning and Troubleshooting OpenSplice DDS Applications
Tuning and Troubleshooting OpenSplice DDS ApplicationsTuning and Troubleshooting OpenSplice DDS Applications
Tuning and Troubleshooting OpenSplice DDS ApplicationsAngelo Corsaro
 
Getting Started with DDS in C++, Java and Scala
Getting Started with DDS in C++, Java and ScalaGetting Started with DDS in C++, Java and Scala
Getting Started with DDS in C++, Java and ScalaAngelo Corsaro
 
20 Tips for OpenSplice Newbies
20 Tips for OpenSplice Newbies20 Tips for OpenSplice Newbies
20 Tips for OpenSplice NewbiesAngelo Corsaro
 
The Data Distribution Service Tutorial
The Data Distribution Service TutorialThe Data Distribution Service Tutorial
The Data Distribution Service TutorialAngelo Corsaro
 
The DDS Tutorial Part II
The DDS Tutorial Part IIThe DDS Tutorial Part II
The DDS Tutorial Part IIAngelo Corsaro
 
Introducing Vortex Lite
Introducing Vortex LiteIntroducing Vortex Lite
Introducing Vortex LiteAngelo Corsaro
 
Data Sharing in Extremely Resource Constrained Envionrments
Data Sharing in Extremely Resource Constrained EnvionrmentsData Sharing in Extremely Resource Constrained Envionrments
Data Sharing in Extremely Resource Constrained EnvionrmentsAngelo Corsaro
 
Connected Mobile and Web Applications with Vortex
Connected Mobile and Web Applications with VortexConnected Mobile and Web Applications with Vortex
Connected Mobile and Web Applications with VortexAngelo Corsaro
 
Distributed Algorithms with DDS
Distributed Algorithms with DDSDistributed Algorithms with DDS
Distributed Algorithms with DDSAngelo Corsaro
 
Vortex Tutorial -- Part I
Vortex Tutorial -- Part IVortex Tutorial -- Part I
Vortex Tutorial -- Part IAngelo Corsaro
 
Getting Started with Vortex
Getting Started with VortexGetting Started with Vortex
Getting Started with VortexAngelo Corsaro
 

Tendances (20)

10 Reasons for Choosing OpenSplice DDS
10 Reasons for Choosing OpenSplice DDS10 Reasons for Choosing OpenSplice DDS
10 Reasons for Choosing OpenSplice DDS
 
OpenSplice DDS Tutorial -- Part II
OpenSplice DDS Tutorial -- Part IIOpenSplice DDS Tutorial -- Part II
OpenSplice DDS Tutorial -- Part II
 
Advanced OpenSplice Programming - Part I
Advanced OpenSplice Programming - Part IAdvanced OpenSplice Programming - Part I
Advanced OpenSplice Programming - Part I
 
Desktop, Embedded and Mobile Apps with Vortex Café
Desktop, Embedded and Mobile Apps with Vortex CaféDesktop, Embedded and Mobile Apps with Vortex Café
Desktop, Embedded and Mobile Apps with Vortex Café
 
OMG DDS: The Data Distribution Service for Real-Time Systems
OMG DDS: The Data Distribution Service for Real-Time SystemsOMG DDS: The Data Distribution Service for Real-Time Systems
OMG DDS: The Data Distribution Service for Real-Time Systems
 
The DDS Security Standard
The DDS Security StandardThe DDS Security Standard
The DDS Security Standard
 
Tuning and Troubleshooting OpenSplice DDS Applications
Tuning and Troubleshooting OpenSplice DDS ApplicationsTuning and Troubleshooting OpenSplice DDS Applications
Tuning and Troubleshooting OpenSplice DDS Applications
 
Getting Started with DDS in C++, Java and Scala
Getting Started with DDS in C++, Java and ScalaGetting Started with DDS in C++, Java and Scala
Getting Started with DDS in C++, Java and Scala
 
20 Tips for OpenSplice Newbies
20 Tips for OpenSplice Newbies20 Tips for OpenSplice Newbies
20 Tips for OpenSplice Newbies
 
The Data Distribution Service Tutorial
The Data Distribution Service TutorialThe Data Distribution Service Tutorial
The Data Distribution Service Tutorial
 
DDS Security
DDS SecurityDDS Security
DDS Security
 
The DDS Tutorial Part II
The DDS Tutorial Part IIThe DDS Tutorial Part II
The DDS Tutorial Part II
 
Introducing Vortex Lite
Introducing Vortex LiteIntroducing Vortex Lite
Introducing Vortex Lite
 
UML Profile for DDS
UML Profile for DDSUML Profile for DDS
UML Profile for DDS
 
Data Sharing in Extremely Resource Constrained Envionrments
Data Sharing in Extremely Resource Constrained EnvionrmentsData Sharing in Extremely Resource Constrained Envionrments
Data Sharing in Extremely Resource Constrained Envionrments
 
Connected Mobile and Web Applications with Vortex
Connected Mobile and Web Applications with VortexConnected Mobile and Web Applications with Vortex
Connected Mobile and Web Applications with Vortex
 
Distributed Algorithms with DDS
Distributed Algorithms with DDSDistributed Algorithms with DDS
Distributed Algorithms with DDS
 
Vortex Tutorial -- Part I
Vortex Tutorial -- Part IVortex Tutorial -- Part I
Vortex Tutorial -- Part I
 
Getting Started with Vortex
Getting Started with VortexGetting Started with Vortex
Getting Started with Vortex
 
DDS In Action Part II
DDS In Action Part IIDDS In Action Part II
DDS In Action Part II
 

En vedette

The Data Distribution Service Tutorial
The Data Distribution Service TutorialThe Data Distribution Service Tutorial
The Data Distribution Service TutorialAngelo Corsaro
 
Vortex Tutorial Part II
Vortex Tutorial Part IIVortex Tutorial Part II
Vortex Tutorial Part IIAngelo Corsaro
 
DDS Tutorial -- Part I
DDS Tutorial -- Part IDDS Tutorial -- Part I
DDS Tutorial -- Part IAngelo Corsaro
 
Building Real-Time Web Applications with Vortex-Web
Building Real-Time Web Applications with Vortex-WebBuilding Real-Time Web Applications with Vortex-Web
Building Real-Time Web Applications with Vortex-WebAngelo Corsaro
 
Building Reactive Applications with DDS
Building Reactive Applications with DDSBuilding Reactive Applications with DDS
Building Reactive Applications with DDSAngelo Corsaro
 
Building and Scaling Internet of Things Applications with Vortex Cloud
Building and Scaling Internet of Things Applications with Vortex CloudBuilding and Scaling Internet of Things Applications with Vortex Cloud
Building and Scaling Internet of Things Applications with Vortex CloudAngelo Corsaro
 
Matsqui/Swift - Differentiation and Engagement
Matsqui/Swift - Differentiation and EngagementMatsqui/Swift - Differentiation and Engagement
Matsqui/Swift - Differentiation and EngagementFaye Brownlie
 
Planetario 2º ciclo 2013
Planetario 2º ciclo 2013Planetario 2º ciclo 2013
Planetario 2º ciclo 2013XXX XXX
 
Cyberpolitics 2009 W9
Cyberpolitics 2009 W9Cyberpolitics 2009 W9
Cyberpolitics 2009 W9oiwan
 
Building Distributed Systems in Scala with OpenSplice DDS
Building Distributed Systems in Scala with OpenSplice DDSBuilding Distributed Systems in Scala with OpenSplice DDS
Building Distributed Systems in Scala with OpenSplice DDSAngelo Corsaro
 
Brasil Eta Kuba
Brasil Eta KubaBrasil Eta Kuba
Brasil Eta Kubaguestd4e08
 

En vedette (14)

The Data Distribution Service Tutorial
The Data Distribution Service TutorialThe Data Distribution Service Tutorial
The Data Distribution Service Tutorial
 
Mixing for Broadcast and Film
Mixing for Broadcast and FilmMixing for Broadcast and Film
Mixing for Broadcast and Film
 
Vortex Tutorial Part II
Vortex Tutorial Part IIVortex Tutorial Part II
Vortex Tutorial Part II
 
DDS Tutorial -- Part I
DDS Tutorial -- Part IDDS Tutorial -- Part I
DDS Tutorial -- Part I
 
Building Real-Time Web Applications with Vortex-Web
Building Real-Time Web Applications with Vortex-WebBuilding Real-Time Web Applications with Vortex-Web
Building Real-Time Web Applications with Vortex-Web
 
Building Reactive Applications with DDS
Building Reactive Applications with DDSBuilding Reactive Applications with DDS
Building Reactive Applications with DDS
 
Building and Scaling Internet of Things Applications with Vortex Cloud
Building and Scaling Internet of Things Applications with Vortex CloudBuilding and Scaling Internet of Things Applications with Vortex Cloud
Building and Scaling Internet of Things Applications with Vortex Cloud
 
Riz's IRAP Slides
Riz's IRAP SlidesRiz's IRAP Slides
Riz's IRAP Slides
 
Matsqui/Swift - Differentiation and Engagement
Matsqui/Swift - Differentiation and EngagementMatsqui/Swift - Differentiation and Engagement
Matsqui/Swift - Differentiation and Engagement
 
Planetario 2º ciclo 2013
Planetario 2º ciclo 2013Planetario 2º ciclo 2013
Planetario 2º ciclo 2013
 
Cyberpolitics 2009 W9
Cyberpolitics 2009 W9Cyberpolitics 2009 W9
Cyberpolitics 2009 W9
 
Building Distributed Systems in Scala with OpenSplice DDS
Building Distributed Systems in Scala with OpenSplice DDSBuilding Distributed Systems in Scala with OpenSplice DDS
Building Distributed Systems in Scala with OpenSplice DDS
 
Brasil Eta Kuba
Brasil Eta KubaBrasil Eta Kuba
Brasil Eta Kuba
 
Sph 107 Ch 11
Sph 107 Ch 11Sph 107 Ch 11
Sph 107 Ch 11
 

Similaire à Advanced OpenSplice Programming - Part II

DDS-PSM-Cxx and simd-cxx
DDS-PSM-Cxx and simd-cxxDDS-PSM-Cxx and simd-cxx
DDS-PSM-Cxx and simd-cxxAngelo Corsaro
 
Standardizing the Data Distribution Service (DDS) API for Modern C++
Standardizing the Data Distribution Service (DDS) API for Modern C++Standardizing the Data Distribution Service (DDS) API for Modern C++
Standardizing the Data Distribution Service (DDS) API for Modern C++Sumant Tambe
 
Dds the ideal_bus_for_event_processing_engines
Dds the ideal_bus_for_event_processing_enginesDds the ideal_bus_for_event_processing_engines
Dds the ideal_bus_for_event_processing_enginesGerardo Pardo-Castellote
 
Distributed Simulations with DDS and HLA
Distributed Simulations with DDS and HLADistributed Simulations with DDS and HLA
Distributed Simulations with DDS and HLAAngelo Corsaro
 
Introducing the New MagicDraw Plug-In for RTI Connext DDS: Industrial IoT Mee...
Introducing the New MagicDraw Plug-In for RTI Connext DDS: Industrial IoT Mee...Introducing the New MagicDraw Plug-In for RTI Connext DDS: Industrial IoT Mee...
Introducing the New MagicDraw Plug-In for RTI Connext DDS: Industrial IoT Mee...IncQuery Labs
 
Reactive Data Centric Architectures with DDS
Reactive Data Centric Architectures with DDSReactive Data Centric Architectures with DDS
Reactive Data Centric Architectures with DDSAngelo Corsaro
 
Tweeting with OpenSplice DDS
Tweeting with OpenSplice DDSTweeting with OpenSplice DDS
Tweeting with OpenSplice DDSAngelo Corsaro
 
Extensible and Dynamic Topic Types For DDS (out of date)
Extensible and Dynamic Topic Types For DDS (out of date)Extensible and Dynamic Topic Types For DDS (out of date)
Extensible and Dynamic Topic Types For DDS (out of date)Rick Warren
 
Got Big Data? Get OpenSplice!
Got Big Data? Get OpenSplice!Got Big Data? Get OpenSplice!
Got Big Data? Get OpenSplice!Angelo Corsaro
 
Big data Hadoop presentation
Big data  Hadoop  presentation Big data  Hadoop  presentation
Big data Hadoop presentation Shivanee garg
 
Desktop, Embedded and Mobile Apps with PrismTech Vortex Cafe
Desktop, Embedded and Mobile Apps with PrismTech Vortex CafeDesktop, Embedded and Mobile Apps with PrismTech Vortex Cafe
Desktop, Embedded and Mobile Apps with PrismTech Vortex CafeADLINK Technology IoT
 
Eclipse IoT Summit 2016: In The Age of IoT Think Data-Centric
Eclipse IoT Summit 2016: In The Age of IoT Think Data-CentricEclipse IoT Summit 2016: In The Age of IoT Think Data-Centric
Eclipse IoT Summit 2016: In The Age of IoT Think Data-CentricToby McClean
 

Similaire à Advanced OpenSplice Programming - Part II (20)

DDS-PSM-Cxx and simd-cxx
DDS-PSM-Cxx and simd-cxxDDS-PSM-Cxx and simd-cxx
DDS-PSM-Cxx and simd-cxx
 
Standardizing the Data Distribution Service (DDS) API for Modern C++
Standardizing the Data Distribution Service (DDS) API for Modern C++Standardizing the Data Distribution Service (DDS) API for Modern C++
Standardizing the Data Distribution Service (DDS) API for Modern C++
 
SimD
SimDSimD
SimD
 
Dds the ideal_bus_for_event_processing_engines
Dds the ideal_bus_for_event_processing_enginesDds the ideal_bus_for_event_processing_engines
Dds the ideal_bus_for_event_processing_engines
 
Hibernating DDS
Hibernating DDSHibernating DDS
Hibernating DDS
 
Distributed Simulations with DDS and HLA
Distributed Simulations with DDS and HLADistributed Simulations with DDS and HLA
Distributed Simulations with DDS and HLA
 
Introducing the New MagicDraw Plug-In for RTI Connext DDS: Industrial IoT Mee...
Introducing the New MagicDraw Plug-In for RTI Connext DDS: Industrial IoT Mee...Introducing the New MagicDraw Plug-In for RTI Connext DDS: Industrial IoT Mee...
Introducing the New MagicDraw Plug-In for RTI Connext DDS: Industrial IoT Mee...
 
DDS Made Simple
DDS Made SimpleDDS Made Simple
DDS Made Simple
 
Dita Accelerator Xml2008
Dita Accelerator Xml2008Dita Accelerator Xml2008
Dita Accelerator Xml2008
 
Reactive Data Centric Architectures with DDS
Reactive Data Centric Architectures with DDSReactive Data Centric Architectures with DDS
Reactive Data Centric Architectures with DDS
 
SimWare and the new LSA study group on SISO
SimWare and the new LSA study group on SISOSimWare and the new LSA study group on SISO
SimWare and the new LSA study group on SISO
 
Easily Serving and Accessing HDF-EOS2 Datasets Using DODS Technologies
Easily Serving and Accessing HDF-EOS2 Datasets Using DODS TechnologiesEasily Serving and Accessing HDF-EOS2 Datasets Using DODS Technologies
Easily Serving and Accessing HDF-EOS2 Datasets Using DODS Technologies
 
Tweeting with OpenSplice DDS
Tweeting with OpenSplice DDSTweeting with OpenSplice DDS
Tweeting with OpenSplice DDS
 
Cloudand Xchange
Cloudand XchangeCloudand Xchange
Cloudand Xchange
 
DDS vs AMQP
DDS vs AMQPDDS vs AMQP
DDS vs AMQP
 
Extensible and Dynamic Topic Types For DDS (out of date)
Extensible and Dynamic Topic Types For DDS (out of date)Extensible and Dynamic Topic Types For DDS (out of date)
Extensible and Dynamic Topic Types For DDS (out of date)
 
Got Big Data? Get OpenSplice!
Got Big Data? Get OpenSplice!Got Big Data? Get OpenSplice!
Got Big Data? Get OpenSplice!
 
Big data Hadoop presentation
Big data  Hadoop  presentation Big data  Hadoop  presentation
Big data Hadoop presentation
 
Desktop, Embedded and Mobile Apps with PrismTech Vortex Cafe
Desktop, Embedded and Mobile Apps with PrismTech Vortex CafeDesktop, Embedded and Mobile Apps with PrismTech Vortex Cafe
Desktop, Embedded and Mobile Apps with PrismTech Vortex Cafe
 
Eclipse IoT Summit 2016: In The Age of IoT Think Data-Centric
Eclipse IoT Summit 2016: In The Age of IoT Think Data-CentricEclipse IoT Summit 2016: In The Age of IoT Think Data-Centric
Eclipse IoT Summit 2016: In The Age of IoT Think Data-Centric
 

Plus de Angelo Corsaro

zenoh: The Edge Data Fabric
zenoh: The Edge Data Fabriczenoh: The Edge Data Fabric
zenoh: The Edge Data FabricAngelo Corsaro
 
Data Decentralisation: Efficiency, Privacy and Fair Monetisation
Data Decentralisation: Efficiency, Privacy and Fair MonetisationData Decentralisation: Efficiency, Privacy and Fair Monetisation
Data Decentralisation: Efficiency, Privacy and Fair MonetisationAngelo Corsaro
 
zenoh: zero overhead pub/sub store/query compute
zenoh: zero overhead pub/sub store/query computezenoh: zero overhead pub/sub store/query compute
zenoh: zero overhead pub/sub store/query computeAngelo Corsaro
 
zenoh -- the ZEro Network OverHead protocol
zenoh -- the ZEro Network OverHead protocolzenoh -- the ZEro Network OverHead protocol
zenoh -- the ZEro Network OverHead protocolAngelo Corsaro
 
zenoh -- the ZEro Network OverHead protocol
zenoh -- the ZEro Network OverHead protocolzenoh -- the ZEro Network OverHead protocol
zenoh -- the ZEro Network OverHead protocolAngelo Corsaro
 
Breaking the Edge -- A Journey Through Cloud, Edge and Fog Computing
Breaking the Edge -- A Journey Through Cloud, Edge and Fog ComputingBreaking the Edge -- A Journey Through Cloud, Edge and Fog Computing
Breaking the Edge -- A Journey Through Cloud, Edge and Fog ComputingAngelo Corsaro
 
fog05: The Fog Computing Infrastructure
fog05: The Fog Computing Infrastructurefog05: The Fog Computing Infrastructure
fog05: The Fog Computing InfrastructureAngelo Corsaro
 
Cyclone DDS: Sharing Data in the IoT Age
Cyclone DDS: Sharing Data in the IoT AgeCyclone DDS: Sharing Data in the IoT Age
Cyclone DDS: Sharing Data in the IoT AgeAngelo Corsaro
 
fog05: The Fog Computing Platform
fog05: The Fog Computing Platformfog05: The Fog Computing Platform
fog05: The Fog Computing PlatformAngelo Corsaro
 
Programming in Scala - Lecture Four
Programming in Scala - Lecture FourProgramming in Scala - Lecture Four
Programming in Scala - Lecture FourAngelo Corsaro
 
Programming in Scala - Lecture Three
Programming in Scala - Lecture ThreeProgramming in Scala - Lecture Three
Programming in Scala - Lecture ThreeAngelo Corsaro
 
Programming in Scala - Lecture Two
Programming in Scala - Lecture TwoProgramming in Scala - Lecture Two
Programming in Scala - Lecture TwoAngelo Corsaro
 
Programming in Scala - Lecture One
Programming in Scala - Lecture OneProgramming in Scala - Lecture One
Programming in Scala - Lecture OneAngelo Corsaro
 
The Data Distribution Service
The Data Distribution ServiceThe Data Distribution Service
The Data Distribution ServiceAngelo Corsaro
 
RUSTing -- Partially Ordered Rust Programming Ruminations
RUSTing -- Partially Ordered Rust Programming RuminationsRUSTing -- Partially Ordered Rust Programming Ruminations
RUSTing -- Partially Ordered Rust Programming RuminationsAngelo Corsaro
 
Vortex II -- The Industrial IoT Connectivity Standard
Vortex II -- The  Industrial IoT  Connectivity StandardVortex II -- The  Industrial IoT  Connectivity Standard
Vortex II -- The Industrial IoT Connectivity StandardAngelo Corsaro
 

Plus de Angelo Corsaro (20)

Zenoh: The Genesis
Zenoh: The GenesisZenoh: The Genesis
Zenoh: The Genesis
 
zenoh: The Edge Data Fabric
zenoh: The Edge Data Fabriczenoh: The Edge Data Fabric
zenoh: The Edge Data Fabric
 
Zenoh Tutorial
Zenoh TutorialZenoh Tutorial
Zenoh Tutorial
 
Data Decentralisation: Efficiency, Privacy and Fair Monetisation
Data Decentralisation: Efficiency, Privacy and Fair MonetisationData Decentralisation: Efficiency, Privacy and Fair Monetisation
Data Decentralisation: Efficiency, Privacy and Fair Monetisation
 
zenoh: zero overhead pub/sub store/query compute
zenoh: zero overhead pub/sub store/query computezenoh: zero overhead pub/sub store/query compute
zenoh: zero overhead pub/sub store/query compute
 
zenoh -- the ZEro Network OverHead protocol
zenoh -- the ZEro Network OverHead protocolzenoh -- the ZEro Network OverHead protocol
zenoh -- the ZEro Network OverHead protocol
 
zenoh -- the ZEro Network OverHead protocol
zenoh -- the ZEro Network OverHead protocolzenoh -- the ZEro Network OverHead protocol
zenoh -- the ZEro Network OverHead protocol
 
Breaking the Edge -- A Journey Through Cloud, Edge and Fog Computing
Breaking the Edge -- A Journey Through Cloud, Edge and Fog ComputingBreaking the Edge -- A Journey Through Cloud, Edge and Fog Computing
Breaking the Edge -- A Journey Through Cloud, Edge and Fog Computing
 
Eastern Sicily
Eastern SicilyEastern Sicily
Eastern Sicily
 
fog05: The Fog Computing Infrastructure
fog05: The Fog Computing Infrastructurefog05: The Fog Computing Infrastructure
fog05: The Fog Computing Infrastructure
 
Cyclone DDS: Sharing Data in the IoT Age
Cyclone DDS: Sharing Data in the IoT AgeCyclone DDS: Sharing Data in the IoT Age
Cyclone DDS: Sharing Data in the IoT Age
 
fog05: The Fog Computing Platform
fog05: The Fog Computing Platformfog05: The Fog Computing Platform
fog05: The Fog Computing Platform
 
Programming in Scala - Lecture Four
Programming in Scala - Lecture FourProgramming in Scala - Lecture Four
Programming in Scala - Lecture Four
 
Programming in Scala - Lecture Three
Programming in Scala - Lecture ThreeProgramming in Scala - Lecture Three
Programming in Scala - Lecture Three
 
Programming in Scala - Lecture Two
Programming in Scala - Lecture TwoProgramming in Scala - Lecture Two
Programming in Scala - Lecture Two
 
Programming in Scala - Lecture One
Programming in Scala - Lecture OneProgramming in Scala - Lecture One
Programming in Scala - Lecture One
 
The Data Distribution Service
The Data Distribution ServiceThe Data Distribution Service
The Data Distribution Service
 
RUSTing -- Partially Ordered Rust Programming Ruminations
RUSTing -- Partially Ordered Rust Programming RuminationsRUSTing -- Partially Ordered Rust Programming Ruminations
RUSTing -- Partially Ordered Rust Programming Ruminations
 
Vortex II -- The Industrial IoT Connectivity Standard
Vortex II -- The  Industrial IoT  Connectivity StandardVortex II -- The  Industrial IoT  Connectivity Standard
Vortex II -- The Industrial IoT Connectivity Standard
 
Fog Computing Defined
Fog Computing DefinedFog Computing Defined
Fog Computing Defined
 

Dernier

Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfOverkill Security
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusZilliz
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelDeepika Singh
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 

Dernier (20)

Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source Milvus
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 

Advanced OpenSplice Programming - Part II

  • 1. Advanced OpenSplice DDS Programming - Part II - OpenSplice DDS Angelo CORSARO, Ph.D. Chief Technology Officer OMG DDS Sig Co-Chair PrismTech angelo.corsaro@prismtech.com
  • 2. Part I - Recap OpenSplice DDS
  • 3. Key Concepts to Remember ☐ OpenSplice DDS provides a mechanism for efficiently sharing user- Copyright  2011,  PrismTech  –    All  Rights  Reserved. defined data among distributed applications and network connected devices OpenSplice DDS Agricultural Vehicle Systems Large Scale SCADA Systems Smart Cities Train Control Systems Complex Medical Devices Big Data (In-Memory) Analytics
  • 4. Key Concepts to Remember ☐ OpenSplice DDS allows to build distributed systems by reasoning in Copyright  2011,  PrismTech  –    All  Rights  Reserved. terms of application types as opposed to messages OpenSplice DDS TopicA TopicE ... TopicB TopicD TopicC OpenSplice DDS Global Data Space PS. long in IDL is a 32 bit integer
  • 5. Key Concepts to Remember ☐ User defined data types are accessible through “local caches”. Copyright  2011,  PrismTech  –    All  Rights  Reserved. These local caches can have a depth and store multiple updates for the same data item OpenSplice DDS
  • 6. Key Concepts to Remember Copyright  2011,  PrismTech  –    All  Rights  Reserved. ☐ Built-in dynamic discovery automatically establishes associations between data writers and data readers Data Reader Data OpenSplice DDS Writer Data Reader Data TopicD Writer TopicA Data TopicB Reader Data Writer TopicC ... Data Data Writer Reader DDS Global Data Space
  • 7. Anatomy of a DDS Application [DDS C++ API 2010] Domain Domain Copyright  2011,  PrismTech  –    All  Rights  Reserved. auto dp = DomainParticipant(domainId); Participant Session // Create a Topic Publisher Topic Subscriber OpenSplice DDS auto topic = Topic<ShapeType>(dp, “Circle”); // Create a Publisher / Subscriber auto pub = Publisher(dp); auto sub = Subscriber(dp); Reader/Writers for User Defined for Types DataWriter DataReader // Create a DataWriter/DataWriter auto writer = DataWriter<ShapeType>(pub, topic); Reader/Writer for auto reader = DataReader<ShapeType>(sub, topic); application defined Topic Types
  • 8. Anatomy of a DDS Application [DDS C++ API 2010] Domain Domain Copyright  2011,  PrismTech  –    All  Rights  Reserved. auto  dp  =  DomainParticipant(domainId);   Participant Session //  Create  a  Topic Publisher Topic Subscriber OpenSplice DDS auto  topic  =  Topic<ShapeType>(dp,  “Circle”); //  Create  a  Publisher  /  Subscriber auto  pub  =  Publisher(dp); auto  sub  =  Subscriber(dp); Reader/Writers for User Defined for Types DataWriter DataReader //  Write  data writer.write(ShapeType(“RED”,  131,  107,  89)); Reader/Writer for //  But  you  can  also  write  like  this... application defined writer  <<  ShapeType(“RED”,  131,  107,  89); Topic Types //  Read  new  data  (loaned) auto  data  =  reader.read();
  • 9. Anatomy of a DDS Application [DDS Java 5 API 2010] Domain Domain Copyright  2011,  PrismTech  –    All  Rights  Reserved. DomainParticipantFactory  factory  =  DomainParticipantFactory.getInstance(env); DomainParticipant  dp  =  factory.createParticipant(); Participant Session //  Create  a  Topic Topic<ShapeType>  topic  = Publisher Topic Subscriber OpenSplice DDS      dp.createParticipant(“Circle”,  ShapeType.class); //  Create  a  Publisher  /  Subscriber Publisher    pub  =  dp.createPublisher(); Subscriber  sub  =  dp.createSubscriber(); Reader/Writers for User Defined for Types DataWriter DataReader //  Create  a  DataWriter/DataWriter DataWriter<ShapeType>  dw  =pub.createDataWriter(topic);   Reader/Writer for DataReader<ShapeType>  dr  =pub.createDataReader(topic);   application defined Topic Types
  • 10. Anatomy of a DDS Application [DDS Java 5 API 2010] Domain Domain Copyright  2011,  PrismTech  –    All  Rights  Reserved. DomainParticipantFactory  factory  =  DomainParticipantFactory.getInstance(env); DomainParticipant  dp  =  factory.createParticipant(); Participant Session //  Create  a  Topic Topic<ShapeType>  topic  = Publisher Topic Subscriber OpenSplice DDS      dp.createParticipant(“Circle”,  ShapeType.class); //  Create  a  Publisher  /  Subscriber Publisher    pub  =  dp.createPublisher(); Subscriber  sub  =  dp.createSubscriber(); Reader/Writers for User Defined for Types DataWriter DataReader //  write  data dw.write(new  ShapeType(“RED”,  10,  20,  50);   Reader/Writer for //  read  data application defined Sample.Iterator<ShapeType>  data  =  dr.read(); Topic Types
  • 11. OpenSplice DDS Part II
  • 13. QoS Model ☐ QoS-Policies control local and end-to-end properties of DDS Copyright  2011,  PrismTech  –    All  Rights  Reserved. Type Matching entities QoS matching QoS QoS QoS QoS QoS QoS QoS ☐ Local properties controlled by Topic Name QoS are related resource usage Publisher Subscriber ... DataWriter writes Type reads DataReader ... OpenSplice DDS ... ☐ End-to-end properties DomainParticipant DataWriter writes Type reads DataReader DomainParticipant controlled by QoS are related Topic Name to temporal and spatial aspects QoS QoS QoS of data distribution ☐ Some QoS-Policies are matched based on a Request vs. Offered Model thus QoS-enforcement
  • 14. QoS Policies [T: Topic] [DR: DataReader] [DW: DataWriter] [P: Publisher] [S: Subscriber] [DP: Domain Participant] QoS Policy Applicability RxO Modifiable Copyright  2011,  PrismTech  –    All  Rights  Reserved. USER_DATA DP, DR, DW N Y TOPIC_DATA T N Y Configuration GROUP_DATA P, S N Y DURABILITY T, DR, DW Y N OpenSplice DDS DURABILITY T, DW N N SERVICE Data Availability HISTORY T, DR, DW N N PRESENTATION P, S Y N RELIABILITY T, DR, DW Y N PARTITION P, S N Y Data Delivery DESTINATION T, DR, DW Y N ORDER LIFESPAN T, DW N Y
  • 15. QoS Policies [T: Topic] [DR: DataReader] [DW: DataWriter] [P: Publisher] [S: Subscriber] [DP: Domain Participant] QoS Policy Applicability RxO Modifiable Copyright  2011,  PrismTech  –    All  Rights  Reserved. DEADLINE T, DR, DW Y Y LATENCY T, DR, DW Y Y BUDGET Temporal/ TRANSPORT T, DW N Y Importance PRIORITY Characteristics OpenSplice DDS TIME BASED DR N Y FILTER OWNERSHIP T, DR, DW Y N OWNERSHIP DW N Y Replication STRENGTH LIVELINESS T, DR, DW Y N Fault-Detection
  • 16. OpenSplice DDS Partition Data Delivery Reliability Presentation Data Delivery Order Destination Copyright  2011,  PrismTech  –    All  Rights  Reserved.
  • 17. Reliability QoS Policy QoS Policy Applicability RxO Modifiable RELIABILITY T, DR, DW Y N Copyright  2011,  PrismTech  –    All  Rights  Reserved. The Reliability Policy controls the level of guarantee offered by the DDS in delivering data to subscribers ☐ Reliable. In steady-state, and no data writer crashes, the OpenSplice DDS middleware guarantees that all samples in the DataWriter history will eventually be delivered to all the DataReader ☐ Best Effort. Indicates that it is acceptable to not retry propagation of any samples
  • 18. Setting the Reliability Policy [DDS C++ API 2010] Copyright  2011,  PrismTech  –    All  Rights  Reserved. DataWriterQos  dwqos  =        pub.default_datawriter_qos()  <<  Reliability.Reliable(); OpenSplice DDS -­‐  or  -­‐ DataWriterQos  dwqos  =        pub.default_datawriter_qos()  <<  Reliability.BestEffort();
  • 19. Setting the Partition Policy [DDS Java 5 API 2010] Copyright  2011,  PrismTech  –    All  Rights  Reserved. final  PolicyFactory  pf  =  ... DataWriterQos  dwqos  =        pub.getDefaultDataWriterQos() OpenSplice DDS            .withPolicies(pf.Reliability.withReliable());   -­‐  or  -­‐ DataWriterQos  dwqos  =        pub.getDefaultDataWriterQos()            .withPolicies(pf.Reliability.withBestEffort());  
  • 20. Partition QoS Policy QoS Policy Applicability RxO Modifiable ☐ The Partition QoS Policy can PARTITION P, S N Y Copyright  2011,  PrismTech  –    All  Rights  Reserved. be used as subjects for organizing the flows of data ☐ The Partition QoS Policy is Subscriber used to connect Publishers/ Publisher "tracks.kfo" "tracks.ufo" OpenSplice DDS Subscribers to a Partitions’ List which might also contain wildcards, e.g. Subscriber Publisher tracks.* ☐ Topics instances are published and subscribed Publisher Subscriber across one or more Partition Partitions
  • 21. Setting the Partition Policy [DDS C++ API 2010] Copyright  2011,  PrismTech  –    All  Rights  Reserved. PublisherQos  pqos  =        dp.default_publisher_qos()  <<  Partition(“MyPartition”); OpenSplice DDS -­‐  or  -­‐ PublisherQos  pqos  =        dp.default_publisher_qos()  <<  Partition(myPartitionList);
  • 22. Setting the Partition Policy [DDS Java 5 API 2010] Copyright  2011,  PrismTech  –    All  Rights  Reserved. final  PolicyFactory  pf  =  ... PublisherQos  pqos  =        dp.getDefaultPublisherQos() OpenSplice DDS            .withPolicies(pf.Partition(“MyPartition”));   -­‐  or  -­‐ PublisherQos  pqos  =        dp.getDefaultPublisherQos()            .withPolicies(pf.Partition(myPartitionList));  
  • 23. Data Availability History Copyright  2011,  PrismTech  –    All  Rights  Reserved. Data OpenSplice DDS Lifespan Durability Availability Ownership Ownership Strength
  • 24. Durability QoS Policy QoS Policy Applicability RxO Modifiable DURABILITY T, DR, DW Y N Copyright  2011,  PrismTech  –    All  Rights  Reserved. The DURABILITY QoS controls the data availability w.r.t. late joiners, specifically the DDS provides the following variants: ☐ Volatile. No need to keep data instances for late joining data readers OpenSplice DDS ☐ Transient Local. Data instance availability for late joining data reader is tied to the data writer availability ☐ Transient. Data instance availability outlives the data writer ☐ Persistent. Data instance availability outlives system restarts
  • 25. Volatile Data Writer Copyright  2011,  PrismTech  –    All  Rights  Reserved. 1 TopicA Data Reader OpenSplice DDS DDS Global Data Space ‣ No Time Decoupling ‣ Readers get only data produced after they joined the Global Data Space
  • 26. Volatile Late Joiner Data Data Reader Writer Copyright  2011,  PrismTech  –    All  Rights  Reserved. TopicA Data Reader OpenSplice DDS 1 DDS Global Data Space ‣ No Time Decoupling ‣ Readers get only data produced after they joined the Global Data Space
  • 27. Volatile Data Data Reader Writer Copyright  2011,  PrismTech  –    All  Rights  Reserved. 2 TopicA Data Reader OpenSplice DDS 1 DDS Global Data Space ‣ No Time Decoupling ‣ Readers get only data produced after they joined the Global Data Space
  • 28. Transient Local Data Writer Copyright  2011,  PrismTech  –    All  Rights  Reserved. 1 TopicA Data Reader OpenSplice DDS DDS Global Data Space ‣ Some Time Decoupling ‣ Data availability is tied to the availability of the data writer and the history settings
  • 29. Transient Local Late Joiner Data Data Reader Writer Copyright  2011,  PrismTech  –    All  Rights  Reserved. 1 TopicA Data Reader OpenSplice DDS 1 DDS Global Data Space ‣ Some Time Decoupling ‣ Data availability is tied to the availability of the data writer and the history settings
  • 30. Transient Local Data Data Reader Writer Copyright  2011,  PrismTech  –    All  Rights  Reserved. 1 1 2 TopicA Data Reader OpenSplice DDS 1 DDS Global Data Space ‣ Some Time Decoupling ‣ Data availability is tied to the availability of the data writer and the history settings
  • 31. Transient Data Writer Copyright  2011,  PrismTech  –    All  Rights  Reserved. 1 TopicA Data Reader OpenSplice DDS DDS Global Data Space ‣ Time Decoupling ‣ Data availability is tied to the availability of the durability service -- a fully distributed fault-tolerant service in the case of OpenSplice DDS.
  • 32. Transient Late Joiner Data Data Reader Writer Copyright  2011,  PrismTech  –    All  Rights  Reserved. TopicA 1 Data Reader OpenSplice DDS 1 DDS Global Data Space ‣ Time Decoupling ‣ Data availability is tied to the availability of the durability service -- a fully distributed fault-tolerant service in the case of OpenSplice DDS.
  • 33. Transient Data Reader Copyright  2011,  PrismTech  –    All  Rights  Reserved. 1 TopicA 1 Data Reader OpenSplice DDS 1 DDS Global Data Space ‣ Time Decoupling ‣ Data availability is tied to the availability of the durability service -- a fully distributed fault-tolerant service in the case of OpenSplice DDS.
  • 34. Transient Data Reader Copyright  2011,  PrismTech  –    All  Rights  Reserved. 1 TopicA 1 Data Reader OpenSplice DDS 1 Data Reader DDS Global Data Space Late Joiner ‣ Time Decoupling ‣ Data availability is tied to the availability of the durability service -- a fully distributed fault-tolerant service in the case of OpenSplice DDS.
  • 35. History QoS Policy QoS Policy Applicability RxO Modifiable HISTORY T, DR, DW N N Copyright  2011,  PrismTech  –    All  Rights  Reserved. For DataWriters, the HISTORY QoS policy controls the amount of data that can be made available to late joining DataReaders under TRANSIENT_LOCAL Durability OpenSplice DDS For DataReader, the HISTORY QoS policy controls how many samples will be kept on the reader cache ☐ Keep Last. DDS will keep the most recent “depth” samples of each instance of data identified by its key ☐ Keep All. The DDS keep all the samples of each instance of data identified by its key -- up to reaching some configurable resource limits
  • 36. Ownership QoS Policy QoS Policy Applicability RxO Modifiable OWNERSHIP T, DR, DW Y N STRENGTH DW N Y Copyright  2011,  PrismTech  –    All  Rights  Reserved. Availability of data producers can be controlled via two QoS Policies ☐ OWNERSHIP (SHARED vs. EXCLUSIVE) OpenSplice DDS ☐ OWNERSHIP STRENGTH ☐ Instances of exclusively owned Topics can be modified (are owned) by the higher strength writer ☐ Writer strength is used to coordinate replicated writers
  • 37. Temporal Properties Copyright  2011,  PrismTech  –    All  Rights  Reserved. TimeBasedFilter Deadline [Inbound] OpenSplice DDS Throughput LatencyBudget Latency [Outbound] TransportPriority
  • 38. Latency Budget QoS Policy QoS Policy Applicability RxO Modifiable LATENCY T, DR, DW Y Y ☐ The LATENCY_BUDGET QoS BUDGET Copyright  2011,  PrismTech  –    All  Rights  Reserved. policy specifies the maximum acceptable delay from the time the data is written until the data OpenSplice DDS is inserted in the receiver's application-cache Latency = T1+T2+T3 DataWriter T3 DataReader ☐ A non-zero latency-budget T1 allows a DDS Batching implementation to batch T2 samples and improve CPU/ Network utilization
  • 39. Deadline QoS Policy QoS Policy Applicability RxO Modifiable DEADLINE T, DR, DW Y Y Copyright  2011,  PrismTech  –    All  Rights  Reserved. ☐ The DEADLINE QoS policy allows to define the maximum inter-arrival time between data samples ☐ DataWriter indicates that the application commits to write a new OpenSplice DDS value at least once every deadline period ☐ DataReaders are notified by the DDS when the DEADLINE QoS contract is violated DataWriter Deadline Deadline Deadline Deadline Deadline DataReader Deadline Violation
  • 40. Transport Priority QoS Policy QoS Policy Applicability RxO Modifiable TRANSPORT T, DW N Y PRIORITY Copyright  2011,  PrismTech  –    All  Rights  Reserved. ☐ The TRANSPORT_PRIORITY QoS policy is a hint to the infrastructure as OpenSplice DDS to how to set the priority of the underlying transport used to send the data.
  • 41. Time-Based Filter QoS Policy QoS Policy Applicability RxO Modifiable TIME BASED DR N Y FILTER Copyright  2011,  PrismTech  –    All  Rights  Reserved. mit mit ☐ The Time Based Filter allows to control the throughput at which Latency = T1+T2+T3 data is received by a data reader OpenSplice DDS DataWriter T3 DataReader ☐ Samples produced more often T2 than the minimum inter-arrival time are not delivered to the data reader mit mit mit = minimum inter-arrival time produced sample delivered sample discarded sample
  • 42. QoS Provider ☐ The new C++ and Java APIs introduce the concept of a QoS Copyright  2011,  PrismTech  –    All  Rights  Reserved. Provider ☐ This class allows to externally define policies and decouples the mechanism used to define and access policy definition with policy OpenSplice DDS creation            //  QosProvider...            QosProvider  qos_provider(                        "http://www.opensplice.org/demo/config/qos.xml",                        "ishapes-­‐profile");            DataReader<ShapeType>  dr(sub,  topic,  qos_provider.datareader_qos());
  • 43. QoS and Data Modeling OpenSplice DDS Patterns
  • 44. Soft State ☐ In distributed systems you often need to model soft-state -- a state Copyright  2011,  PrismTech  –    All  Rights  Reserved. that is periodically updated ☐ Examples are the reading of a sensor (e.g. Temperature Sensor), the position of a vehicle, etc. OpenSplice DDS ☐ The QoS combination to model Soft-State is the following: Reliability            =>    BestEffort Durability              =>    Volatile   History                    =>    KeepLast(n)  [with  n  =  1  in  most  of  the  cases] Deadline                  =>    updatePeriod LatencyBudget        =>    updatePeriod/3  [rule  of  thumb] DestinationOrder  =>    SourceTimestamp  [if  multiple  writers  per  instance]
  • 45. Hard State ☐ In distributed systems you often need to model hard-state -- a state Copyright  2011,  PrismTech  –    All  Rights  Reserved. that is sporadically updated and that often has temporal persistence requirements ☐ Examples are system configuration, a price estimate, etc. OpenSplice DDS ☐ The QoS combination to model Hard-State is the following: Reliability            =>    Reliable Durability              =>    Transient  |  Persistent   History                    =>    KeepLast(n)  [with  n  =  1  in  most  of  the  cases] DestinationOrder  =>    SourceTimestamp  [if  multiple  writers  per  instance]
  • 46. Events ☐ In distributed systems you often need to model events -- the occurrence of something noteworthy for our system Copyright  2011,  PrismTech  –    All  Rights  Reserved. ☐ Examples are a collision alert, the temperature beyond a given threshold, etc. OpenSplice DDS ☐ The QoS combination to model Events is the following: Reliability            =>    Reliable Durability              =>    any                [depends  on  system  requirements]   History                    =>    KeepAll  [on  both  DataWriter  and  DataReader!] DestinationOrder  =>    SourceTimestamp
  • 47. Streams Copyright  2011,  PrismTech  –    All  Rights  Reserved. ☐ At times you need to deal with high volumes of frequently changing soft-state ☐ You may have from several hundreds of thousands to several OpenSplice DDS millions of data readings that need to be distributed in your system... Where each reading is usually from few tends to few hundreds of bytes ☐ OpenSplice provide a special abstraction to deal with this situation called Streams
  • 48. Streams struct SCADASensor { long sid; float value; }; #pragma stream SCADASensor ☐ OpenSplice Streams Copyright  2011,  PrismTech  –    All  Rights  Reserved. transparently perform batching and un- High Frequency High Frequency batching of data based Samples Samples on samples count or OpenSplice DDS time StreamDataWriter StreamDataReader ☐ OpenSplice Streams Batching Un-Batching also provide explicit Temporal or Samples-Count flush operation to force Driven Batching the middleware to send data
  • 49. StreamDataWriter Copyright  2011,  PrismTech  –    All  Rights  Reserved. StreamDataWriterQos  sqos(max_samples,  max_delay); SCADASensorStreamDataWriter  sdw  =        new  SCADASensorStreamDataWriter(did,  sqos,  “ScadaSensorT”); OpenSplice DDS StreamId  sid  =  0;  //  Your  stream  Id SCADASensor  data  =  ... sdw.append(sid,  data); ... //  Explicitely  flush  the  stream sdw.flush(sid);
  • 50. StreamDataReader Copyright  2011,  PrismTech  –    All  Rights  Reserved. SCADASensorStreamDataReader  sdr  =        new  SCADASensorStreamDataReader(did,  “ScadaSensorT”); StreamId  sid  =  0;  //  Your  stream  Id SCADASensorSeq  data; OpenSplice DDS //  Issue  a  blocking  get sdw.get(sid,  data,  DDS::LENGTH_UNLIMITED,  DDS::DURATION_INFINITE); //  Note:   //    -­‐  get_with_filter  is  also  available  to  filter  data //    -­‐  The  Stream  Examples  are  shown  using  the  DDS  C++  2004  API   //        since  these  are  OpenSplice  specific  extensions.   //        DDS  C++  2010  counterparts  will  be  soon  available.
  • 52. LongVariable Example ☐ The “distributed” version of the following code: Copyright  2011,  PrismTech  –    All  Rights  Reserved. int  x; int  y; x  =  10; y  =  20; OpenSplice DDS Topic Type ☐ Becomes: // Create a Publisher struct LongVariable { auto lvt = Topic<LongVariable>(dp, “TLongVariable”); @Key string name; // Create DataWriters long value; auto dw = DataWriter<LongVariable>(pub, topic); }; // Write Data dw.write(LongVariable(“x”,10)); dw.write(LongVariable(“y”,20)); PS. long in IDL is a 32 bit integer
  • 53. Looking with the Spyglass Copyright  2011,  PrismTech  –    All  Rights  Reserved. Topic TLongValue struct LongVariable { @Key string name; long value; OpenSplice DDS dw }; Policies name value x 10 y 20
  • 54. Declaration vs. Assignement Copyright  2011,  PrismTech  –    All  Rights  Reserved. Assignment {   Declaration    int  x; dw.write(LongVariable(“x”,10));    x  =  10; Assignment OpenSplice DDS } Resources Reclamation ☐ Can we declare topic instances in DDS? ☐ Can we control resource reclamation?
  • 55. Instance Registration Copyright  2011,  PrismTech  –    All  Rights  Reserved. {   auto key = LongVariable(“x”,0) Declaration    int  x; auto handle = Declaration    x  =  10; dw.register_instance(key); Assignment OpenSplice DDS } dw.write(LongVariable(“x”,10)); Assignment Resources Reclamation ☐ Instance registration provides a way of informing the system that the given data writer will be writing the given instance ☐ This operation has an impact on instance life-cycle ☐ The write operation implicitly register the instance being written, if necessary
  • 56. Instance Un-registration ☐ DDS provides a way for a DataWriter to “un-register” an Copyright  2011,  PrismTech  –    All  Rights  Reserved. instance thus informing the system that he won’t be writing that specific instance any more This operation has an impact on instance life-cycle OpenSplice DDS ☐ dw.unregister_instance(handle);
  • 57. Instance Disposal auto key = LongVariable(“x”,0) {   Declaration auto handle = Copyright  2011,  PrismTech  –    All  Rights  Reserved. Declaration    int  x; dw.register_instance(key);    x  =  10; } Assignment dw.write(LongVariable(“x”,10)); dw.dispose_instance(handle) Assignment OpenSplice DDS Resources Reclamation Resources Reclamation ☐ Allows to control resource reclamation for a given instance. ☐ The action of disposing an instance signifies that the system is done with it...
  • 58. Writer Data Lifecycle The life-cycle of data on the Writer side is controlled by means of Copyright  2011,  PrismTech  –    All  Rights  Reserved. ☐ QoS policy we’ve not introduced yet, the WriterDataLifecycle ☐ This policy controls wether unregistered instances are automatically OpenSplice DDS disposed or not ☐ This is quite important since when a writer is disposed all its instances are automatically unregistered and depending on the setting of this QoS might also be disposed... Which in some cases is not what you want!
  • 59. Reader Data Lifecycle ☐ The lifecycle of the data-instances received by the DataReader is Copyright  2011,  PrismTech  –    All  Rights  Reserved. controlled by the ReaderDataLifecycle policy ☐ This policy allow to control two properties ☐ autopurge_nowriter_samples_delay: the maximum duration for OpenSplice DDS which the DataReader will maintain information on an instance once its state becomes NOT_ALIVE_NO_WRITERS ☐ autopurge_disposed_samples_delay: the maximum duration for which the DataReader will maintain samples for an instance once its state becomes NOT_ALIVE_DISPOSED PS. The default setting for this policy is INFINITE for both delays
  • 60. DDS and Functional Programming OpenSplice DDS
  • 61. Why Functional Programming (FP)? Some of the main reasons for the steep increase in the adoption of Functional Copyright  2011,  PrismTech  –    All  Rights  Reserved. Programming languages are: ☐ Referential Transparency (no side effects): makes it easier to write reusable code and facilitates concurrency (increasingly more important due to multi- cores) OpenSplice DDS ☐ Declarative style: makes code easier to understand (once you understand the language) ☐ Higher Order abstractions: Higher order functions, pattern matching, algebraic data types, Higher Kinds, makes it easier to express solutions in our domain ☐ Domain Specific Languages (DSL): Functional programming languages like Haskel and Scala make it easy to develop DSLs
  • 62. Why DDS and FP? ☐ Data Centricity and Stream Computing match very naturally with Copyright  2011,  PrismTech  –    All  Rights  Reserved. functional programming ☐ All of a sudden your system can be easily modeled as streams of data transformed by composable functions OpenSplice DDS ☐ Referential transparency makes it easily parallelizable F(x) G(y,z)
  • 63. struct  TempSensor  { Example      long  id;      float  temp;      float  hum; }; #pragma  keylist  TempSensor  id Compute the moving average for temperature and humidity Copyright  2011,  PrismTech  –    All  Rights  Reserved. ☐ val  tst    =  Topic[TempSensor]("TempSensorT") val  atst  =  Topic[TempSensor]("AverageTempSensorT") OpenSplice DDS val  rqos  =  DataReaderQos()  <=  History.KeepLast(windowSize) val  dr  =  DataReader[TempSensor](tst,  rqos) val  dw  =  DataWriter[TempSensor](atst) reader.reactions  +=  {    case  DataAvailable(_)  =>  {                val  window  =  dr.history.data        val  tempAvg  =  (0F  /:  window)(_  +  _.temp)  /  window.length        val  humAvg    =  (0F  /:  window)(_  +  _.hum)  /  window.length        dw  !  new  TempSensor(-­‐1,  tempAvg,  humAvg)      } }
  • 65. List Comprehension in DDS Copyright  2011,  PrismTech  –    All  Rights  Reserved. ☐ When using the SCALA API, the DDS readers expose data as LinearSeqOptimized thus making possible list comprehension to address quite a few task OpenSplice DDS ☐ Example ☐ dr read foreach (println) ☐ dr read map (transformer) ☐ ...
  • 66. Examples Compute the average shape and write it as a Gray Square: Copyright  2011,  PrismTech  –    All  Rights  Reserved. ☐ val data = dr history val s0 = new ShapeType(“GRAY”, 0, 0 ,0) OpenSplice DDS dw ! scaleShape((s0 /: data) (sumShape), data.size) ☐ Filter samples: (dr read) filter (_.x <= 100 && _.y <= 200)
  • 67. OpenSplice DDS References
  • 68. DDS ISO C++ API 2010 Copyright  2011,  PrismTech  –    All  Rights  Reserved. ☐ github.com/kydos ☐ New C++ API OpenSplice DDS ☐ Demo applications ☐ Alpha reference implementation (simd-cxx) ☐ online docs ☐ kydos.github.com/dds-psm-cxx/
  • 69. OpenSplice DDS ☐ ☐ ☐ New Java API github.com/kydos Demo applications DDS Java 5 API 2010 Copyright  2011,  PrismTech  –    All  Rights  Reserved.
  • 70. DDS Scala API Copyright  2011,  PrismTech  –    All  Rights  Reserved. ☐ github.com/kydos ☐ Scala API for DDS Set of demo showing how OpenSplice DDS ☐ the API can be used ☐ Notice that this API can also be used for scripting DDS applications
  • 71. OpenSplice DDS Summing Up
  • 72. Concluding Remarks OpenSplice DDS provides a very powerful abstraction for building Copyright  2011,  PrismTech  –    All  Rights  Reserved. ☐ distributed applications grounded on the concept of a fully distributed global data space OpenSplice DDS ☐ Topics are used to define the types that populate the global data space while DataWriters and DataReaders are used to produce and consume values ☐ DataReaders allow very flexible data access through cache access operations
  • 74. References Copyright  2011,  PrismTech  –    All  Rights  Reserved. OpenSplice | DDS Escalier ¥ #1 OMG DDS Implementation ¥ Fastest growing JVM Language ¥ Scala API for OpenSplice DDS ¥ Open Source ¥ Open Source ¥ Open Source ¥ www.opensplice.org ¥ www.scala-lang.org ¥ github.com/kydos/escalier OpenSplice DDS ¥ Simple C++ API for DDS ¥ DDS-PSM-Java for OpenSplice DDS ¥ DDS-based Advanced Distributed ¥ Open Source ¥ Open Source Algorithms Toolkit ¥ github.com/kydos/simd-cxx ¥ github.com/kydos/simd-java ¥ Open Source ¥ github.com/kydos/dada
  • 75. :: Connect with Us :: ¥opensplice.com ¥forums.opensplice.org ¥@acorsaro ¥opensplice.org ¥opensplicedds@prismtech.com ¥@prismtech OpenSplice DDS ¥ crc@prismtech.com ¥sales@prismtech.com ¥youtube.com/opensplicetube ¥slideshare.net/angelo.corsaro