Post on 15-Jan-2015
description
Ope
nSpl
ice
DD
S
Angelo CORSARO, Ph.D.Chief Technology Officer OMG DDS Sig Co-ChairPrismTechangelo.corsaro@prismtech.com
Distributed State,Events and Commands:: with OpenSplice DDS
Ope
nSpl
ice
DD
S
Foundations
Copyrig
ht 2010, PrismTech – A
ll Rights Reserved.
Ope
nSpl
ice
DD
S
Defining a System
¨ A set of interacting or interdependent parts forming an integrated whole
Cyber/Physical.World.
s"mulus&(events/commands)&&
Input& Output&! State&! Transi"ons&
System.
Copyrig
ht 2010, PrismTech – A
ll Rights Reserved.
Ope
nSpl
ice
DD
S
Defining a Distributed System
¨ A Distributed System is a System whose parts can only interact by communicating over a network
Cyber/Physical.World.
s"mulus&(events/commands)&&
Input& Output&! State&! Transi"ons&
Distributed.System.
Copyrig
ht 2010, PrismTech – A
ll Rights Reserved.
Ope
nSpl
ice
DD
S
State in a Distributed System¨ The State of a distributed system
is the collection of the states of its parts plus the stimulus currently propagating through the system
¨ As Distributed Systems don’t share memory, one problem to address is how to access arbitrary subsets of its state (or of its parts)
¨ The other problem is the consistency of this state...
Cyber/Physical.World.
s"mulus&(events/commands)&&
Input& Output&! State&! Transi"ons&
Distributed.System.
Copyrig
ht 2010, PrismTech – A
ll Rights Reserved.
Ope
nSpl
ice
DD
S
Stimulus in a Distributed System
¨ Internal and Environmental Stimuli in a distributed system are used to¨ evolve the system state
(commands, i.e. do something)¨ notify particular condition on the
state (events, i.e. something happened)
Cyber/Physical.World.
s"mulus&(events/commands)&&
Input& Output&! State&! Transi"ons&
Distributed.System.
Copyrig
ht 2010, PrismTech – A
ll Rights Reserved.
Ope
nSpl
ice
DD
S
State vs Stimulus
¨ The state of a system is always defined to have a value
¨ A Stimulus only exists at a particular point in time
time
Temp
OverheatAlarm
time
State%
S&mulus%
Copyrig
ht 2010, PrismTech – A
ll Rights Reserved.
Ope
nSpl
ice
DD
S
Are Commands Different?¨ Commands are a kind of stimulus
that express the need for the system to do something
¨ As commands have the “do something” connotation, it is often useful to synchronously be informed that the “command” has been executed
¨ However systems can be built with both synchronous as well as asynchronous commands
Cyber/Phisycal World
System
Do Something
Done
Asynchronous*
Cyber/Phisycal World
System
DoSomething
Done
Synchronous*
Ope
nSpl
ice
DD
S
State Events and Commands in DDS
Ope
nSpl
ice
DD
S State in DDS
Copyrig
ht 2010, PrismTech – A
ll Rights Reserved.
Ope
nSpl
ice
DD
S
Distributed State with DDS¨ The “public” state of the elements making the
distributed system can easily be captured via topic definitions
¨ Representing state with topics is more a matter of discipline w.r.t. to the QoS being used and the way in which it is accessed
Copyrig
ht 2010, PrismTech – A
ll Rights Reserved.
Ope
nSpl
ice
DD
S
State’s DDS QoSTopics representing state should have the following QoS Settings
¨ RELIABILITY = RELIABLE
¨ HISTORY = KEEP_LAST(1)
¨ DURABILITY = (TRANSIENT |PERSISTENT)
¨ OWNERSHIP = EXCLUSIVE
¨ DESTINATION_ORDER = SOURCE_TIMESTAMP
Copyrig
ht 2010, PrismTech – A
ll Rights Reserved.
Ope
nSpl
ice
DD
S
Soft-State’s DDS QoSTopics representing soft-state, meaning state that is periodically updated, should have the following QoS Settings
¨ RELIABILITY = BEST_EFFORT
¨ HISTORY = KEEP_LAST(1)
¨ DURABILITY = VOLATILE
¨ OWNERSHIP = EXCLUSIVE
¨ DESTINATION_ORDER = SOURCE_TIMESTAMP
Copyrig
ht 2010, PrismTech – A
ll Rights Reserved.
Ope
nSpl
ice
DD
S
Accessing State in DDS¨ The DataReader.read operation should be used to
access topics representing state¨ This ensures that the last value for the state will be kept in DDS and will
be readable again and again
¨ The DataReader data should be accessed with the following flags:¨ ANY_SAMPLE_STATE¨ ALIVE_INSTANCE_STATE¨ ANY_VIEW_STATE
Copyrig
ht 2010, PrismTech – A
ll Rights Reserved.
Ope
nSpl
ice
DD
S
Example
¨ A Robot Position in 2D is an example of state
¨ Let’s assume that the Robot only update position when it moves
¨ Topic Type:struct RobotPosition { @key long rid; long x; long y;};
[1/3]
Copyrig
ht 2010, PrismTech – A
ll Rights Reserved.
Ope
nSpl
ice
DD
S
Example¨ The Topic and DataReader would be constructed as
follows// Create Topic Qosval tQos =
TopicQos() <= KeepLastHistory(1) <= Reliable() <= TransientDurability() <= ExclusiveOwnership() <= SourceTimestamp();
// Create Topicval rpt = Topic[RobotPosition](“RobotPosition”,topicQos)
// Create DataReaderval rpdr = DataReader[RobotPosition](rpt, DataReaderQos(tqos))
[2/3]
Copyrig
ht 2010, PrismTech – A
ll Rights Reserved.
Ope
nSpl
ice
DD
S
Example¨ Data can be read as follows
// Read dataval data = rpdr.read(ReadState.AllData) // Or specific to Escalierval data = rpdr.history
[3/3]
Ope
nSpl
ice
DD
S Events in DDS
Copyrig
ht 2010, PrismTech – A
ll Rights Reserved.
Ope
nSpl
ice
DD
S
Distributed Events with DDS¨ Events raised by a distributed system can be easily
captured via topic definitions
¨ Representing events with topics is more a matter of discipline w.r.t. to the QoS being used and the way in which it is accessed
¨ Event topics are often keyless
Copyrig
ht 2010, PrismTech – A
ll Rights Reserved.
Ope
nSpl
ice
DD
S
Events’ DDS QoSEvents should have the following QoS Settings
¨ RELIABILITY = RELIABLE
¨ HISTORY = KEEP_ALL
¨ DURABILITY = VOLATILE
¨ OWNERSHIP = SHARED
¨ DESTINATION_ORDER = SOURCE_TIMESTAMP
Copyrig
ht 2010, PrismTech – A
ll Rights Reserved.
Ope
nSpl
ice
DD
S
Events’ DDS QoSEvents should have the following QoS Settings
¨ RELIABILITY = RELIABLE
¨ HISTORY = KEEP_ALL
¨ DURABILITY = VOLATILE
¨ OWNERSHIP = SHARED
¨ DESTINATION_ORDER = SOURCE_TIMESTAMP
Copyrig
ht 2010, PrismTech – A
ll Rights Reserved.
Ope
nSpl
ice
DD
S
Accessing Events in DDS¨ The DataReader.take operation should be used to
access topics representing events¨ This ensures that the DDS cache is always freed by available events
¨ The DataReader data should be accessed with the following flags:¨ NEW_SAMPLE_STATE¨ ALIVE_INSTANCE_STATE¨ ANY_VIEW_STATE
Copyrig
ht 2010, PrismTech – A
ll Rights Reserved.
Ope
nSpl
ice
DD
S
Example
¨ A CollisionEvent could be raised by a Robot when it is colliding (or about to collide) with something
¨ Topic Type:struct CollisionEvent { long detectingRobotId; long collidingRobotId; long xe; long ye;};
[1/3]
Copyrig
ht 2010, PrismTech – A
ll Rights Reserved.
Ope
nSpl
ice
DD
S
Example¨ The Topic and DataReader would be constructed as
follows// Create Topic Qosval tQos =
TopicQos() <= KeepAll() <= Reliable() <= VolatileDurability() <= SharedOwnership() <= SourceTimestamp();
// Create Topicval cet = Topic[CollisionEvent](“CollisionEvent”,topicQos)
// Create DataReaderval cedr = DataReader[CollisionEvent](cet, DataReaderQos(tqos))
[2/3]
Copyrig
ht 2010, PrismTech – A
ll Rights Reserved.
Ope
nSpl
ice
DD
S
Example¨ Data can be read as follows
// Take dataval data = cedr.take()
[3/3]
Ope
nSpl
ice
DD
S Commands in DDS
Copyrig
ht 2010, PrismTech – A
ll Rights Reserved.
Ope
nSpl
ice
DD
S
Commands in DDS¨ As explained earlier commands are just a kind of
stimulus
¨ As such could be represented as pairs of events one for the “command request” and the other for the “command reply”
¨ However many people like to deal with commands synchronously, this is why OpenSplice provides now an RMI Framework!
Copyrig
ht 2010, PrismTech – A
ll Rights Reserved.
Ope
nSpl
ice
DD
S
OpenSplice RMI¨ Enhances OpenSplice with the ability of defining distributed
Services implementing a well defined service interface
¨ Interfaces are specified in IDL and are fully interoperable with DDS types
¨ Uses DDS mechanism to invoke services
¨ Takes advantage of DDS mechanism for discovery, fault tolerance, one-to-many invocations, etc.
Copyrig
ht 2010, PrismTech – A
ll Rights Reserved.
Ope
nSpl
ice
DD
S
Example¨ Suppose our System is composed
by a set of cooperating Robots that are inspecting some assigned region for surveillance, or detecting chemicals, radioactivity, etc.
¨ DDS RMI gives us a way of defining the set of interfaces that constitute the relevant commands and invoke them as traditional RMI
struct Region { long x0; long y0; long width; long height;};
local interface RobotCommands : ::DDS_RMI::Services { void start(); void stop(); void setSpeed(in long s); long getSpeed(); void setSize(in long s); long getSize(); void setRegion(in Region r); Region getRegion(); string getColor(); string getShape();};
[1/2]
Copyrig
ht 2010, PrismTech – A
ll Rights Reserved.
Ope
nSpl
ice
DD
S
Example
¨ Under the hood, appropriate topics are generated by the infrastructure
¨ QoS can be associated to individual methods via an XML file so to further control the semantics of methods invocation
struct Region { long x0; long y0; long width; long height;};
local interface RobotCommands : ::DDS_RMI::Services { void start(); void stop(); void setSpeed(in long s); long getSpeed(); void setSize(in long s); long getSize(); void setRegion(in Region r); Region getRegion(); string getColor(); string getShape();};
[2/2]
Copyrig
ht 2010, PrismTech – A
ll Rights Reserved.
Ope
nSpl
ice
DD
S
Using DDS RMI
Ope
nSpl
ice
DD
S Demo
Copyrig
ht 2010, PrismTech – A
ll Rights Reserved.
Ope
nSpl
ice
DD
S
Autonomous Robots¨ Let’s build a system in which
¨ robots move autonomously on an assigned region ¨ look actively for some specified target and raise event when the
target is at reach
¨ Along with autonomous robots the system will have:¨ A GUI showing the position of the robots and highlighting the
places where something was detected¨ A control application for issuing commands to robots
[1/2]
Copyrig
ht 2010, PrismTech – A
ll Rights Reserved.
Ope
nSpl
ice
DD
S
State, Event, Commands¨ State
¨ Robot Position
¨ Events¨ TargetDetected
¨ Commands¨ Robot Control
Ope
nSpl
ice
DD
S Demo in Action
Copyrig
ht 2010, PrismTech – A
ll Rights Reserved.
Ope
nSpl
ice
DD
S
Summing Up¨ All Distributed Systems can be decomposed into State and
Stimulus, where typical stimulus are Events and Commands
¨ DDS provides first class support for both Distributed State and Event
¨ With DDS RMI now OpenSplice also provide first class support for Commands!
¨ DDS RMI is built on DDS taking advantage both in terms of performance, fault-tolerance and flexibility.
Copyrig
ht 2010, PrismTech – A
ll Rights Reserved.
Ope
nSpl
ice
DD
S
References
¨ Article comparing performance of Remote Method Invocation using ZeroC ICE and DDS¨ http://bit.ly/nCs66E
¨ DDS RMI Draft RFP¨ http://bit.ly/owCRgK
Ope
nSpl
ice
DD
S
¥ @prismtech
¥ @acorsaro
¥ youtube.com/opensplicetube ¥ slideshare.net/angelo.corsaro
¥ crc@prismtech.com¥ sales@prismtech.com
¥ opensplice.com ¥ forums.opensplice.org
¥ opensplice.org ¥ opensplicedds@prismtech.com
:: Connect with Us ::