OpenSplice                 DDS EverywhereOpenSplice DDS                              Angelo CORSARO, Ph.D.                ...
DDS Everywhere Platform                      A DDS-based, interoperable                                                   ...
DDS Everywhere Platform                     Consumer                     Platforms                 ☐   Browser / HTML5    ...
DDS Everywhere Platform                  ☐ Mobility                  ☐ Elasticity                  ☐ Cloud                ...
OpenSplice EnterpriseOpenSplice DDS
Key Highlights                  ☐   The best middleware                            OpenSplice         OpenSplice          ...
OpenSplice DDS                 New in v6.3
OpenSplice DDSI2E                  Enhanced version of the Interoperable wire                                             ...
Record and Replay                  ☐   Dynamic recording of any topic-                                                    ...
OpenSplice DDS                                                                                          Record and Replay ...
New DDS APIs                                                                                    Copyright	  2011,	  PrismT...
Statistics                                                       Simple DataWriter with default QoS                       ...
struct ShapeType {                 ISO C++ DDS API                                                                        ...
ISO C++ DDS API                                                                                                Copyright	 ...
Example: DataWriter                 int main(int argc, char* argv[]) {                 try {                 ! !    Domain...
Example: DataReader                 int main(int argc, char* argv[]) {                    try {                       Doma...
Full C++ Shapes Application                 see:                                                                          ...
OpenSplice CloudOpenSplice DDS
Key Highlights                                                            OpenSplice                                      ...
OpenSplice Mobile                                                                                   Copyright	  2011,	  Pr...
OpenSplice DDS                                                                                          OpenSplice Mobile ...
OpenSplice DDS                                                                                          Demo              ...
Java 5 PSM                                                                                         Copyright	  2011,	  Pri...
Java Shapes -- Reader                  package	  org.omg.demo.dds.shapes;                  import	  ...;                  ...
Java Shapes -- Reader                  	  	  	  	  	  	  	  	  DomainParticipantFactory	  factory	  =                  	  ...
Java Shapes -- Writer                  public	  class	  ShapesWriter	  {                  	  	  	  	  public	  static	  vo...
Java Shapes -- Writer                  	  	  	  	  	  	  	  	  final	  PolicyFactory	  pf	  =	  env.getSPI().getPolicyFact...
Performance                                                   Copyright	  2011,	  PrismTech	  –	  	  All	  Rights	  Reserv...
OpenSplice Gateway                                                                           JMS                      Inte...
WebSocket Integration                  1   // Define endpoints                  2      val inEndpoint =                   ...
TCP/UDP Tunneling                                        DDS                                                              ...
OpenSplice EmbeddedOpenSplice DDS
Key Highlights                                                    OpenSplice          OpenSplice                          ...
FPGA Integrator                                                                 GIOP/DDSI                                 ...
OpenSplice Lite                                                                  ISO C++ API                  ☐   Bring so...
OpenSplice RTE                  ☐   Bring the full power of DDS to real-                                                  ...
Putting it all TogetherOpenSplice DDS
DDS Everywhere!                                                                          OpenSplice                       ...
OpenSplice DDS                 Final Remarks
Concluding Remarks                                                                                                      Co...
OpenSplice DDS
:: Connect with Us ::                   ¥opensplice.com             ¥forums.opensplice.org                              ...
Upcoming SlideShare
Loading in...5
×

DDS Everywhere

946

Published on

An increasing number of applications, such as smart cities, mobile-health and smart grids, require to ubiquitously distribute and access real-time information from, and across, a vast variety of devices, ranging from embedded sensors to mobile devices. While the problem of ubiquity is solved at a computing and network connectivity level, it is by no means solved with respect to (1) real-time, and (2) resource efficient (e.g. battery life and network), data distribution.

This webcast will unveil PrismTech’s “DDS Everywhere” product strategy and will introduces a series of Innovations that have extended the OpenSplice ecosystem to seamlessly share data between embedded devices, traditional IT infrastructures, cloud applications and mobile devices.

Published in: Technology
1 Comment
1 Like
Statistics
Notes
  • As usual, great job Angelo!
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total Views
946
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
39
Comments
1
Likes
1
Embeds 0
No embeds

No notes for slide

Transcript of "DDS Everywhere"

  1. 1. OpenSplice DDS EverywhereOpenSplice DDS Angelo CORSARO, Ph.D. Chief Technology Officer OMG DDS Sig Co-Chair PrismTech angelo.corsaro@prismtech.com
  2. 2. DDS Everywhere Platform A DDS-based, interoperable Copyright  2011,  PrismTech  –    All  Rights  Reserved. ☐ product family addressing OpenSplice OpenSplice systems needs from Embedded Cloud Community and Mobile to Enterprise and Cloud OpenSpliceOpenSplice DDS ☐ An Open Source core providing free access to the OpenSplice OpenSplice OpenSplice Ecosystem, security of supply and Enterprise Embedded a vibrant, innovative community
  3. 3. DDS Everywhere Platform Consumer Platforms ☐ Browser / HTML5 Copyright  2011,  PrismTech  –    All  Rights  Reserved. ☐ iOS OpenSplice OpenSplice ☐ Android ☐ Cloud Cloud Community ☐ No-SQL ☐ Mobile/WiFi IP Transp. OpenSpliceOpenSplice DDS ☐ RTOS (VxWorks, QNX, ☐ OS (Linux, Windows, etc) etc.) ☐ Cloud ☐ FPGA OpenSplice OpenSplice ☐ DBMS ☐ BSP / No-OS ☐ No-SQL Enterprise Embedded ☐ IP + Exotic ☐ InfiniBand + IP Transports Transports Industrial IT Platforms Platforms
  4. 4. DDS Everywhere Platform ☐ Mobility ☐ Elasticity ☐ Cloud Copyright  2011,  PrismTech  –    All  Rights  Reserved. ☐ Integration OpenSplice OpenSplice Cloud Community OpenSpliceOpenSplice DDS ☐ Fault-Tolerance OpenSplice OpenSplice ☐ Throughput Enterprise Embedded ☐ Scalability ☐ Latency ☐ Determinism ☐ Latency ☐ Security ☐ Footprint ☐ Integration
  5. 5. OpenSplice EnterpriseOpenSplice DDS
  6. 6. Key Highlights ☐ The best middleware OpenSplice OpenSplice Copyright  2011,  PrismTech  –    All  Rights  Reserved. Cloud Community infrastructure to Simplify Distributed System Development OpenSplice ☐ Reduce complexity ofOpenSplice DDS building, testing, integrating, OpenSplice OpenSplice OpenSplice and deploying high- Tools Enterprise Embedded performance, scalable, and fault-tolerant distributed systems OpenSplice DDS
  7. 7. OpenSplice DDS New in v6.3
  8. 8. OpenSplice DDSI2E Enhanced version of the Interoperable wire Copyright  2011,  PrismTech  –    All  Rights  Reserved. protocol DDSI v2.1 Discovery ☐ Standardized discovery (locators) ☐ Dynamic unicast/multicast selection ☐ Optional static discoveryOpenSplice DDS Real-Time ☐ independently scheduled priority-lanes ☐ Support for Logical and Physical Partitioning ☐ Traffic-Shaping Security ☐ Encrypted network-Partitions
  9. 9. Record and Replay ☐ Dynamic recording of any topic- Copyright  2011,  PrismTech  –    All  Rights  Reserved. data in a DDS system ☐ Selective replay with variable RnR RnR RnR speed Service Service(s) Manager ☐ Distributed control by topic-based Record/Replay command Record/Replay command Any topic API (‘command’ & ‘status’ topics)OpenSplice DDS & status topics & status topics OpenSplice DDS ☐ Seamless integration with OpenSplice Tester (topic-based API) ☐ Dedicated RnR-Manager graphical GUI for scenario-definition and data import/analysis
  10. 10. OpenSplice DDS Record and Replay Tool Copyright  2011,  PrismTech  –    All  Rights  Reserved.
  11. 11. New DDS APIs Copyright  2011,  PrismTech  –    All  Rights  Reserved. ☐ The original DDS API introduces some unnecessary accidental complexityOpenSplice DDS ☐ We’ve been working hard to standardize new C++/Java API for DDS that makes using it as simple as possible
  12. 12. Statistics Simple DataWriter with default QoS DDS v1.2 C++ API ISO C++ API Copyright  2011,  PrismTech  –    All  Rights  Reserved. 15 ☐ The new API reduces the number of lines of code 11 from 3x to 5x when compared to the originalOpenSplice DDS 8 DDS API! ☐ Less code means less bugs 4 0 SLOC
  13. 13. struct ShapeType { ISO C++ DDS API string color; long x; long y; long shapesize; }; #pragma keylist ShapeType color int main(int argc, char* argv[]) { try { Copyright  2011,  PrismTech  –    All  Rights  Reserved. ☐ Simple, Compact and ! ! // Create DomainParticipant DomainParticipant dp = DomainParticipant(0); Elegant ! ! // Create Topic Topic<ShapeType> topic(dp, "Circle"); // Create Publisher ! ! Publisher pub(dp); ☐ Type-safe // Create DataWriter QoS DataWriterQos dwqos = pub.default_datawriter_qos() << Durability::Transient() ☐ Orthogonal << History::KeepLast(10);OpenSplice DDS // Create DataWriter ! ! DataWriter<ShapeType> dw(pub, topic, dwqos); ☐ Efficient // Write ShapeType s = {"RED", 50, 70, 90}; dw << s; // - or - ☐ QoS DSL dw.write(s); ! ! ! } catch (const dds::core::Exception& e) { ! ! std::cout << e.what() << std::endl; ! } ! return 0; }
  14. 14. ISO C++ DDS API Copyright  2011,  PrismTech  –    All  Rights  Reserved. ☐ Unified and composable data selection API std::vector<std::string> p; p.push_back("100"); p.push_back("200");OpenSplice DDS Query q("x < %0 AND y < %1", p); auto data = reader ! .select() .instance(handle) // -- Select Instance ! ! .state(status::DataState::new_data()) // -- Filter on State ! ! .content(q) // -- Filter on Content .read(); // -- Execute the selection and read the data
  15. 15. Example: DataWriter int main(int argc, char* argv[]) { try { ! ! DomainParticipant dp(0); Copyright  2011,  PrismTech  –    All  Rights  Reserved. ! ! Topic<ShapeType> topic(dp, "Circle"); ! ! Publisher pub(dp); ! ! DataWriter<ShapeType> dw(pub, topic); ! ! uint32_t pos = 0; ! ! const uint32_t N = 300; ! ! for (int i = 0; i < N; ++i) { ! ! ! ShapeType bc = {"RED", i, i, 60};OpenSplice DDS ! ! ! ShapeType rc = {"BLUE", N-i, N-i, 60}; ! ! ! dw << rc; ! ! ! usleep(10000); ! ! } ! } catch (const dds::core::Exception& e) { ! ! std::cout << e.what() << std::endl; ! } ! return 0; }
  16. 16. Example: DataReader int main(int argc, char* argv[]) { try { DomainParticipant dp(0); Copyright  2011,  PrismTech  –    All  Rights  Reserved. Topic<ShapeType> topic(dp, "Circle"); Subscriber sub(dp); DataReader<ShapeType> dr(sub, topic); uint32_t pos = 0; const uint32_t N = 300; uint32_t max_size = 10; const uint32_t sleepTime = 500000;OpenSplice DDS while (true) { LoanedSamples<ShapeType> samples = dr.read(); std::cout << "-----------" << std::endl; for_each(samples.begin(), samples.end(), printShapeSample); usleep(sleepTime); } } catch (const dds::core::Exception& e) { std::cout << e.what() << std::endl; } return 0; }
  17. 17. Full C++ Shapes Application see: Copyright  2011,  PrismTech  –    All  Rights  Reserved. github.com/kydos/dds-psm-cxx/tree/master/examples/ishapes-driverOpenSplice DDS
  18. 18. OpenSplice CloudOpenSplice DDS
  19. 19. Key Highlights OpenSplice Gateway Copyright  2011,  PrismTech  –    All  Rights  Reserved. ☐ Brings DDS on mobile devices powered by OpenSplice OpenSplice OpenSplice Android/iOS Mobile Cloud Community ☐ Enables DDS-based OpenSpliceOpenSplice DDS Cloud Messaging for higher scalability, throughout and minimal OpenSplice OpenSplice cost per message Enterprise Embedded
  20. 20. OpenSplice Mobile Copyright  2011,  PrismTech  –    All  Rights  Reserved. ☐ Pure Java version of OpenSplice targeting the JVM DCPS Java 5 / Scala API ☐ DDSI Protocol Stack optimized DDSI for mobility and Android OS (Optimized for Mobility)OpenSplice DDS ☐ Only DDS on the market designed and Engineered for Android and the JVM
  21. 21. OpenSplice DDS OpenSplice Mobile Copyright  2011,  PrismTech  –    All  Rights  Reserved.
  22. 22. OpenSplice DDS Demo Copyright  2011,  PrismTech  –    All  Rights  Reserved.
  23. 23. Java 5 PSM Copyright  2011,  PrismTech  –    All  Rights  Reserved. ☐ Idiomatic and ergonomic DDS API for Java ☐ Guaranteed code portability through clean separation of standard API (in an OMG provided JAR) and vendor implementationOpenSplice DDS ☐ QoS and Selector DSL simplify programming and make code more readable ☐ QoS Provider allows to “externalize” the QoS configuration
  24. 24. Java Shapes -- Reader package  org.omg.demo.dds.shapes; import  ...; Copyright  2011,  PrismTech  –    All  Rights  Reserved. /**  *  This  class  provides  a  simple  example  of  a  DDS  data  reader  using  the  new  Java  API.  */ public  class  ShapesReader  {        public  static  void  main(String  args[])  throws  Exception  {                if  (args.length  <  1)  {                        System.out.println("USAGE:ntShapesWriter  <topic>");                        System.out.println("nttopic  =  [Circle,  Square,  Triangle]");OpenSplice DDS                        System.exit(1);                }                final  String  shape  =                                args[1].substring(0,1).toUpperCase()  +   args[1].substring(1,args[1].length()).toLowerCase();                final  ServiceEnvironment  env  =                                ServiceEnvironment.createInstance(ShapesWriter.class.getClassLoader());
  25. 25. Java Shapes -- Reader                DomainParticipantFactory  factory  =                                DomainParticipantFactory.getInstance(env);                DomainParticipant  dp  =  factory.createParticipant(); Copyright  2011,  PrismTech  –    All  Rights  Reserved.                final  PolicyFactory  pf  =  env.getSPI().getPolicyFactory();                TopicQos  tqos  =  dp.getDefaultTopicQos();                tqos.withPolicies(pf.Durability().withTransient(),                                                        pf.Reliability().withReliable());                Topic<ShapeType>  topic  =  dp.createTopic(shape,  ShapeType.class);                Subscriber  sub  =  dp.createSubscriber();OpenSplice DDS                DataReaderQos  drqos  =                                sub.getDefaultDataReaderQos().withPolicies(                                                pf.Reliability().withBestEffort(),                                                pf.Durability().withTransient()                                );                DataReader<ShapeType>  dr  =                                sub.createDataReader(topic,  drqos,  new  ShapeTypeListener(),  Status.allStatuses(env));                Thread.currentThread().join();        } }
  26. 26. Java Shapes -- Writer public  class  ShapesWriter  {        public  static  void  main(String  args[])  throws  Exception  {                if  (args.length  <  4)  { Copyright  2011,  PrismTech  –    All  Rights  Reserved.                        System.out.println("USAGE:ntShapesWriter  <topic>  <circle>  <samples>  <period  ms>");                        System.out.println("nttopic  =  [Circle,  Square,  Triangle]");                        System.out.println("tcolor  =  [Red,  Blue,  Green,  Magenta,  Cyan]");                        System.exit(1);                }                final  String  shape  =                                args[1].substring(0,1).toUpperCase()  +  args[1].substring(1,args[1].length()).toLowerCase();                final  String  color  =  args[1].toUpperCase();OpenSplice DDS                final  int  samples  =  Integer.parseInt(args[2]);                final  int  period  =  Integer.parseInt(args[3]);                final  int  bound  =  100;                final  ServiceEnvironment  env  =                                ServiceEnvironment.createInstance(ShapesWriter.class.getClassLoader());
  27. 27. Java Shapes -- Writer                final  PolicyFactory  pf  =  env.getSPI().getPolicyFactory();                DomainParticipantFactory  factory  =                                DomainParticipantFactory.getInstance(env);                DomainParticipant  dp  =  factory.createParticipant(); Copyright  2011,  PrismTech  –    All  Rights  Reserved.                Topic<ShapeType>  topic  =  dp.createTopic(shape,  ShapeType.class);                Publisher  pub  =dp.createPublisher();                DataWriterQos  dwqos  =                                pub.getDefaultDataWriterQos().withPolicies(                                                pf.Reliability().withBestEffort(),                                                pf.Durability().withTransient());                DataWriter<ShapeType>  dw  =  pub.createDataWriter(topic);OpenSplice DDS                final  ShapeType  sample  =  new  ShapeType(color,  0,  0,  0);                for  (int  i  =  0;  i  <  samples;  ++i)  {                        sample                                .setX(((int)Math.random()%bound))                                .setY(((int)Math.random()%bound))                                .setShapesize(((int)Math.random()%bound));                        dw.write(sample);                        Thread.sleep(period);                }        } }
  28. 28. Performance Copyright  2011,  PrismTech  –    All  Rights  Reserved. ☐ OpenSplice Mobile v1.0 beta features already very good performance ☐ Latency is low and prettyOpenSplice DDS stable ~3usec of difference from 32 to 1024 bytes
  29. 29. OpenSplice Gateway JMS Integration technology providing Copyright  2011,  PrismTech  –    All  Rights  Reserved. ☐ XM connectivity from DDS to over 80 ST PP RE OpenSplice technologies, including WebSockets Gateway P and REST Cu AMQ sto m ☐ Java-based and easily deployableOpenSplice DDS DDSI-RTPS on the cloud Supported Connectors Include: ☐ Key building block for OpenSplice - JMS - HTTP - REST - AMQP Based Cloud Messaging Solutions - CometD - XMPP - CFX - Hibernate -WebSockets -HBase - TCP, UDP Sockets - Custom
  30. 30. WebSocket Integration 1 // Define endpoints 2 val inEndpoint = Copyright  2011,  PrismTech  –    All  Rights  Reserved. 3 "ddsi:"+ inTopic +":"+ inDomain +"/" + shapeType 4 val outEndpoint = 5 "websocket://"+inTopic.toLowerCase + "?sendToAll=true" 6 7 // Define a Route using the Scala DSL 8 val shapesRoute = new RouteBuilder { 9 override def configure() =OpenSplice DDS 10 from(inEndpoint) unmarshal("cdr") marshal() json() to(outEndpoint) To JSON 11 } Topic “Circle” ☐ This example requires Camel 2.10 DDS Domain 0
  31. 31. TCP/UDP Tunneling DDS Domain 0 ☐ Integrate different DDS Domains via TCP (or UDP) Topic “Circle” tunnel ☐ Per Topic bridging ☐ Unidirectional or bidirectional GW 1 ☐ Possibly adding SSL/TLS TCPOpenSplice DDS GW 2 1 // on GW1: 2 from("ddsi:Circle:0/ShapeType") 3 to("netty:tcp://localhost:6789?sync=false"); Topic “Circle” 1 // on GW2: 2 from("netty:tcp://localhost:6789?sync=false") 3 to("ddsi:Circle:0/ShapeType"); DDS Domain 0
  32. 32. OpenSplice EmbeddedOpenSplice DDS
  33. 33. Key Highlights OpenSplice OpenSplice Copyright  2011,  PrismTech  –    All  Rights  Reserved. Cloud Community ☐ The OpenSplice Embedded Product family brings DDS OpenSplice connectivity to devices and OpenSpliceOpenSplice DDS resource constrained real- OpenSplice OpenSplice Integrator time embedded systems Enterprise Embedded OpenSplice Lite OpenSplice RTE
  34. 34. FPGA Integrator GIOP/DDSI DDS Copyright  2011,  PrismTech  –    All  Rights  Reserved. Data Bridge Reader FPGA Data Writer GIOP Data Reader Data TopicD ICO GIOP DDSI Writer TopicA Data TopicB Reader Data Writer TopicC ... Data Data Writer ReaderOpenSplice DDS DDS Global Data Space ☐ ‘Out-of-the-box’ solution for integrating FPGA’s withDDS based systems ☐ Bridges the device-data (via GIOP) to the DDS-based system using a software ‘gateway’ providing full DDS QoS support to maintain & distribute the device-data ☐ Bridge-technology is be based either: ☐ OpenSplice Gateway (if a Java platform is available) or ☐ A small OpenSplice bridge application or pluggable-service
  35. 35. OpenSplice Lite ISO C++ API ☐ Bring software-based DDS Copyright  2011,  PrismTech  –    All  Rights  Reserved. implementation to a range of resource constrained devices Native C API ☐ Allow for variability on functionalities, transport and support of underlying OS/ DDSI / DDSI-E BSP OS TransportOpenSplice DDS ☐ Provides very low footprint and very high Abstraction Abstraction performance ☐ Footprint as low as 100/200 KB RTOS DSP Latency as low as 35-45 usec (on Gigabit uController ☐ GPP network)
  36. 36. OpenSplice RTE ☐ Bring the full power of DDS to real- Copyright  2011,  PrismTech  –    All  Rights  Reserved. time embedded systems DCPS API (C/C++/RT-Java) ☐ Provides low footprint, superlative DDSI-E / RT-NET scalability and and high performance OSOpenSplice DDS Abstraction ☐ Footprint 2MB RTOS ☐ Latency 75/80 usec (on Gigabit network) GPP
  37. 37. Putting it all TogetherOpenSplice DDS
  38. 38. DDS Everywhere! OpenSplice Mobile OpenSplice Mobile Embedded JVM OpenSplice DDS EnterpriseOpenSplice DDS OpenSplice Enterprise OS MQTT, AMQP, Gateway JMS, REST, .... OpenSplice OpenSplice RTE Lite RTOS Embedded OS
  39. 39. OpenSplice DDS Final Remarks
  40. 40. Concluding Remarks Copyright  2011,  PrismTech  –    All  Rights  Reserved. ☐ With the DDS Everywhere platform we are making DDS available on any device ☐ That means that: ☐ You can get DDS data from your system to anywhereOpenSplice DDS ☐ You can exploit the power of DDS across devices and technologies ☐ You have a single technology end-to-end that provides optimal efficiency, scalability, performance and more importantly data-centricity!
  41. 41. OpenSplice DDS
  42. 42. :: Connect with Us :: ¥opensplice.com ¥forums.opensplice.org ¥@acorsaro ¥opensplice.org ¥opensplicedds@prismtech.com ¥@prismtechOpenSplice DDS ¥ crc@prismtech.com ¥sales@prismtech.com ¥youtube.com/opensplicetube ¥slideshare.net/angelo.corsaro
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×