Upload
angelo-corsaro
View
3.651
Download
1
Embed Size (px)
DESCRIPTION
B2 is the OpenSplice DDS integration technology built on-top of Apache Camel that makes it seamless to integrate DDS based systems as well as integrating DDS with a plethora of other technologies, such as JMS, AMQP, XMPP, FIX, etc.
Citation preview
Angelo CORSARO, Ph.D. Chief Technology Officer OMG DDS Sig Co-Chair PrismTech [email protected]!
海 賊 天 使
W3C
WS!A
MQ
P!
JMS!
REST!
ULS DDS-I!
DDS-I!
XMPP!
Custom!
Systems Integration Challenges
Copyrig
ht 2010, PrismTech – A
ll Rights Reserved.
Subsystem Integration ¨ Complex distributed systems are
often made up by different subsystems
¨ Ideally, subsystems should be completely decoupled and independently evolvable
¨ That is easier said than done. Subsystems often end-up including mutual dependencies and introducing coupling Fight Data
Processor
Controller Working Positions
Other Centers
FPLi
FPLe
FP
Le
FPLf
FPLi
Dependencies are often introduced between subsystems as a consequence of having to deal with
different representations of the same information
Copyrig
ht 2010, PrismTech – A
ll Rights Reserved.
System Integration ¨ Independently developed systems
often use different representations for the same concept (e.g. Cartesian vs. Polar Coordinates)
¨ Other times, they might use different topic names, or domains, etc.
¨ This differences need to be addressed in order for systems to be integrated
Air Traffic Control
Airline
X
Y
Copyrig
ht 2010, PrismTech – A
ll Rights Reserved.
Technologies Integration ¨ Different systems are often
based on different technologies, yet need to be integrated
¨ Several systems need to make information available through a wide-set of “media”
Copyrig
ht 2010, PrismTech – A
ll Rights Reserved.
Ultra Large Scale Systems
¨ Ultra-Large Scale (ULS) Systems are often build by the aggregation of many individual systems
¨ The integration challenge posed by ULS systems is mainly connected with scalability and efficiency
N1,0
N1,1
N2,0
N2,1
N2,2 N
2,3
N2,4
N2,5
H1,0,0
H1,0,1
H1,0,k
H1,1,h
H1,1,0
H1,1,1
H2,0,i
H 2,1,j
H 2,1,k H2,1,h
H 2,1,n
H 2,1,m
R
R
R
R
R
R
R
R
SN
SN
SN
SN
SN
Copyrig
ht 2010, PrismTech – A
ll Rights Reserved.
Summary Several different Integration problems exist:
¨ Sub-system integration
¨ System Integration
¨ Technology Integration
¨ Ultra Large Scale Systems Integration
How can we address all of this problems with an holistic approach?
The OpenSplice BlendBox
W3C
WS!A
MQ
P!
JMS!
REST!
ULS DDS-I!
DDS-I!
XMPP!
Custom!
Copyrig
ht 2010, PrismTech – A
ll Rights Reserved.
OpenSplice Blend-Box (B2) ¨ High performance, QoS-
Enabled, Extensible and configurable protocol gateway framework
¨ Automatically bridging across communication technologies
¨ Allows to expose relevant data to over 80 communication protocols, without imposing changes into existing systems!
W3C
WS!A
MQ
P!
JMS!
REST!
ULS DDS-I!
DDS-I!
XMPP!
Custom!
Copyrig
ht 2010, PrismTech – A
ll Rights Reserved.
B2 Key Benefits ¨ Enables the development of
highly modular systems by encapsulating the subsystem integration logic
¨ Enables content, format and type transformation as well as mediation across different technologies
¨ Provides a solution for creating scalable ultra-large scale systems
W3C
WS!A
MQ
P!
JMS!
REST!
ULS DDS-I!
DDS-I!
XMPP!
Custom!
Copyrig
ht 2010, PrismTech – A
ll Rights Reserved.
B2 In Action
Fight Data Processor
Controller Working Positions
Other Centers
FPLi
FPLe
W3C
WS!A
MQ
P!
JMS!
REST!
ULS DDS-I!
DDS-I!
XMPP!
Custom!
FPLf
FP
Le
FPLi
W3C
WS!A
MQ
P!
JMS!
REST!
ULS DDS-I!
DDS-I!
XMPP!
Custom!FPLi REST
Copyrig
ht 2010, PrismTech – A
ll Rights Reserved.
B2 Technology ¨ B2 uses at its core an extended and enhanced
version of Apache Camel for routing, mediation and transformation
¨ The power and connectivity of Apache Camel is enhanced with ¨ High performance DDS connectivity (DDSI Connector) ¨ QoS mediation
¨ Ultra-Large Scale DDS Extensions (ULS-DDSI Connector)
Copyrig
ht 2010, PrismTech – A
ll Rights Reserved.
B2 Key Elements ¨ Components: Provide connectivity to a given technology
¨ Endpoints: Represent a source/destination of messages from/to a components
¨ Routes: Define path from input endpoints to output endpoints
¨ Enterprise Integration Patterns: Facilitate the definition of routes between endpoints
¨ Processors: Allow to perform transformation to the data, its format, etc.
Copyrig
ht 2010, PrismTech – A
ll Rights Reserved.
Components & Endpoints ¨ A component is a factory of Endpoint instances. Over 80
components are supported
¨ Endpoints are specified using URI: ¨ dds:TopicName:DomainID/TopicType?QoS ¨ cometd://host:port/channelname ¨ jms:[topic:]destinationName ¨ [tcp|udp|vm]:host[:port] ¨ xmpp://host:port/room ¨ …
Copyrig
ht 2010, PrismTech – A
ll Rights Reserved.
Routes ¨ A route defines a path from an in endpoint to an
out endpoint.
¨ Route can be defined in Spring, or using either the Java or Scala DSL (I prefer the Scala DSL)
¨ Ex. val route= new RouteBuilder { ! “dds:Foo:1/FooType” to “dds:Bar:2/FooType” !} !
DDS Endpoint ! Topic Name ! DomainID! TypeName!
Copyrig
ht 2010, PrismTech – A
ll Rights Reserved.
Enterprise Integration Patterns (EIP)
¨ EIP provide pre-specified ways of integrating endpoints
¨ The most common integration patterns are supported, such as, multicast, filtering, correlation, content-routing, load-balancing, etc.
¨ Multicast Ex:
Recipient List Content Based Router
Message FIlter
A B
Correlation ID
Splitter Aggregator
val route= new RouteBuilder { ! “dds:Foo:1/FooType” !
"to (“dds:Bar:2/FooType”, “jms:topic:Foo”) !} !
Intermezzo
Copyrig
ht 2010, PrismTech – A
ll Rights Reserved.
Scala Basics
¨ Lambda Function Definition: ¨ (a: A, b: B ) => { body}
¨ Placeholder Syntax: ¨ val l = List(1,2,3,4,5)
¨ l.foreach((i: Int) => print(i))
¨ l.foreach(i => print(i)) ¨ l.foreach(print(_))
Copyrig
ht 2010, PrismTech – A
ll Rights Reserved.
Processors
¨ Several different kinds of “processors” exist to facilitate specific kinds of processing
¨ The most generic processor allows to arbitrarily manipulate the incoming data
¨ Ex: val route= new RouteBuilder { ! “dds:Foo:1/FooType” process ( !
"e => myprocessor(e.in[ShapeType]) ! ) to “dds:Bar:2/BarType” ! } !
W3C
WS!A
MQ
P!
JMS!
REST!
ULS DDS-I!
DDS-I!
XMPP!
Custom!
Getting Started with B2
Copyrig
ht 2010, PrismTech – A
ll Rights Reserved.
iShapes Application ¨ To explore the features provided by
the B2 we’ll use the simd-cxx ishapes application
¨ Three Topics ¨ Circle, Square, Triangle
¨ One Type struct ShapeType { ! string color; ! long x; ! long y; ! long shapesize; !}; !
Spotted shapes represent subscriptions
Pierced shapes represent publications
Copyrig
ht 2010, PrismTech – A
ll Rights Reserved.
Simple Routing
Simple routing can be used in the following cases: ¨ A topic has to be routed from one DDS domain to another (or
several) DDS domains
¨ A topic has to be renamed
val simpleRoute = new RouteBuilder { ! “dds:Circle:1/ShapeType” to “dds:Square:2/ShapeType” !} !
Copyrig
ht 2010, PrismTech – A
ll Rights Reserved.
Simple Route Examples val simpleRoute = new RouteBuilder { ! “dds:Circle:1/ShapeType” to “dds:Circle:2/ShapeType” !} !
val mcastRoute = new RouteBuilder { ! “dds:Circle:1/ShapeType” to { !
"“dds:Circle:2/ShapeType”, !"“dds:Square:3/ShapeType”, !"“jms:topic:Circle” !
} !
val simpletRoute = new RouteBuilder { ! “dds:Circle:1/ShapeType” to “dds:Square:2/ShapeType” !} !
Copyrig
ht 2010, PrismTech – A
ll Rights Reserved.
Filtering
Content Filtering
¨ Forward data only of a predicate is verified
Temporal Filtering
¨ Control the output rate
Copyrig
ht 2010, PrismTech – A
ll Rights Reserved.
Content Filtering Example
val isRed = (s: ShapeType) => { ! if (s.color == “RED”) true else false !} !!val simpleRoute = new RouteBuilder { ! “dds:Circle:1/ShapeType” !
"when (e: isRed(e.in[ShapeType])) ! to (“dds:Circle:2/ShapeType”) !} !
Route Red Circles from domain 1to domain 2
Copyrig
ht 2010, PrismTech – A
ll Rights Reserved.
Temporal Filtering
!val simpleRoute = new RouteBuilder { ! “dds:Circle:1/ShapeType” !
"throttle (2 per 1 seconds) ! to (“jms:topic:Circle” ) !} !
Limit the the message rate to 2 messages per second.
Copyrig
ht 2010, PrismTech – A
ll Rights Reserved.
Content Based Routing ¨ An extension of content filtering allowing to easily route
information based on its content
¨ Example:
val isRed = (s: ShapeType) => { if (s.color == “RED”) true else false } !val isBlue = (s: ShapeType) => { if (s.color == “BLUE”) true else false } !!val simpleRoute = new RouteBuilder { ! “dds:Circle:1/ShapeType” !
"choice { !" when (e: isRed(e.in[ShapeType])) to (“jms:topic:RedShape”) !" when (e: isBlue(e.in[ShapeType])) to (“jms:topic:BlueShape”) !
" otherwise to (“jms:topic:MultiColorShape”) ! } !} !
Copyrig
ht 2010, PrismTech – A
ll Rights Reserved.
Aggregation
¨ Aggregates messages based on some correlation criteria
¨ Allow to control the number of messages aggregated and the maximum delay that will be waited to performing the aggregation
Copyrig
ht 2010, PrismTech – A
ll Rights Reserved.
Example
Val aRoute = new RouteBuilder { ! jointEndpoint !
"aggregate(_.in(“color”), aggregator) ! "completionSize(2) !
"completionTimeout(20) ! to(aggEndpoint) !} !
Aggregate samples that share the same color by 2 and wait 20ms maximum
Copyrig
ht 2010, PrismTech – A
ll Rights Reserved.
Simplest B2 Application object SimpleShapesRouter { ! def main(args: Array[String]) { !! // Define a Route using the Scala DSL ! val shapesRoute = new RouteBuilder { ! “dds:Circle:0/ShapeType” to “dds:Square:0/ShapeType” ! } !! // Add the route just created to the current context ! val ctx = new DefaultCamelContext! ctx.addRoutes(shapesRoute) ! ctx.start() ! } !} !
Copyrig
ht 2010, PrismTech – A
ll Rights Reserved.
Wait… What About QoS?
¨ QoS is specified as part of the DDS endpoint as a list after the “?”
¨ Example: ¨ “dds:Circle:0/ShapeType?
ReliabilityKind=RELIABLE&Partition=RoundShapes”
W3C
WS!A
MQ
P!
JMS!
REST!
ULS DDS-I!
DDS-I!
XMPP!
Custom!
Demos!
Copyrig
ht 2010, PrismTech – A
ll Rights Reserved.
Summary B2 Features ¨ Connectivity from OpenSplice DDS to about 80
technologies, including JMS, XMPP, AMQP, Web Services, REST, ComedD, Plain TCP/UDP, etc.
¨ Powerful Integration Engine for OpenSplice DDS based Systems
¨ Powerful Integration Engine between DDS and other technologies
Copyrig
ht 2010, PrismTech – A
ll Rights Reserved.
B2 Beta Program ¨ Official Beta Program will be start
by the end of April
¨ Selected users will be given access to the technology before anybody else!
¨ Limited Slots available, sign-up quickly at : ¨ [email protected]
Summing Up
Copyrig
ht 2010, PrismTech – A
ll Rights Reserved.
Concluding Remarks ¨ The Blend-Box provide the ideal
integration technologies for OpenSplice DDS based systems
¨ It allows the DDS-based systems to be built in a highly modular and loosely coupled fashion
¨ It trivialize connectivity with other technologies, making DDS data universally available!
Copyrig
ht 2010, PrismTech – A
ll Rights Reserved.
http://www.opensplice.com/
http://www.opensplice.org/
emailto:[email protected]
http://www.youtube.com/OpenSpliceTube http://opensplice.blogspot.com
http://bit.ly/1Sreg
http://www.slideshare.net/angelo.corsaro
http://twitter.com/acorsaro/
D e l i v e r i n g P e r f o r m a n c e , O p e n n e s s , a n d F r e e d o m
OpenSplice DDS