B2: The OpenSplice BlendBox


Published on

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.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

B2: The OpenSplice BlendBox

  1. 1. DD S- I! ULS DD S-I! Custom! REST! XM PP S! ! W3 JM P! AMQ CW S!Angelo CORSARO, Ph.D.Chief Technology Officer OMG DDS Sig Co-ChairPrismTechangelo.corsaro@prismtech.com!
  2. 2. Systems Integration Challenges
  3. 3. Subsystem Integration Dependencies are often introduced between subsystems as a consequence of having to deal with¨  Complex distributed systems are different representations of the same information Copyright  2010,  PrismTech  –    All  Rights  Reserved.   often made up by different subsystems Controller Working Positions¨  Ideally, subsystems should be FPLe completely decoupled and independently evolvable Other That is easier said than done. FPLi¨  Centers Subsystems often end-up FPLe FPLf FPLi including mutual dependencies and introducing coupling Fight Data Processor
  4. 4. System Integration Air Traffic Control¨  Independently developed systems Copyright  2010,  PrismTech  –    All  Rights  Reserved.   often use different representations for the same concept (e.g. Cartesian vs. Polar Coordinates) X¨  Other times, they might use different topic names, or domains, Y etc.¨  This differences need to be addressed in order for systems to be integrated Airline
  5. 5. Technologies Integration¨  Different systems are often Copyright  2010,  PrismTech  –    All  Rights  Reserved.   based on different technologies, yet need to be integrated¨  Several systems need to make information available through a wide- set of “media”
  6. 6. Ultra Large Scale Systems H 1,1,h N2,5 Copyright  2010,  PrismTech  –    All  Rights  Reserved.   Ultra-Large Scale (ULS) Systems N1,1 H 1,1,1 R¨  R H 1,1,0 are often build by the SN H 2,1,m aggregation of many individual SN H 1,0,k SN R systems H N 2,0 H 1,0,1 H 1,0,0 N1,0 R N2,4 2,0,i R R The integration challenge SN¨  N2,1 SN H 2,1,n posed by ULS systems is mainly N2,2 N2,3 connected with scalability and R R H 2,1,j efficiency H 2,1,k H 2,1,h
  7. 7. SummarySeveral different Integration problems exist: Copyright  2010,  PrismTech  –    All  Rights  Reserved.  ¨  Sub-system integration¨  System Integration¨  Technology Integration¨  Ultra Large Scale Systems Integration How can we address all of this problems with an holistic approach?
  8. 8. DD S -I! ULS DD S-I! Custom! REST! XM PP S! ! W3 JM P! AMQ CWThe OpenSplice BlendBox S!
  9. 9. OpenSplice Blend-Box (B2)¨  High performance, QoS- DD S- I! Enabled, Extensible and Copyright  2010,  PrismTech  –    All  Rights  Reserved.   ULS configurable protocol gateway DD S-I! framework Custom! REST!¨  Automatically bridging across XM communication technologies S! PP ! W3 JM P! Allows to expose relevant data AMQ CW¨  to over 80 communication S! protocols, without imposing changes into existing systems!
  10. 10. B2 Key Benefits¨  Enables the development of DD Copyright  2010,  PrismTech  –    All  Rights  Reserved.   S- highly modular systems by I! ULS encapsulating the subsystem DD S-I! integration logic Custom!¨  Enables content, format and type REST! transformation as well as XM PP mediation across different S! ! W3 JM P! technologies AMQ CW S!¨  Provides a solution for creating scalable ultra-large scale systems
  11. 11. B2 In Action Controller Copyright  2010,  PrismTech  –    All  Rights  Reserved.   Working Positions FPLe DD S -I! ULS FPLi REST DD S-I! Other Custom! FPLi REST! XM PPCenters S! ! W3 JM P! AMQ CW S! FPLe FPLi DD S- I! ULS DD S-I! Custom! REST! XM FPLf PP S! ! W3 JM P! AMQ C WS ! Fight Data Processor
  12. 12. B2 Technology¨  B2 uses at its core an extended and enhanced Copyright  2010,  PrismTech  –    All  Rights  Reserved.   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)
  13. 13. B2 Key Elements Components: Provide connectivity to a given technology Copyright  2010,  PrismTech  –    All  Rights  Reserved.  ¨ ¨  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.
  14. 14. Components & Endpoints¨  A component is a factory of Endpoint instances. Over 80 Copyright  2010,  PrismTech  –    All  Rights  Reserved.   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 ¨  …
  15. 15. Routes A route defines a path from an in endpoint to an Copyright  2010,  PrismTech  –    All  Rights  Reserved.   ¨  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!
  16. 16. Enterprise Integration Patterns (EIP)¨  EIP provide pre-specified ways of Copyright  2010,  PrismTech  –    All  Rights  Reserved.   integrating endpoints Content Based Recipient List Router¨  The most common integration patterns are supported, such as, multicast, A B filtering, correlation, content-routing, Message FIlter Correlation ID load-balancing, etc.¨  Multicast Ex: Splitter Aggregator val route= new RouteBuilder {! “dds:Foo:1/FooType” ! "to (“dds:Bar:2/FooType”, “jms:topic:Foo”)! }!
  17. 17. Intermezzo
  18. 18. Scala Basics Lambda Function Definition: Copyright  2010,  PrismTech  –    All  Rights  Reserved.  ¨  ¨  (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(_))
  19. 19. Processors Several different kinds of “processors” exist to Copyright  2010,  PrismTech  –    All  Rights  Reserved.  ¨  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” ! }!
  20. 20. DD S -I! ULS DD S-I! Custom! REST! XM PP S! ! W3 JM P! AMQ CWGetting Started with B2 S!
  21. 21. iShapes Application Spotted shapes represent subscriptions¨  To explore the features provided by Pierced shapes represent publications Copyright  2010,  PrismTech  –    All  Rights  Reserved.   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;! };!
  22. 22. Simple Routing Copyright  2010,  PrismTech  –    All  Rights  Reserved.  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” ! }!
  23. 23. Simple Route Examples val simpleRoute = new RouteBuilder {! Copyright  2010,  PrismTech  –    All  Rights  Reserved.   “dds:Circle:1/ShapeType” to “dds:Circle:2/ShapeType” ! }! val simpletRoute = new RouteBuilder {! “dds:Circle:1/ShapeType” to “dds:Square:2/ShapeType” ! }! val mcastRoute = new RouteBuilder {! “dds:Circle:1/ShapeType” to {! "“dds:Circle:2/ShapeType”,! "“dds:Square:3/ShapeType”,! "“jms:topic:Circle”! }!
  24. 24. Filtering Copyright  2010,  PrismTech  –    All  Rights  Reserved.  Content Filtering¨  Forward data only of a predicate is verifiedTemporal Filtering¨  Control the output rate
  25. 25. Content Filtering Example Copyright  2010,  PrismTech  –    All  Rights  Reserved.  val isRed = (s: ShapeType) => { ! if (s.color == “RED”) true else false!}! Route Red Circles! from domain 1toval simpleRoute = new RouteBuilder {! domain 2 “dds:Circle:1/ShapeType” ! "when (e: isRed(e.in[ShapeType])) ! to (“dds:Circle:2/ShapeType”)!}!
  26. 26. Temporal Filtering Copyright  2010,  PrismTech  –    All  Rights  Reserved.  !val simpleRoute = new RouteBuilder {! “dds:Circle:1/ShapeType” ! Limit the the message "throttle (2 per 1 seconds) ! rate to 2 messages per to (“jms:topic:Circle” )! second.}!
  27. 27. Content Based Routing¨  An extension of content filtering allowing to easily route Copyright  2010,  PrismTech  –    All  Rights  Reserved.   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”)! }! }!
  28. 28. Aggregation Copyright  2010,  PrismTech  –    All  Rights  Reserved.  ¨  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
  29. 29. Example Copyright  2010,  PrismTech  –    All  Rights  Reserved.   Val aRoute = new RouteBuilder {! jointEndpoint ! Aggregate samples "aggregate(_.in(“color”), aggregator) ! that share the same "completionSize(2) ! color by 2 and wait "completionTimeout(20) ! 20ms maximum to(aggEndpoint)! }!
  30. 30. Simplest B2 Application Copyright  2010,  PrismTech  –    All  Rights  Reserved.   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()! }! }!
  31. 31. Wait… What About QoS? Copyright  2010,  PrismTech  –    All  Rights  Reserved.  ¨  QoS is specified as part of the DDS endpoint as a list after the “?”¨  Example: ¨  “dds:Circle:0/ShapeType? ReliabilityKind=RELIABLE&Partition=RoundShapes”
  32. 32. DD S -I! ULS DD S-I! Custom! REST! XM PP S! ! W3Demos! JM P! AMQ CW S!
  33. 33. Summary B2 Features¨  Connectivity from OpenSplice DDS to about 80 Copyright  2010,  PrismTech  –    All  Rights  Reserved.   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
  34. 34. B2 Beta Program¨  Official Beta Program will be start Copyright  2010,  PrismTech  –    All  Rights  Reserved.   by the end of April¨  Selected users will be given access to the technology before anybody else!¨  Limited Slots available, sign-up quickly at : ¨  BlendBox@PrismTech.Com
  35. 35. Summing Up
  36. 36. Concluding Remarks The Blend-Box provide the ideal Copyright  2010,  PrismTech  –    All  Rights  Reserved.  ¨  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!
  37. 37. OpenSplice DDSDelivering Performance, Openness, and Freedom http://www.opensplice.com/ http://www.opensplice.org/ http://www.slideshare.net/angelo.corsaro emailto:opensplicedds@prismtech.com Copyright  2010,  PrismTech  –    All  Rights  Reserved.   http://bit.ly/1Sreg http://twitter.com/acorsaro/ http://www.youtube.com/OpenSpliceTube http://opensplice.blogspot.com