Splice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS DDS QoS Unleashed :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: Angelo Corsaro, Ph.D. Chief Technology Officer PrismTech OMG DDS SIG Co-Chair angelo.corsaro@prismtech.com Splice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: ‣ Recap of DDS Basics ‣ QoS Model ‣ DDS QoS ‣ QoS Patterns OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD Agenda :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: The OMG DDS Standard ‣ Introduced in 2004 to address the Data distribution challenges typical of Defense and Aerospace Applications ‣ Key requirement for the standard were high performance and scalability from embedded to ultra-large-scale deployments ‣ Today recommended by key administration worldwide and widely adopted well beyond Aerospace and Defense in domains, such as, Automated Trading, Simulations, SCADA, Telemetry, etc. OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD The OMG DDS :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: DDS v1.2 API Standard Application ‣ Language Independent, OS and Object/Relational Mapping HW architecture independent ‣ DCPS. Standard API for Data- Centric, Topic-Based, Real-Time Publish/Subscribe ‣ DLRL. Standard API for creating Object Views out of collection of Topics Data Local Reconstruction Layer (DLRL) Ownership Durability Content Subscription Minimum Profile Data Centric Publish/Subscribe (DCPS) Real-Time Publish/Subscribe Protocol DDS Interoperability Wire Protocol UDP/IP OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD The OMG Data Distribution Service :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: DDSI/RTPS v2.1 Wire Protocol Standard Application Object/Relational Mapping ‣ Standard wire protocol allowing interoperability between different implementations of the DDS standard ‣ Interoperability demonstrated among key DDS vendors in March 2009 Data Local Reconstruction Layer (DLRL) Ownership Durability Content Subscription Minimum Profile Data Centric Publish/Subscribe (DCPS) Real-Time Publish/Subscribe Protocol DDS Interoperability Wire Protocol UDP/IP OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD The OMG Data Distribution Service OpenSplice DDS Delivering Performance, Openness, and Freedom :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: How Does it Works?!? :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: ‣ DDS is based around the en as a e s e b n a c Note: DDS INDA L e h t f o n relaxatio model n o i t a n i coord Brokers concept of a fully distributed Global Data Space (GDS) ‣ Applications can autonomously and asynchronously read/ written data in the GDS DDS Global Data Space OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD How Does it Work? :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: Brokers ‣ Publishers and Subscribers can join and leave the GDS at any time DDS Publisher Global Data Space OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD How Does it Work? :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: Brokers Publisher Subscriber ‣ Publishers and Subscribers can join and leave the GDS at any time DDS Publisher Publisher Subscriber Global Data Space Subscriber OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD How Does it Work? :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: ‣ Publishers and Subscribers express their intent to produce/consume specific type of data, e.g., Topics Brokers Publisher DDS Publisher Publisher Subscriber Subscriber Global Data Space Subscriber OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD How Does it Work? :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: ‣ Subscriptions are matched by taking into account topics (name, data type and QoS) Brokers Publisher DDS Publisher Publisher Subscriber Subscriber Global Data Space Subscriber OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD How Does it Work? :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: Brokers Publisher Subscriber ‣ Subscriptions are dynamically matched and Data flows from Publisher to Subscribers DDS Publisher Publisher Subscriber Global Data Space Subscriber OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD How Does it Work? :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: Brokers Publisher Subscriber ‣ Subscriptions are dynamically matched and Data flows from Publisher to Subscribers DDS Publisher Publisher Subscriber Global Data Space Subscriber OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD How Does it Work? OpenSplice DDS Delivering Performance, Openness, and Freedom :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: Defining Data :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: Topic: Track, UFO, AirCraft, ... ‣ Unit of information exchanged between Publisher and Subscribers. ‣ An association between a unique name, a type and a QoS setting Name Type TrackedObject Topic QoS { } Reliability Deadline, Priority Transient, ... OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD Topic -- the unit of information :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: Topic Type: ‣ Type describing the data associated with one or more Topics ‣ A Topic type can have a key represented by an arbitrary number of attributes ‣ Expressed in IDL (or XML) struct TrackedObject { long oId; long x; long y; long size; }; #pragma keylist TrackedObject oId struct FlightPlan { string code; long trackId; string origin; string dest; sequence<Coord> trajectory; }; #pragma keylist FlightPlan code OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD Topic -- the unit of information :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: Topic Instances ‣ Each key value identifies a unique Topic Instance ‣ Topic’s instance lifetime can be explicitly managed in DDS Topic Samples struct TrackedObject { long oId; long x; long y; long size; }; #pragma keylist TrackedObject oId ‣ The values assumed by a Topic Instance over time are referred as Instance Sample OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD DDS Topic Instances and Samples :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: Topics FlyingCar Instances UFO Airfraft Samples ti tj tnow time OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD Topic/Instances/Samples Recap. :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: X0 X0 <= X <= X1 ‣ DDS allows the use of a subset of SQL92 to specify content-filtered Topics ‣ Content filters can be applied on Y0 the entire content of the Topic Type Y0 <= Y <= Y1 ‣ Content filters are applied by DDS Y1 each time a new sample is produced/delivered (x BETWEEN (RANGE x0 AND x1)) AND (y BETWEEN (RANGE y0 AND y1)) X1 OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD Content Filtering :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: X0 X0 <= X <= X1 ‣ DDS allows the use of a subset of SQL92 to specify content-filtered Topics ‣ Content filters can be applied on Y0 the entire content of the Topic Type Y0 <= Y <= Y1 ‣ Content filters are applied by DDS Y1 each time a new sample is produced/delivered (x BETWEEN (RANGE x0 AND x1)) AND (y BETWEEN (RANGE y0 AND y1)) X1 OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD Content Filtering OpenSplice DDS Delivering Performance, Openness, and Freedom :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: Quality of Service :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: ‣ QoS-Policies provide control over local and end-to-end properties of DDS entities ‣ Local properties controlled by QoS are related resource usage Type Matching QoS matching QoS QoS QoS QoS QoS QoS QoS Topic Name Publisher ... DataWriter writes Type reads Subscriber DataReader ... ... DomainParticipant DataWriter writes Type reads DataReader DomainParticipant Name Topic QoS QoS QoS ‣ End-to-end properties controlled by QoS are related to temporal and spatial aspects of data distribution ‣ Some QoS-Policies are matched based on a Request vs. Offered Model thus QoS-enforcement OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD QoS Model :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: QoS Policy Applicability RxO Modifiable DURABILITY T, DR, DW Y N DURABILITY SERVICE T, DW N N LIFESPAN T, DW N/A Y HISTORY T, DR, DW N N P, S Y N T, DR, DW Y N P, S N Y DESTINATION ORDER T, DR, DW Y N OWNERSHIP T, DR, DW Y N OWNERSHIP STRENGTH DW N/A Y PRESENTATIO N RELIABILITY PARTITION DEADLINE T, DR, DW Y Y LATENCY BUDGET T, DR, DW Y Y T, DW N/A Y TRANSPORT PRIORITY QoS Policy Data Availability Applicability RxO Modifiable TIME BASED FILTER DR N/A Y RESOURCE LIMITS T, DR, DW N N USER DATA DP, DR, DW N Y TOPIC DATA T N Y GROUP DATA P, S N Y T, DR, DW Y N WRITER DATA LIFECYCLE DW N/A Y READER DATA LIFECYCLE DR N/A Y Resources ENTITY FACTORY Data Delivery LIVELINESS Data Timeliness Configuratio n Lifecycle :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: Which properties does QoS controls? TimeBasedFilter Deadline Throughput Data Latency LatencyBudget History TransportPriority Reliability Data Delivery Control over data distribution reliability Control over data ordering Control over presentation Data Availability Ownership Strength Ownership Control over data queueing Control over data persistency Control over data sources hot-swap Control over Latency/Throughput tradeoff Control over data latency Control over data priority Presentation Lifespan Destination Order Durability :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: Which properties does QoS controls? TimeBasedFilter Deadline Throughput Data Latency LatencyBudget History TransportPriority Lifespan Data Availability Ownership Strength Ownership Durability Control over data queueing Control over data persistency Control over data sources hot-swap Control over Latency/Throughput tradeoff Control over data latency Control over data priority Reliability Presentation Data Delivery Control over data distribution reliability Control over data ordering Control over presentation Destination Order DDS provides programmatic QoS-driven support for configuring the most important properties of data distribution! :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: ‣ Design by contract was popularized by Bertrand Meyer as a way of making explicit the pre/post condition and invariants associated with methods and the state of a class ‣ DDS QoS allows to extend design by contract to non-functional aspects of an application class ACCOUNT create make feature balance: INTEGER owner: PERSON minimum_balance: INTEGER is 1000 deposit (sum: INTEGER) is -- Deposit sum into the account. require sum >= 0 do add(sum) ensure balance = old balance + sum end --- Other methods invariant balance >= minimum_balance end -- class ACCOUNT OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD Design by Contract in DDS :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: Capturing System Invariants ‣ The weakest precondition, meaning the weakest QoS, required by the system to properly perform should be captured as QoS attached to the information model, e.g. Topics. Refining Invariants ‣ QoS associated with the information model, should be only strengthened by overriding QoS at a DataWriter level ‣ QoS should never be weakened by overriding it at a DataReader level OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD Design by Contract in DDS :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: QoS Contract Enforcements ‣ The RxO model ensures that unless QoS are matched no actual subscription will be established ‣ This ensure that only if QoS contracts are satisfied communication will be established OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD Design by Contract in DDS :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: DURABILITY LIVELINESS HISTORY OWENERSHIP LIFESPAN OWN. STRENGTH DEST. ORDER DEADLINE PARTITION LATENCY BUDGET PRESENTATION TRANSPORT PRIO RELIABILITY TIME-BASED FILTER USER DATA RESOURCE LIMITS TOPIC DATA GROUP DATA DW LIFECYCLE DR LIFECYCLE ENTITY FACTORY RxO QoS Local QoS :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: DURABILITY LIVELINESS HISTORY OWENERSHIP LIFESPAN OWN. STRENGTH DEST. ORDER DEADLINE PARTITION Topic PRESENTATION LATENCY BUDGET TRANSPORT PRIO RELIABILITY TIME-BASED FILTER USER DATA RESOURCE LIMITS TOPIC DATA GROUP DATA DW LIFECYCLE DR LIFECYCLE ENTITY FACTORY RxO QoS Local QoS Not Applicable :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: DURABILITY LIVELINESS HISTORY OWENERSHIP LIFESPAN OWN. STRENGTH DEST. ORDER DEADLINE PARTITION DataWriter PRESENTATION LATENCY BUDGET TRANSPORT PRIO RELIABILITY TIME-BASED FILTER USER DATA RESOURCE LIMITS TOPIC DATA GROUP DATA DW LIFECYCLE DR LIFECYCLE ENTITY FACTORY RxO QoS Local QoS Not Applicable :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: DURABILITY LIVELINESS HISTORY OWENERSHIP LIFESPAN OWN. STRENGTH DEST. ORDER DEADLINE PARTITION PRESENTATION DataReader LATENCY BUDGET TRANSPORT PRIO RELIABILITY TIME-BASED FILTER USER DATA RESOURCE LIMITS TOPIC DATA GROUP DATA DW LIFECYCLE DR LIFECYCLE ENTITY FACTORY RxO QoS Local QoS Not Applicable :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: DURABILITY LIVELINESS HISTORY OWENERSHIP LIFESPAN OWN. STRENGTH DEST. ORDER DEADLINE PARTITION Publisher PRESENTATION LATENCY BUDGET TRANSPORT PRIO RELIABILITY TIME-BASED FILTER USER DATA RESOURCE LIMITS TOPIC DATA GROUP DATA DW LIFECYCLE DR LIFECYCLE ENTITY FACTORY RxO QoS Local QoS Not Applicable :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: DURABILITY LIVELINESS HISTORY OWENERSHIP LIFESPAN OWN. STRENGTH DEST. ORDER DEADLINE PARTITION Subscriber PRESENTATION LATENCY BUDGET TRANSPORT PRIO RELIABILITY TIME-BASED FILTER USER DATA RESOURCE LIMITS TOPIC DATA GROUP DATA DW LIFECYCLE DR LIFECYCLE ENTITY FACTORY RxO QoS Local QoS Not Applicable :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: DURABILITY LIVELINESS HISTORY OWENERSHIP LIFESPAN OWN. STRENGTH DEST. ORDER DEADLINE PARTITION Domain Participant PRESENTATION LATENCY BUDGET TRANSPORT PRIO RELIABILITY TIME-BASED FILTER USER DATA RESOURCE LIMITS TOPIC DATA GROUP DATA DW LIFECYCLE DR LIFECYCLE ENTITY FACTORY RxO QoS Local QoS Not Applicable OpenSplice DDS Delivering Performance, Openness, and Freedom :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: Organizing Data :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: ‣ The Partition QoS Policy can be used as subjects organizing the flow of data ‣ The Partition QoS Policy is used to connect Publishers/Subscribers to a Partitions’ List which might also contain wildcards, e.g. tracks.* QoS Domain Policy Applicability PARTITION P, S RxO Modifiable N Y Subscriber Publisher "tracks.kfo" "tracks.ufo" Subscriber Publisher ‣ Topics are published and subscribed across one or more Partitions Subscriber Publisher Partition OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD Partitions QoS OpenSplice DDS Delivering Performance, Openness, and Freedom :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: Example :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: DataReader <TrakedObject> DataWriter <TrakedObject> "airspace.kfo.aircrafts" Subscriber DataReader <TrakedObject> Publisher AirCraft DataWriter <FlightPlan> FlightPlan Subscriber DataReader <FlightPlan> "airspace.tfo" DataWriter <FlightPlan> Publisher Tracks Subscriber DataReader <Tracks> "airspace.kfo.flyingcars" DataWriter <TrakedObject> Subscriber Publisher FlyingCar FlightPlan DataWriter <FlightPlan> Global Data Space (GDS) Partition Topic DataReader <TrackedObject> DataReader <FlightPlan> :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: DataReader <TrakedObject> DataWriter <TrakedObject> "airspace.kfo.aircrafts" Subscriber DataReader <TrakedObject> Publisher AirCraft DataWriter <FlightPlan> FlightPlan Subscriber DataReader <FlightPlan> "airspace.tfo" DataWriter <FlightPlan> Publisher Tracks Subscriber DataReader <Tracks> "airspace.kfo.flyingcars" DataWriter <TrakedObject> Subscriber Publisher FlyingCar FlightPlan DataWriter <FlightPlan> “airspace.*” Global Data Space (GDS) Partition Topic DataReader <TrackedObject> DataReader <FlightPlan> :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: DataReader <TrakedObject> DataWriter <TrakedObject> "airspace.kfo.aircrafts" Subscriber DataReader <TrakedObject> Publisher AirCraft DataWriter <FlightPlan> FlightPlan Subscriber DataReader <FlightPlan> "airspace.tfo" DataWriter <FlightPlan> Publisher Tracks Subscriber DataReader <Tracks> "airspace.kfo.flyingcars" DataWriter <TrakedObject> Subscriber Publisher FlyingCar FlightPlan DataWriter <FlightPlan> “airspace.kfo.*” Global Data Space (GDS) Partition Topic DataReader <TrackedObject> DataReader <FlightPlan> OpenSplice DDS Delivering Performance, Openness, and Freedom :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: Controlling Reliability :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: QoS Policy RELIABILITY The RELIABILITY QoS indicate the level of guarantee offered by the DDS in delivering data to subscribers. Applicability RxO Modifiable T, DR, DW Y N QoS matching QoS QoS QoS Topic QoS QoS Name DataWriter Publisher writes ... Type reads DataReader ... ... DataWriter writes Type reads DataReader Name Topic QoS QoS QoS QoS matching Subscriber OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD Reliability QoS :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: QoS Policy Possible variants are: RELIABILITY Applicability RxO Modifiable T, DR, DW Y N ‣ Reliable. In steady-state the middleware guarantees that all samples in the DataWriter history will eventually be delivered to all the DataReader QoS matching QoS Topic QoS QoS Name DataWriter Publisher writes ... Type reads DataReader ... ... DataWriter ‣ Best Effort. Indicates that it is acceptable to not retry propagation of any samples QoS QoS writes Type reads DataReader Name Topic QoS QoS QoS QoS matching Subscriber OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD Reliability QoS :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: QoS Policy The HISTORY QoS policy controls whether the DDS should deliver only the most recent value, attempt to deliver all intermediate values, or do something in between. HISTORY Applicability RxO Modifiable T, DR, DW N N QoS matching QoS QoS QoS Topic QoS QoS Name DataWriter Publisher writes ... Type reads DataReader ... ... DataWriter writes Type reads DataReader Name Topic QoS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD History QoS How many data samples should I keep? QoS QoS QoS matching Subscriber attempt to keep the most recent “depth” samples of each instance of data identified by its key ‣ Keep All. The DDS will attempt to keep all the samples of each instance of data identified by its key. DataReader ‣ Keep Last. The DDS will only DataReader :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: The policy can be configured to provide the following semantics: OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD History QoS How many data samples should I keep? 1 1 2 1 3 1 History Depth = 1 (DDS Default) 1 1 1 2 1 3 1 4 1 5 2 1 2 2 2 3 2 4 2 5 3 1 3 2 3 3 3 4 3 5 History Depth = 5 OpenSplice DDS Delivering Performance, Openness, and Freedom :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: Topic Used in next section. struct Counter { int cID; int count; }; #pragma keylist Counter cID History in Action :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: History Depth = 1 (DDS Default) DataReader Network 1 1 2 1 1 2 3 1 2 2 Topic DataReader Cache 2 3 History Depth = 1 (DDS Default) 1 2 2 3 3 1 DataWriter Topic DataWriter Cache :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: History Depth = 1 (DDS Default) DataReader Network History Depth = 1 (DDS Default) 1 2 1 2 2 2 2 3 3 1 3 1 Topic DataReader Cache 2 3 DataWriter Topic DataWriter Cache Note: The Reliability QoS controls wether data is sent reliably, or best-effort, from the DataWriter to matched DataReaders :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: History Depth = 1 (DDS Default) DataReader Network History Depth = 1 (DDS Default) 1 2 1 2 2 3 2 3 3 1 3 1 Topic DataReader Cache DataWriter Topic DataWriter Cache Note: The Reliability QoS controls wether data is sent reliably, or best-effort, from the DataWriter to matched DataReaders :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: History = Keep All DataReader Network 1 1 2 1 1 2 3 1 2 2 Topic DataReader Cache 2 3 History Depth = 1 (DDS Default) 1 2 2 3 3 1 DataWriter Topic DataWriter Cache Note: The Reliability QoS controls wether data is sent reliably, or best-effort, from the DataWriter to matched DataReaders :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: History = Keep All DataReader Network History Depth = 1 (DDS Default) 1 1 1 2 1 2 2 1 2 2 2 3 3 1 3 1 2 Topic DataReader Cache 3 DataWriter Topic DataWriter Cache Note: The Reliability QoS controls wether data is sent reliably, or best-effort, from the DataWriter to matched DataReaders :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: History = Keep All DataReader Network 1 1 1 2 2 1 2 2 3 1 2 3 Topic DataReader Cache History Depth = 1 (DDS Default) 1 2 2 3 3 1 DataWriter Topic DataWriter Cache Note: The Reliability QoS controls wether data is sent reliably, or best-effort, from the DataWriter to matched DataReaders :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: The reliability with which data is delivered to applications is impacted in DDS by the following qualities of service ‣ RELIABILITY ‣ BEST_EFORT ‣ RELIABLE ‣ HISTORY ‣ KEEP_LAST (K) ‣ KEEP_ALL OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD Putting it All Together :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: ‣ Theoretically, the only way to assure that an application will see all the samples produced by a writer is to use RELIABLE +KEEP_ALL. Any other combination could induce to samples being discarded on the receiving side because of the HISTORY depth OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD Putting it All Together :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: ‣ The RESOURCE_LIMITS QoS should always be taken in to account when dealing with the reliable data distribution since it impacts the memory usage (and potentially the DW blocking probability) ‣ Three values have to be provided: ‣ max_samples_per_instance (>= history depth) ‣ max_samples (>= max_samples_per_instance) ‣ max_instances OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD Reliability Gotchas OpenSplice DDS Delivering Performance, Openness, and Freedom :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: Example :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: Type TrackedObject Track FlightPlan Name Name Topic QoS { } BEST_EFFORT KEEP_LAST(1) RESOURCE_LIMITS Type TrackedObject Topic QoS { } OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD Tracks and Flight Plans RELIABLE KEEP_LAST(1) RESOURCE_LIMITS :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: AerospaceViolation struct ASViolation { long oId; string sign; long vcode; }; #pragma keylist ASViolation oId sign Name Type ASViolation Topic QoS { } RELIABLE KEEP_ALL RESOURCE_LIMITS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD Aerospace Violations OpenSplice DDS Delivering Performance, Openness, and Freedom :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: Controlling Real-Time Properties :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: QoS Policy DEADLINE Applicability RxO Modifiable T, DR, DW Y Y QoS matching The DEADLINE QoS policy allows to define the maximum interarrival time between data samples QoS QoS QoS Topic QoS QoS Name DataWriter Publisher writes ... Type reads DataReader ... ... DataWriter writes Type reads DataReader Name Topic QoS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD Deadline QoS You can’t be later than... QoS QoS QoS matching Subscriber :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: ‣ DataWriter indicates that the application commits to write a new value at least once every deadline period ‣ DataReaders are notified by the DDS when the DEADLINE QoS contract is violated Publisher Subscriber Deadline Deadline Deadline Violation Deadline Deadline Deadline OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD Deadline QoS :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: QoS Policy The LATENCY_BUDGET QoS policy specifies the maximum acceptable delay from the time the data is written until the data is inserted in the receiver's application-cache Applicability RxO Modifiable T, DR, DW Y Y LATENCY BUDGET QoS matching QoS QoS QoS Topic QoS QoS Name DataWriter Publisher writes ... Type reads DataReader ... ... DataWriter writes Type reads DataReader Name Topic QoS QoS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD Latency Budget QoS I need to get there in at most... QoS QoS matching Subscriber :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: ‣ The default value of the duration is zero indicating that the delay should be minimized ‣ This policy is a hint to the DDS, not something that must be monitored or enforced. TBuff Latency Budget = Latency = TBuff +T1+T2+T3 T3 T1 T2 OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD Latency Budget QoS :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: QoS Policy The TRANSPORT_PRIORITY QoS policy is a hint to the infrastructure as to how to set the priority of the underlying transport used to send the data. TRANSPORT PRIORITY Applicability RxO Modifiable T, DW - Y QoS matching QoS QoS QoS Topic QoS QoS Name DataWriter Publisher writes ... Type reads DataReader ... ... DataWriter writes Type reads DataReader Name Topic QoS QoS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD Transport Priority QoS VIP Data, stay clear! QoS QoS matching Subscriber :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: The real-time properties with which data is delivered to applications is impacted in DDS by the following qualities of service: Publisher Subscriber Deadline Deadline Deadline Deadline Deadline ‣ TRANSPORT_PRIORITY ‣ LATENCY_BUDGET Deadline Violation ‣ In addition, DDS provides means for detecting performance failure, e.g., Deadline miss, by means of the DEADLINE QoS ‣ Given a periodic task-set {T} with periods Di (with Di < Di+1) and deadline equal to the period, than QoS should be set as follows: ‣ Assign to each task Ti a TRANSPORT_PRIORITY Pi such that Pi > Pi+1 ‣ Set for each task Ti a DEADLINE QoS of Di ‣ For maximizing throughput and minimizing resource usage set for each Ti a LATENCY_BUDGET QoS between Di /2 bound is Di-(RTT/2)) and Di/3 (this is a rule of thumb, the upper OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD Putting it all Together QoS OpenSplice DDS Delivering Performance, Openness, and Freedom :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: Example :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: Type TrackedObject Track FlightPlan Name Name Topic QoS { } Type TrackedObject BEST_EFFORT KEEP_LAST(1) RESOURCE_LIMITS DEADLINE (= Period) TRANSPORT_PRIORITY LATENCY_BUDGET (= Period/3) Topic QoS { } RELIABLE KEEP_LAST(1) RESOURCE_LIMITS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD Tracks and Flight Plans :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: AerospaceViolation struct ASViolation { long oId; string sign; long vcode; }; #pragma keylist ASViolation oId sign Name Type ASViolation Topic QoS { } RELIABLE KEEP_ALL RESOURCE_LIMITS LATENCY_BUDGET (=0) TRANSPORT_PRIORITY (= MAX_PRIO) OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD Aerospace Violations OpenSplice DDS Delivering Performance, Openness, and Freedom :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: Controlling the Consistency Model :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: The DURABILITY QoS controls the data availability w.r.t. late joiners, specifically the DDS provides the following variants: QoS Policy ‣ Volatile. No need to keep data instances for late joining data readers Applicability RxO Modifiable DURABILITY T, DR, DW Y N DURABILITY SERVICE T, DW N N ‣ Transient Local. Data instance availability for late joining data reader is tied to the data writer availability QoS matching QoS Topic QoS outlives the data writer QoS Name DataWriter ‣ Transient. Data instance availability QoS QoS Publisher writes ... Type reads DataReader ... ... DataWriter writes Type reads DataReader Name Topic ‣ Persistent. Data instance availability outlives system restarts QoS QoS QoS QoS matching Subscriber OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD Durability QoS :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: DataReader DataReader 1 1 2 1 3 1 1 1 2 1 3 1 Topic DataReader Topic DataReader Cache 1 1 DataReader Cache 2 1 3 1 Topic DataReader Cache Under an Eventual Consistency Model, DDS guarantees that all matched Reader Caches will eventually be identical of the respective Writer Cache DataWriter 1 2 2 2 2 3 1 2 2 3 3 1 Topic DDS DataWriter Cache OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD Eventual Consistency & R/W Caches :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: The DDS Consistency Model is a property that can be associated to Topics or further refined by Reader/Writers. The property is controlled by the following QoS Policies: ‣ DURABILITY ‣ VOLATILE | TRANSIENT_LOCAL | TRANSIENT | PERSISTENT ‣ LIFESPAN ‣ RELIABILITY ‣ RELIABLE | BEST_EFFORT QoS Policy Applicability T, DR, DW RxO Y Modifiable N T, DW - Y RELIABILITY T, DR, DW Y N DESTINATION ORDER T, DR, DW Y N DURABILITY LIFESPAN ‣ DESTINATION ORDER ‣ SOURCE_TIMESTAMP | DESTINATION_TIMESTAMP OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD QoS & Consistency Model :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: DURABILITY RELIABILITY DESTINATION_ORDER LIFESPAN VOLATILE RELIABLE SOURCE_TIMESTAMP INF. TRANSIENT_LOCAL Eventual Consistency (Reader Crash / Recovery) RELIABLE SOURCE_TIMESTAMP INF. Eventual Consistency (Crash/Recovery) TRANSIENT RELIABLE SOURCE_TIMESTAMP INF. Eventual Consistency (Crash/Recovery) PERSISTENT RELIABLE SOURCE_TIMESTAMP INF. Weak Consistency ANY ANY DESTINATION_TIMESTAMP ANY Weak Consistency Weak Consistency ANY BEST_EFFORT ANY ANY ANY ANY ANY N Eventual Consistency (No Crash / Recovery) OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD QoS & Consistency Model :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: DURABILITY RELIABILITY DESTINATION_ORDER Eventual Consistency (Reader TRANSIENT_LOCAL Crash / Recovery) TRANSIENT Eventual Consistency (Crash/Recovery) ANY Weak Consistency LIFESPAN RELIABLE SOURCE_TIMESTAMP INF. RELIABLE SOURCE_TIMESTAMP INF. {B} ANY ANY N {J} S = {A, D} P = {A, B} S1 B P1 m A J F D C P = {D, C, J} P2 K E S = {A} S4 {A} :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: DURABILITY RELIABILITY DESTINATION_ORDER Eventual Consistency (Reader TRANSIENT_LOCAL Crash / Recovery) TRANSIENT Eventual Consistency (Crash/Recovery) ANY Weak Consistency LIFESPAN RELIABLE SOURCE_TIMESTAMP INF. RELIABLE SOURCE_TIMESTAMP INF. {B} ANY ANY N {J} S = {A, D} P = {A, B} S1 B P1 m A A J F D C P = {D, C, J} P2 K E S = {A} S4 {A} :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: DURABILITY RELIABILITY DESTINATION_ORDER Eventual Consistency (Reader TRANSIENT_LOCAL Crash / Recovery) TRANSIENT Eventual Consistency (Crash/Recovery) ANY Weak Consistency LIFESPAN RELIABLE SOURCE_TIMESTAMP INF. RELIABLE SOURCE_TIMESTAMP INF. {B} ANY ANY N {J} S = {A, D} P = {A, B} S1 B P1 A m A A J F D C P = {D, C, J} P2 K E S = {A} S4 A {A} :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: DURABILITY RELIABILITY DESTINATION_ORDER Eventual Consistency (Reader TRANSIENT_LOCAL Crash / Recovery) TRANSIENT Eventual Consistency (Crash/Recovery) ANY Weak Consistency LIFESPAN RELIABLE SOURCE_TIMESTAMP INF. RELIABLE SOURCE_TIMESTAMP INF. {B} ANY ANY N {J} S = {A, D} P = {A, B} S1 B P1 B A m A A J F D C P = {D, C, J} P2 K E S = {A} S4 A {A} :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: DURABILITY RELIABILITY DESTINATION_ORDER Eventual Consistency (Reader TRANSIENT_LOCAL Crash / Recovery) TRANSIENT Eventual Consistency (Crash/Recovery) ANY Weak Consistency LIFESPAN RELIABLE SOURCE_TIMESTAMP INF. RELIABLE SOURCE_TIMESTAMP INF. {B} ANY ANY N {J} S = {A, D} P = {A, B} S1 B B P1 A m A A J F D C P = {D, C, J} P2 K E S = {A} S4 A {A} :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: DURABILITY RELIABILITY DESTINATION_ORDER Eventual Consistency (Reader TRANSIENT_LOCAL Crash / Recovery) TRANSIENT Eventual Consistency (Crash/Recovery) ANY Weak Consistency LIFESPAN RELIABLE SOURCE_TIMESTAMP INF. RELIABLE SOURCE_TIMESTAMP INF. {B} ANY ANY N {J} S = {A, D} P = {A, B} S1 B B P1 A m S= {A, B, J} A A J F D S2 C P = {D, C, J} P2 K E S = {A} S4 A {A} :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: DURABILITY RELIABILITY DESTINATION_ORDER Eventual Consistency (Reader TRANSIENT_LOCAL Crash / Recovery) TRANSIENT Eventual Consistency (Crash/Recovery) ANY Weak Consistency LIFESPAN RELIABLE SOURCE_TIMESTAMP INF. RELIABLE SOURCE_TIMESTAMP INF. {B} ANY ANY N {J} S = {A, D} P = {A, B} S1 B B P1 A m S= {A, B, J} A A J F D S2 C BA P = {D, C, J} P2 K E S = {A} S4 A {A} :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: DURABILITY RELIABILITY DESTINATION_ORDER Eventual Consistency (Reader TRANSIENT_LOCAL Crash / Recovery) TRANSIENT Eventual Consistency (Crash/Recovery) ANY Weak Consistency LIFESPAN RELIABLE SOURCE_TIMESTAMP INF. RELIABLE SOURCE_TIMESTAMP INF. {B} ANY ANY N {J} S = {A, D} S1 B B A m A S= {A, B, J} F S2 J P = {D, C, J} P2 K D C BA E S = {A} S4 A {A} :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: DURABILITY RELIABILITY DESTINATION_ORDER Eventual Consistency (Reader TRANSIENT_LOCAL Crash / Recovery) TRANSIENT Eventual Consistency (Crash/Recovery) ANY Weak Consistency LIFESPAN RELIABLE SOURCE_TIMESTAMP INF. RELIABLE SOURCE_TIMESTAMP INF. {B} ANY ANY N {J} S = {A, D} S1 B B A m A S= {A, B, J} F S2 J P = {D, C, J} P2 D C BA S= {A, B, D, J} K S3 E S = {A} S4 A {A} :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: DURABILITY RELIABILITY DESTINATION_ORDER Eventual Consistency (Reader TRANSIENT_LOCAL Crash / Recovery) TRANSIENT Eventual Consistency (Crash/Recovery) ANY Weak Consistency LIFESPAN RELIABLE SOURCE_TIMESTAMP INF. RELIABLE SOURCE_TIMESTAMP INF. {B} ANY ANY N {J} S = {A, D} S1 B B A m A S= {A, B, J} F S2 JJ P = {D, C, J} P2 D D C BA S= {A, B, D, J} K S3 E S = {A} S4 A JB {A} :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: DURABILITY RELIABILITY DESTINATION_ORDER Eventual Consistency (Reader TRANSIENT_LOCAL Crash / Recovery) TRANSIENT Eventual Consistency (Crash/Recovery) ANY Weak Consistency LIFESPAN RELIABLE SOURCE_TIMESTAMP INF. RELIABLE SOURCE_TIMESTAMP INF. {B} ANY ANY N {J} S = {A, D} S1 B B A m A S= {A, B, J} F S2 J P = {D, C, J} P2 D D C BA S= {A, B, D, J} K S3 E S = {A} S4 A JB {A} OpenSplice DDS Delivering Performance, Openness, and Freedom :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: Example :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: Type TrackedObject Track FlightPlan Name Name Topic Type QoS { } TrackedObject Topic QoS { BEST_EFFORT KEEP_LAST(1) VOLATILE DEST_ORDER LIFESPAN (>= Period) } RELIABLE KEEP_LAST(1) TRANSIENT - or - PERSISTENT DEST_ORDER LIFESPAN (Inf ) OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD Tracks and Flight Plans :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: AerospaceViolation struct ASViolation { long oId; string sign; long vcode; }; #pragma keylist ASViolation oId sign Name Type ASViolation Topic QoS { } RELIABLE KEEP_ALL PERSISTENT DEST_ORDER LIFESPAN (Inf ) OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD Aerospace Violations OpenSplice DDS Delivering Performance, Openness, and Freedom :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: Controlling Replication :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: Availability of data producers can be controlled via two QoS Policies ‣ OWNERSHIP (SHARED vs. EXCLUSIVE) ‣ 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 OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD Availability :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: StockQuote symbol: "MSFT" StockQuote StockQuote name: "Microsoft Corp." StockQuote symbol: exchange: "NASD""GOOG" symbol: "GOOG" symbol: "GOOG" quote: 33.73 name: name: "Google "Google Inc." Inc." name: "Google Inc." exchange: "NASD" exchange:StockQuote "NASD" exchange: "NASD" StockQuote StockQuote quote: 663.97 quote: 663.97 quote:symbol: 663.97"AAPL" symbol: symbol: "AAPL" "AAPL" W1 name: name: name: "Apple "Apple "Apple Inc." Inc." Inc." exchange: exchange: exchange: "NASD" "NASD" "NASD" quote: quote: quote: 165.37 165.37 165.37 R1 STRENGTH=3 StockQuote symbol: "AAPL" StockQuote name: "Apple Inc." symbol:exchange: "GOOG""NASD" name: quote: "Google Inc." 165.37 StockQuote exchange: "NASD" symbol: "MSFT" quote: 663.97 name: "Microsoft Corp." exchange: "NASD" quote: 33.73 W1’ STRENGTH=2 R2 StockQuote symbol: "AAPL" StockQuote name: "Apple Inc." symbol:exchange: "GOOG""NASD" name: quote: "Google Inc." 165.37 StockQuote exchange: "NASD" symbol: "MSFT" quote: 663.97 name: "Microsoft Corp." exchange: "NASD" quote: 33.73 W2’’ STRENGTH=1 R3 OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD Availability :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: StockQuote symbol: "MSFT" StockQuote StockQuote name: "Microsoft Corp." StockQuote symbol: exchange: "NASD""GOOG" symbol: "GOOG" symbol: "GOOG" quote: 33.73 name: name: "Google "Google Inc." Inc." W1 name: "Google Inc." exchange: "NASD" exchange: "NASD" "NASD" exchange: quote: quote: 663.97 quote: 663.97 663.97 STRENGTH=3 StockQuote symbol: "AAPL" name: "Apple Inc." exchange: "NASD" quote: 165.37 R1 StockQuote symbol: "GOOG" name: "Google Inc." StockQuote exchange: "NASD" symbol: "MSFT" quote: 663.97 name: "Microsoft Corp." exchange: "NASD" quote: 33.73 W1’ R2 StockQuote symbol: "AAPL" name: "Apple Inc." exchange: "NASD" quote: 165.37 STRENGTH=2 StockQuote symbol: "GOOG" name: "Google Inc." StockQuote exchange: "NASD" symbol: "MSFT" quote: 663.97 name: "Microsoft Corp." exchange: "NASD" quote: 33.73 W2’’ STRENGTH=1 StockQuote symbol: "AAPL" name: "Apple Inc." exchange: "NASD" quote: 165.37 R3 OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD Availability :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: StockQuote symbol: "MSFT" name: "Microsoft Corp." exchange: "NASD" quote: 33.73 W1 STRENGTH=3 StockQuote symbol: "AAPL" name: "Apple Inc." exchange: "NASD" quote: 165.37 R1 StockQuote symbol: "GOOG" name: "Google Inc." exchange: "NASD" quote: 663.97 StockQuote symbol: "MSFT" name: "Microsoft Corp." exchange: "NASD" quote: 33.73 StockQuote symbol: "GOOG" name: "Google Inc." exchange: "NASD" quote: 663.97 W1’ STRENGTH=2 StockQuote symbol: "MSFT" name: "Microsoft Corp." exchange: "NASD" quote: 33.73 W2’’ STRENGTH=1 R2 StockQuote symbol: "AAPL" name: "Apple Inc." exchange: "NASD" quote: 165.37 StockQuote symbol: "GOOG" name: "Google Inc." StockQuote exchange: "NASD" quote: 663.97symbol: "AAPL" name: "Apple Inc." exchange: "NASD" quote: 165.37 R3 OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD Availability :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: StockQuote symbol: "AAPL" name: "Apple Inc." exchange: "NASD" quote: 165.37 R1 StockQuote symbol: "GOOG" name: "Google Inc." exchange: "NASD" quote: 663.97 StockQuote symbol: "GOOG" name: "Google Inc." exchange: "NASD" quote: 663.97 R2 StockQuote symbol: "AAPL" name: "Apple Inc." exchange: "NASD" quote: 165.37 StockQuote StockQuote StockQuote symbol: "MSFT" "MSFT" symbol: symbol: "MSFT" name: "Microsoft "Microsoft Corp." name: name: "Microsoft Corp." Corp." exchange: exchange: "NASD" "NASD" exchange: "NASD" quote: 33.73 33.73 quote: quote: 33.73 W2’’ STRENGTH=1 StockQuote symbol: "GOOG" name: "Google Inc." exchange: "NASD" quote: 663.97 StockQuote symbol: "AAPL" name: "Apple Inc." exchange: "NASD" quote: 165.37 R3 OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD Availability :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: StockQuote symbol: "MSFT" name: "Microsoft Corp." exchange: "NASD" quote: 33.73 StockQuote symbol: "AAPL" name: "Apple Inc." exchange: "NASD" quote: 165.37 R1 StockQuote symbol: "GOOG" name: "Google Inc." exchange: "NASD" quote: 663.97 StockQuote symbol: "GOOG" name: "Google Inc." exchange: "NASD" quote: 663.97 StockQuote symbol: "MSFT" name: "Microsoft Corp." exchange: "NASD" quote: 33.73 StockQuote symbol: "MSFT" name: "Microsoft Corp." exchange: "NASD" quote: 33.73 W2’’ STRENGTH=1 R2 StockQuote symbol: "AAPL" name: "Apple Inc." exchange: "NASD" quote: 165.37 StockQuote symbol: "GOOG" name: "Google Inc." exchange: "NASD" quote: 663.97 StockQuote symbol: "AAPL" name: "Apple Inc." exchange: "NASD" quote: 165.37 R3 OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD Availability OpenSplice DDS Delivering Performance, Openness, and Freedom :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: Summing Up +/- :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: ‣ DDS makes it possible for you to express the non-functional contract for your distributed applications ‣ DDS QoS Policies give you control over local and end-to-end properties ‣ In summary QoS Policies and Data Centricity gives you the ability to apply Design by Contract at a functional and nonfunctional level OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD Summing Up OpenSplice DDS Delivering Performance, Openness, and Freedom References http://www.opensplice.com/ http://www.opensplice.org/ http://www.slideshare.net/angelo.corsaro emailto:opensplicedds@prismtech.com http://bit.ly/1Sreg http://www.youtube.com/OpenSpliceTube http://twitter.com/acorsaro/ http://opensplice.blogspot.com t a DS D g ce r i l o . p e S c en pli p s n O e d p o a . o w w nL w w / Do / : p t t h OpenSplice DDS The Universal Data Bus :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: THANK You! d it n u Fo ? k l our e ta y h e t dm ed y n o e j ?S g . En n S i . r t: P o a b om s y c t . d h n o me tec Blo m s com i @pr o r sa r o c elo. g n a