b2: the opensplice blendbox

37
Angelo CORSARO, Ph.D. Chief Technology Officer OMG DDS Sig Co-Chair PrismTech [email protected] 使 W3C WS AMQP JMS REST ULS DDS-I DDS-I XMPP Custom

Upload: angelo-corsaro

Post on 30-Apr-2015

3.626 views

Category:

Technology


1 download

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.

TRANSCRIPT

Page 1: B2: The OpenSplice BlendBox

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!

Page 2: B2: The OpenSplice BlendBox

Systems Integration Challenges

Page 3: B2: The OpenSplice BlendBox

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

Page 4: B2: The OpenSplice BlendBox

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

Page 5: B2: The OpenSplice BlendBox

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”

Page 6: B2: The OpenSplice BlendBox

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

Page 7: B2: The OpenSplice BlendBox

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?

Page 8: B2: The OpenSplice BlendBox

The OpenSplice BlendBox

W3C

WS!A

MQ

P!

JMS!

REST!

ULS DDS-I!

DDS-I!

XMPP!

Custom!

Page 9: B2: The OpenSplice BlendBox

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!

Page 10: B2: The OpenSplice BlendBox

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!

Page 11: B2: The OpenSplice BlendBox

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

Page 12: B2: The OpenSplice BlendBox

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)

Page 13: B2: The OpenSplice BlendBox

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.

Page 14: B2: The OpenSplice BlendBox

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 ¨  …

Page 15: B2: The OpenSplice BlendBox

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!

Page 16: B2: The OpenSplice BlendBox

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”) !} !

Page 17: B2: The OpenSplice BlendBox

Intermezzo

Page 18: B2: The OpenSplice BlendBox

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(_))

Page 19: B2: The OpenSplice BlendBox

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” ! } !

Page 20: B2: The OpenSplice BlendBox

W3C

WS!A

MQ

P!

JMS!

REST!

ULS DDS-I!

DDS-I!

XMPP!

Custom!

Getting Started with B2

Page 21: B2: The OpenSplice BlendBox

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

Page 22: B2: The OpenSplice BlendBox

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” !} !

Page 23: B2: The OpenSplice BlendBox

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” !} !

Page 24: B2: The OpenSplice BlendBox

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

Page 25: B2: The OpenSplice BlendBox

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

Page 26: B2: The OpenSplice BlendBox

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.

Page 27: B2: The OpenSplice BlendBox

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”) ! } !} !

Page 28: B2: The OpenSplice BlendBox

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

Page 29: B2: The OpenSplice BlendBox

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

Page 30: B2: The OpenSplice BlendBox

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() ! } !} !

Page 31: B2: The OpenSplice BlendBox

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”

Page 32: B2: The OpenSplice BlendBox

W3C

WS!A

MQ

P!

JMS!

REST!

ULS DDS-I!

DDS-I!

XMPP!

Custom!

Demos!

Page 33: B2: The OpenSplice BlendBox

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

Page 34: B2: The OpenSplice BlendBox

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]

Page 35: B2: The OpenSplice BlendBox

Summing Up

Page 36: B2: The OpenSplice BlendBox

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!

Page 37: B2: The OpenSplice BlendBox

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