SlideShare a Scribd company logo
Distributed Systems: How to
connect your real-time applications
UsingCPP 24/11/2016
Jaime Martin Losa
CTO eProsima
JaimeMartin@eProsima.com
+34 607 91 37 45
www.eProsima.com
Agenda
 Introduction
– DDS
– Architecture
– Shapes Demo
 Hello World
– eProsima Fast RTPS – Open Source (Apache 2.0)
– RTI Connext DDS - Comercial
 Modern CPP API
Introduction and
Background
Introduction: Everything is distributed
 Enterprise Internet
 Internet of Things
 Cloud Computing
 Industry 4.0
 …
Next-generation systems needs:
 Scalability
 Integration & Evolution
 Robustness & Availability
 Performance
 Security
“Real World” Systems are integrated using
a Data Model
 Grounded on the “physics” of the problem domain
– Tied to the nature of the sensors and real objects in the system (vehicles,
device types, …)
 Provides governance across disparate teams & organizations
– The “N^2” integration problem is reduced to a “N” problem
 Increased decoupling from use-cases and components
– Avoids over constraining applications
 Open, Evolvable, Platform-Independent
– The use-cases, algorithms might change between missions or versions of
the system
© 2010 Real-Time Innovations, Inc.
Realizing this data-model requires a middleware infrastructure
App AppApp
Challenge
 Everything is connected, and we should enable
communication between the different nodes.
 And this means:
– Common protocols
– Common Data Types
– Known interfaces
– Different QoS over different datalinks and
performance requirements.
– Different comunications patterns.
– Broad platform and programming language support.
– Good Data Models!
– …
DDS: Standards-based Integration
Infrastructure for Critical Applications
Streaming
Data
Sensors Events
Real-Time
Applications
Enterprise
Applications
Actuators
Family of Specifications
Broad Adoption
 Vendor independent
– API for portability
– Wire protocol for interoperability
 Multiple implementations
– 10 of API
– 8 support RTPS
 Heterogeneous
– C, C++, Java, .NET (C#, C++/CLI)
– Linux, Windows, VxWorks, other
embedded & real•time
 Loosely coupled
DDS adopted by key programs in Europe
 European Air Traffic Control
– DDS proposed for interoperate
ATC centers
 Spanish Army
– DDS is mandated for C2
Interoperability (ethernet, radio
& satellite)
 UK Generic Vehicle
Architecture
– Mandates DDS for vehicle
comm.
– Mandates DDS-RTPS for
interop.
US-DoD mandates DDS for data-distribution
 DISR (formerly JTA)
– DoD Information Technology
Standards Registry
 US Navy Open Architecture
 Army, OSD
– UCS, Unmanned Vehicle
Control
 SPAWAR NESI
– Net-centric Enterprise
Solutions for Interoperability
– Mandates DDS for Pub-Sub
SOA
RTPS Adoption
 ROS (Robotic Operating
System)
 FIWARE
– EU R&D Software Platform
 Many Drone Companies
– 3D Robotics
– Magma UAVs
– …
DDS Architecture
DDS
 DDS (Data Distribution Service for Real-Time Systems)
is a OMG specification for a pub/sub data centric model
(DCPS, Data Centric Publish/Subscribe) for Real-Time
data comms in distributed systems.
 DDS is a networking middleware that:
– Simplifies and Standardizes data flows in distributed real-time
systems.
– Provides robust comms (no single point of failure) and efficient
(minimum latency)
– Provides all kind of QoS to shape the data flows and deliver
predictable results.
DDS
DDS uses the concept of Global Data Space. In this Space we define
topics of data, and the publishers publish samples of these topics. DDS
distributes these samples to all the subscribers of those topics. Any node
can be a publisher or a subscriber.
Why DDS? Decoupled model
 Space (location)
– Automatic Discovery ensures network topology independence
 Redundancy:
– It is possible to configure redundant publishers and subscribers,
primary/secundary and takeover schemas supported
 Time:
– The reception of data does not need to be synchronous with the
writing. A subscriber may, if so configured, receive data that was
written even before the subscriber joined the network.
 Platform:
– Applications do not have to worry about data representation, processor
architecture, Operating System, or even programming language on the
other side
 Implementation:
– DDS Protocol is also an standard. Different implementations
interoperate.
Why DDS? Fully configurable
QoS Policy
DURABILITY
HISTORY
READER DATA LIFECYCLE
WRITER DATA LIFECYCLE
LIFESPAN
ENTITY FACTORY
RESOURCE LIMITS
RELIABILITY
TIME BASED FILTER
DEADLINE
CONTENT FILTERS
Volatility
UserQoS
Delivery
PresentationRedundancy
Infrastructure
Transport
QoS Policy
USER DATA
TOPIC DATA
GROUP DATA
PARTITION
PRESENTATION
DESTINATION ORDER
OWNERSHIP
OWNERSHIP STRENGTH
LIVELINESS
LATENCY BUDGET
TRANSPORT PRIORITY
DDS Infrastructure
 Standard API for
portability.
 RTPS can be
implemented over
any transport
 No central
Broker/Service
 Different Comm
channel per topic
Quality of Service: QoS
The DDS Model
Domain Participant
Data
Reader
Node
Subscriber
Data Domain
Subscriber
Data
Writer
Data
Writer
Data
Reader
Data
Reader
Data
Writer
Publisher
Topic
Publisher
Topic Topic
Topics, Instances and Keys
 Topic: A set of similar objects, sharing a
common Data Type
 Instance: A particular object of the set
 Key: Fields of the Data Type to identify an
object.
Topic: RadarTrack
Key: Flight ID
Instance
Flight ID=
MAD-BER57
Instance
Flight ID=
PAR-BER89
Instance
Flight ID=
PAR-BER89
Qos
Applied by
Instance.
Demo
const long STR_LEN=24;
struct ShapeType {
string<MSG_LEN> color; //@key
long x;
long y;
long shapesize;
};
• 3 Topics:
• Square, Circle,
Triangle
• Color is the KEY
Questions?
Jaime Martin Losa
CTO eProsima
JaimeMartin@eProsima.com
+34 607 91 37 45 www.eProsima.com
Fast RTPS Hands On:
A Hello World
Hands-on Example (C++)
Type
Definition
MyType.idl
fastrtpsgen
MyType.h
MyTypePubSubTypes.c
MyTypePublisher.cxx
MyTypeSubscriber.cxx
MyType.sln
Publisher Subscriber.exe
Three minutes to a running app!!
1. Define your data
2. Create your project
3. Build
4. Run: publisher subscriber
compiler
Example #1 - Hello World
We will use this data-type :
const long MSG_LEN=256;
struct HelloMsg {
string<MSG_LEN> user; //@key
string<MSG_LEN> msg;
};
Generate type support (for C++) [Windows]
 Look at the directory you should see:
– solution-x64Win64VS2015.sln
– And Several other files…
 Open the Solution:
 Compile from visual studio
fastrtpsgen HelloMsg.idl -example x64Win64VS2015
-replace -ppDisable
Execute the program [Windows]
 C++:
– On one window run:
 binx64Win64VS2015HelloMsgPublisherSubscriberd.exe publisher
– On another window run:
 binx64Win64VS2015HelloMsgPublisherSubscriberd.exe subscriber
 You should see the subscribers getting an empty string…
Writting some data
 Modify HelloMsgPublisher.cxx:
/* Main loop */
do
{
if(ch == 'y')
{
st.msg() = std::string("Hello using cpp ") +
std::to_string(msgsent);
mp_publisher->write(&st); ++msgsent;
cout << "Sending sample, count=" << msgsent <<
",send another sample?(y-yes,n-stop): ";
}
How to Get Data? (Listener-Based)
// Listener code
void HelloMsgSubscriber::SubListener::onNewDataMessage(Subscriber* sub)
{
// Take data
HelloMsg st;
if(sub->takeNextData(&st, &m_info))
{
if(m_info.sampleKind == ALIVE)
{
// Print your structure data here.
++n_msg;
cout << "Sample received, count=" << n_msg << endl;
cout << " " << st.msg() << endl;
}
}
}
RTI Connext DDS
Hands On:
A Hello World
Hands-on Example (C++)
Type
Definition
MyType.idl
rtiddsgen
MyType.h
MyTypeSupport.c MyTypePublisher.cpp
MyTypeSubscriber.cpp
MyType.sln
Publisher.exe Subscriber.exe
Three minutes to a running app!!
1. Define your data
2. Create your project
3. Build
4. Run: publisher subscriber
compiler
Example #1 - Hello World
We will use this data-type :
const long MSG_LEN=256;
struct HelloMsg {
string<MSG_LEN> user; //@key
string<MSG_LEN> msg;
};
Generate type support (for C++) [Windows]
 Look at the directory you should see:
– HelloMsg-64-vs2010.sln
– And Several other files…
 Open the Solution:
HelloMsgPublisher.cxx
 Compile from visual studio
rtiddsgen HelloMsg.idl -language C++ -example x64Win64VS2010
-replace -ppDisable
Execute the program [Windows]
 C++:
– On one window run:
 objsi86Win32VS2005HelloMsgPublisher.exe
– On another window run:
 objsi86Win32VS2005HelloMsgSubscriber.exe
 Java
– On one window run:
 gmake –f makefile_hello_i86Win32jdk HelloMsgPublisher
– On another window run:
 gmake –f makefile_hello_i86Win32jdk HelloMsgSubscriber
 You should see the subscribers getting an empty string…
Writting some data
 Modify HelloMsg_publisher.cxx:
/* Main loop */
for (count=0; (sample_count == 0) || (count < sample_count); ++count) {
printf("Writing HelloMsg, count %dn", count);
/* Modify the data to be sent here */
sprintf(instance->user,"%s","eProsima");
sprintf(instance->msg,"Writing HelloMsg, user eProsima, count %d",count);
retcode = HelloMsg_writer->write(*instance, instance_handle);
Writting some data (performance tip)
 Modify HelloMsg_publisher.cxx:
/* For a data type that has a key, if the same instance is going to be
written multiple times, initialize the key here
and register the keyed instance prior to writing */
sprintf(instance->user,"%s","eProsima");
instance_handle = HelloMsg_writer->register_instance(*instance);
/* Main loop */
for (count=0; (sample_count == 0) || (count < sample_count); ++count) {
printf("Writing HelloMsg, count %dn", count);
/* Modify the data to be sent here */
sprintf(instance->msg,"Writing HelloMsg, user eProsima, count %d",count);
retcode = HelloMsg_writer->write(*instance, instance_handle);
Example: Publication
// Entities creation
DomainParticipant participant =
TheParticipantFactory->create_participant(
domain_id, participant_qos, participant_listener);
Publisher publisher = domain->create_publisher(
publisher_qos, publisher_listener);
Topic topic = domain->create_topic(
"MyTopic", "MyType", topic_qos, topic_listener);
DataWriter writer = publisher->create_datawriter(
topic, writer_qos, writer_listener);
MyTypeDataWriter twriter = MyTypeDataWriter::narrow(writer);
MyType my_instance;
twriter->write(my_instance);
Example: Subscription
// Entities creation
Subscriber subscriber = domain->create_subscriber(
subscriber_qos, subscriber_listener);
Topic topic = domain->create_topic(
"MyTopic", "MyType",
topic_qos, topic_listener);
DataReader reader = subscriber->create_datareader(
topic, reader_qos, reader_listener);
// Use listener-based or wait-based access
How to Get Data? (Listener-Based)
// Listener code
MyListener::on_data_available( DataReader reader )
{
MyTypeSeq received_data;
SampleInfoSeq sample_info;
MyTypeDataReader treader = TextDataReader::narrow(reader);
treader->take( &received_data, &sample_info, …)
// Use received_data
printf("Got: %sn", received_data[0]->contents);
}
DDS Modern CPP
UsingCPP Conference 23/11/2016
Jaime Martin Losa
CTO eProsima
JaimeMartin@eProsima.com
+34 607 91 37 45
www.eProsima.com
Modern CPP DDS API
 OMG Spec:
– ISO/IEC C++ 2003 Language DDS PSM
 C++03 with support for some C++11 features
Example Modern CPP: DataWriter
try {// ================== DataWriter ===================
DomainId id = 0;
DomainParticipant dp(id);
pub::qos::PublisherQos pqos;
pqos << policy::Partition("Tracks");
pub::Publisher pub(dp, pqos);
topic::qos::TopicQos tqos;
tqos << policy::Reliability::Reliable()
<< policy::Durability::Transient()
<< policy::History::KeepLast(10)
<< policy::TransportPriority(14);
dds::topic::Topic<RadarTrack> topic(dp, "TrackTopic", tqos);
pub::qos::DataWriterQos dwqos(tqos);
pub::DataWriter<RadarTrack> dw(pub, topic, dwqos);
RadarTrack track("alpha", 100, 200);
dw.write(track);
// or
dw << track;
}
catch (const dds::core::Exception& e) {}
Example Modern CPP: DataReader
try {// ================== DataReader===================
DomainId id = 0;
DomainParticipant dp(id);
sub::qos::SubscriberQos sqos;
sqos << policy::Partition("Tracks");
sub::Subscriber sub(dp, sqos);
topic::qos::TopicQos tqos = dp.default_topic_qos();
tqos << policy::Reliability::Reliable()
<< policy::Durability::Transient()
<< policy::History::KeepLast(10)
<< policy::TransportPriority(14);
dds::topic::Topic<RadarTrack> topic(dp, "TrackTopic", tqos);
sub::qos::DataReaderQos dwqos(tqos);
sub::DataReader<RadarTrack> dr(sub, topic, drqos);
std::vector< Samples<RadarTrack> > samples(MY_MAX_LEN);
dr.read(samples.begin(), MY_MAX_LEN);
}
catch (const dds::core::Exception& e) {}
Questions?
Jaime Martin Losa
CTO eProsima
JaimeMartin@eProsima.com
+34 607 91 37 45 www.eProsima.com
Want to know more?
 www.eProsima.com
 Youtube:
https://www.youtube.com/user/eprosima
 Mail: JaimeMartin@eProsima.com
 Phone: +34 607913745
 Twitter: @jaimemartinlosa
 http://es.slideshare.net/JaimeMartin-eProsima
Thank you!
Jaime Martin Losa
CTO eProsima
JaimeMartin@eProsima.com
+34 607 91 37 45 www.eProsima.com

More Related Content

What's hot

eProsima RPC over DDS - OMG June 2013 Berlin Meeting
eProsima RPC over DDS - OMG June 2013 Berlin MeetingeProsima RPC over DDS - OMG June 2013 Berlin Meeting
eProsima RPC over DDS - OMG June 2013 Berlin Meeting
Jaime Martin Losa
 
DDS over Low Bandwidth Data Links - Connext Conf London October 2014
DDS over Low Bandwidth Data Links - Connext Conf London October 2014DDS over Low Bandwidth Data Links - Connext Conf London October 2014
DDS over Low Bandwidth Data Links - Connext Conf London October 2014
Jaime Martin Losa
 
micro-ROS - New client library and middleware features
micro-ROS - New client library and middleware featuresmicro-ROS - New client library and middleware features
micro-ROS - New client library and middleware features
eProsima
 
FIWARE Global Summit - Fast RTPS: Programming with the Default middleware for...
FIWARE Global Summit - Fast RTPS: Programming with the Default middleware for...FIWARE Global Summit - Fast RTPS: Programming with the Default middleware for...
FIWARE Global Summit - Fast RTPS: Programming with the Default middleware for...
FIWARE
 
Fast DDS Features & Tools
Fast DDS Features & ToolsFast DDS Features & Tools
Fast DDS Features & Tools
eProsima
 
micro-ROS: bringing ROS 2 to MCUs
micro-ROS: bringing ROS 2 to MCUsmicro-ROS: bringing ROS 2 to MCUs
micro-ROS: bringing ROS 2 to MCUs
eProsima
 
FIWARE Robotics: ROS2 & micro-ROS
FIWARE Robotics: ROS2 & micro-ROSFIWARE Robotics: ROS2 & micro-ROS
FIWARE Robotics: ROS2 & micro-ROS
Jaime Martin Losa
 
Micro XRCE-DDS: Bringing DDS into microcontrollers
Micro XRCE-DDS: Bringing DDS into microcontrollersMicro XRCE-DDS: Bringing DDS into microcontrollers
Micro XRCE-DDS: Bringing DDS into microcontrollers
eProsima
 
FIWARE Robotics
FIWARE RoboticsFIWARE Robotics
FIWARE Robotics
eProsima
 
2008-01-23 Red Hat Overview to CUNY Information Managers Forum
2008-01-23 Red Hat Overview to CUNY Information Managers Forum2008-01-23 Red Hat Overview to CUNY Information Managers Forum
2008-01-23 Red Hat Overview to CUNY Information Managers Forum
Shawn Wells
 
LF_DPDK17_OpenNetVM: A high-performance NFV platforms to meet future communic...
LF_DPDK17_OpenNetVM: A high-performance NFV platforms to meet future communic...LF_DPDK17_OpenNetVM: A high-performance NFV platforms to meet future communic...
LF_DPDK17_OpenNetVM: A high-performance NFV platforms to meet future communic...
LF_DPDK
 
Dpdk frame pipeline for ips ids suricata
Dpdk frame pipeline for ips ids suricataDpdk frame pipeline for ips ids suricata
Dpdk frame pipeline for ips ids suricata
Vipin Varghese
 
Poll mode driver integration into dpdk
Poll mode driver integration into dpdkPoll mode driver integration into dpdk
Poll mode driver integration into dpdk
Vipin Varghese
 
Open Middleware Technologies for Smart Robotics - a FIWARE Smart Fest present...
Open Middleware Technologies for Smart Robotics - a FIWARE Smart Fest present...Open Middleware Technologies for Smart Robotics - a FIWARE Smart Fest present...
Open Middleware Technologies for Smart Robotics - a FIWARE Smart Fest present...
eProsima
 
Micro XRCE-DDS and micro-ROS
Micro XRCE-DDS and micro-ROSMicro XRCE-DDS and micro-ROS
Micro XRCE-DDS and micro-ROS
eProsima
 
LF_DPDK17_Integrating and using DPDK with Open vSwitch
LF_DPDK17_Integrating and using DPDK with Open vSwitchLF_DPDK17_Integrating and using DPDK with Open vSwitch
LF_DPDK17_Integrating and using DPDK with Open vSwitch
LF_DPDK
 
Optimizations for ssl tls certificate lookup
Optimizations for ssl tls certificate lookupOptimizations for ssl tls certificate lookup
Optimizations for ssl tls certificate lookup
Vipin Varghese
 
LF_DPDK_Mellanox bifurcated driver model
LF_DPDK_Mellanox bifurcated driver modelLF_DPDK_Mellanox bifurcated driver model
LF_DPDK_Mellanox bifurcated driver model
LF_DPDK
 
LF_DPDK17_Accelerating Packet Processing with FPGA NICs
LF_DPDK17_Accelerating Packet Processing with FPGA NICsLF_DPDK17_Accelerating Packet Processing with FPGA NICs
LF_DPDK17_Accelerating Packet Processing with FPGA NICs
LF_DPDK
 
eProsima - Company brief
eProsima - Company briefeProsima - Company brief
eProsima - Company brief
eProsima
 

What's hot (20)

eProsima RPC over DDS - OMG June 2013 Berlin Meeting
eProsima RPC over DDS - OMG June 2013 Berlin MeetingeProsima RPC over DDS - OMG June 2013 Berlin Meeting
eProsima RPC over DDS - OMG June 2013 Berlin Meeting
 
DDS over Low Bandwidth Data Links - Connext Conf London October 2014
DDS over Low Bandwidth Data Links - Connext Conf London October 2014DDS over Low Bandwidth Data Links - Connext Conf London October 2014
DDS over Low Bandwidth Data Links - Connext Conf London October 2014
 
micro-ROS - New client library and middleware features
micro-ROS - New client library and middleware featuresmicro-ROS - New client library and middleware features
micro-ROS - New client library and middleware features
 
FIWARE Global Summit - Fast RTPS: Programming with the Default middleware for...
FIWARE Global Summit - Fast RTPS: Programming with the Default middleware for...FIWARE Global Summit - Fast RTPS: Programming with the Default middleware for...
FIWARE Global Summit - Fast RTPS: Programming with the Default middleware for...
 
Fast DDS Features & Tools
Fast DDS Features & ToolsFast DDS Features & Tools
Fast DDS Features & Tools
 
micro-ROS: bringing ROS 2 to MCUs
micro-ROS: bringing ROS 2 to MCUsmicro-ROS: bringing ROS 2 to MCUs
micro-ROS: bringing ROS 2 to MCUs
 
FIWARE Robotics: ROS2 & micro-ROS
FIWARE Robotics: ROS2 & micro-ROSFIWARE Robotics: ROS2 & micro-ROS
FIWARE Robotics: ROS2 & micro-ROS
 
Micro XRCE-DDS: Bringing DDS into microcontrollers
Micro XRCE-DDS: Bringing DDS into microcontrollersMicro XRCE-DDS: Bringing DDS into microcontrollers
Micro XRCE-DDS: Bringing DDS into microcontrollers
 
FIWARE Robotics
FIWARE RoboticsFIWARE Robotics
FIWARE Robotics
 
2008-01-23 Red Hat Overview to CUNY Information Managers Forum
2008-01-23 Red Hat Overview to CUNY Information Managers Forum2008-01-23 Red Hat Overview to CUNY Information Managers Forum
2008-01-23 Red Hat Overview to CUNY Information Managers Forum
 
LF_DPDK17_OpenNetVM: A high-performance NFV platforms to meet future communic...
LF_DPDK17_OpenNetVM: A high-performance NFV platforms to meet future communic...LF_DPDK17_OpenNetVM: A high-performance NFV platforms to meet future communic...
LF_DPDK17_OpenNetVM: A high-performance NFV platforms to meet future communic...
 
Dpdk frame pipeline for ips ids suricata
Dpdk frame pipeline for ips ids suricataDpdk frame pipeline for ips ids suricata
Dpdk frame pipeline for ips ids suricata
 
Poll mode driver integration into dpdk
Poll mode driver integration into dpdkPoll mode driver integration into dpdk
Poll mode driver integration into dpdk
 
Open Middleware Technologies for Smart Robotics - a FIWARE Smart Fest present...
Open Middleware Technologies for Smart Robotics - a FIWARE Smart Fest present...Open Middleware Technologies for Smart Robotics - a FIWARE Smart Fest present...
Open Middleware Technologies for Smart Robotics - a FIWARE Smart Fest present...
 
Micro XRCE-DDS and micro-ROS
Micro XRCE-DDS and micro-ROSMicro XRCE-DDS and micro-ROS
Micro XRCE-DDS and micro-ROS
 
LF_DPDK17_Integrating and using DPDK with Open vSwitch
LF_DPDK17_Integrating and using DPDK with Open vSwitchLF_DPDK17_Integrating and using DPDK with Open vSwitch
LF_DPDK17_Integrating and using DPDK with Open vSwitch
 
Optimizations for ssl tls certificate lookup
Optimizations for ssl tls certificate lookupOptimizations for ssl tls certificate lookup
Optimizations for ssl tls certificate lookup
 
LF_DPDK_Mellanox bifurcated driver model
LF_DPDK_Mellanox bifurcated driver modelLF_DPDK_Mellanox bifurcated driver model
LF_DPDK_Mellanox bifurcated driver model
 
LF_DPDK17_Accelerating Packet Processing with FPGA NICs
LF_DPDK17_Accelerating Packet Processing with FPGA NICsLF_DPDK17_Accelerating Packet Processing with FPGA NICs
LF_DPDK17_Accelerating Packet Processing with FPGA NICs
 
eProsima - Company brief
eProsima - Company briefeProsima - Company brief
eProsima - Company brief
 

Viewers also liked

TOP 10 TIPS FOR THRIVING IN A DOWN ECONOMY
TOP 10 TIPS FOR THRIVING IN A DOWN ECONOMYTOP 10 TIPS FOR THRIVING IN A DOWN ECONOMY
TOP 10 TIPS FOR THRIVING IN A DOWN ECONOMY
Alchemedia
 
Mi ideal vacation in london england
Mi ideal vacation in london englandMi ideal vacation in london england
Mi ideal vacation in london englandIvan Moreno
 
Autotask how to stop being a whiner 2013
Autotask how to stop being a whiner 2013Autotask how to stop being a whiner 2013
Autotask how to stop being a whiner 2013
Ronnie Parisella
 
LEADERSHIP
LEADERSHIPLEADERSHIP
LEADERSHIP
Alchemedia
 
Glosario BD
Glosario BDGlosario BD
Glosario BD
Eudocio Morales
 
Acl 2013 presentation projects kick ass
Acl 2013 presentation projects kick assAcl 2013 presentation projects kick ass
Acl 2013 presentation projects kick ass
Ronnie Parisella
 
Monsterhunter
MonsterhunterMonsterhunter
Monsterhunter
Shane Miller
 
Effective Service Delivery - Streamlining Your Workflows
Effective Service Delivery - Streamlining Your WorkflowsEffective Service Delivery - Streamlining Your Workflows
Effective Service Delivery - Streamlining Your Workflows
Ronnie Parisella
 
Libro Codelpa
Libro CodelpaLibro Codelpa
Libro Codelpa
Alvaro Pena
 

Viewers also liked (15)

TOP 10 TIPS FOR THRIVING IN A DOWN ECONOMY
TOP 10 TIPS FOR THRIVING IN A DOWN ECONOMYTOP 10 TIPS FOR THRIVING IN A DOWN ECONOMY
TOP 10 TIPS FOR THRIVING IN A DOWN ECONOMY
 
Loctite Instant-Adhesives
Loctite Instant-AdhesivesLoctite Instant-Adhesives
Loctite Instant-Adhesives
 
futue goals
 futue goals futue goals
futue goals
 
Mi ideal vacation in london england
Mi ideal vacation in london englandMi ideal vacation in london england
Mi ideal vacation in london england
 
Eliava Group/GeoAIR for GALA
Eliava Group/GeoAIR for GALAEliava Group/GeoAIR for GALA
Eliava Group/GeoAIR for GALA
 
Facture
FactureFacture
Facture
 
Music in English
Music in EnglishMusic in English
Music in English
 
Autotask how to stop being a whiner 2013
Autotask how to stop being a whiner 2013Autotask how to stop being a whiner 2013
Autotask how to stop being a whiner 2013
 
LEADERSHIP
LEADERSHIPLEADERSHIP
LEADERSHIP
 
Glosario BD
Glosario BDGlosario BD
Glosario BD
 
Acl 2013 presentation projects kick ass
Acl 2013 presentation projects kick assAcl 2013 presentation projects kick ass
Acl 2013 presentation projects kick ass
 
Monsterhunter
MonsterhunterMonsterhunter
Monsterhunter
 
Effective Service Delivery - Streamlining Your Workflows
Effective Service Delivery - Streamlining Your WorkflowsEffective Service Delivery - Streamlining Your Workflows
Effective Service Delivery - Streamlining Your Workflows
 
Libro Codelpa
Libro CodelpaLibro Codelpa
Libro Codelpa
 
Tp presentation gala
Tp presentation galaTp presentation gala
Tp presentation gala
 

Similar to Distributed Systems: How to connect your real-time applications

DDS Advanced Tutorial - OMG June 2013 Berlin Meeting
DDS Advanced Tutorial - OMG June 2013 Berlin MeetingDDS Advanced Tutorial - OMG June 2013 Berlin Meeting
DDS Advanced Tutorial - OMG June 2013 Berlin Meeting
Jaime Martin Losa
 
Real Time Java DDS
Real Time Java DDSReal Time Java DDS
Real Time Java DDSkerush
 
Fast RTPS
Fast RTPSFast RTPS
Fast RTPS
eProsima
 
Distributed Algorithms with DDS
Distributed Algorithms with DDSDistributed Algorithms with DDS
Distributed Algorithms with DDS
Angelo Corsaro
 
Cloud computing - dien toan dam may
Cloud computing - dien toan dam mayCloud computing - dien toan dam may
Cloud computing - dien toan dam mayNguyen Duong
 
MBSE meets Industrial IoT: Introducing the New MagicDraw Plug-in for RTI Co...
MBSE meets Industrial IoT: Introducing the New MagicDraw Plug-in for RTI Co...MBSE meets Industrial IoT: Introducing the New MagicDraw Plug-in for RTI Co...
MBSE meets Industrial IoT: Introducing the New MagicDraw Plug-in for RTI Co...
Istvan Rath
 
Reactive Data Centric Architectures with DDS
Reactive Data Centric Architectures with DDSReactive Data Centric Architectures with DDS
Reactive Data Centric Architectures with DDS
Angelo Corsaro
 
Introduction to DDS: Context, Information Model, Security, and Applications.
Introduction to DDS: Context, Information Model, Security, and Applications.Introduction to DDS: Context, Information Model, Security, and Applications.
Introduction to DDS: Context, Information Model, Security, and Applications.
Gerardo Pardo-Castellote
 
Data-Centric and Message-Centric System Architecture
Data-Centric and Message-Centric System ArchitectureData-Centric and Message-Centric System Architecture
Data-Centric and Message-Centric System Architecture
Rick Warren
 
Easing Integration of Large-Scale Real-Time Systems with DDS
Easing Integration of Large-Scale Real-Time Systems with DDSEasing Integration of Large-Scale Real-Time Systems with DDS
Easing Integration of Large-Scale Real-Time Systems with DDS
Rick Warren
 
MPLS/SDN 2013 Intercloud Standardization and Testbeds - Sill
MPLS/SDN 2013 Intercloud Standardization and Testbeds - SillMPLS/SDN 2013 Intercloud Standardization and Testbeds - Sill
MPLS/SDN 2013 Intercloud Standardization and Testbeds - Sill
Alan Sill
 
Working Experience_V5.0
Working Experience_V5.0Working Experience_V5.0
Working Experience_V5.0Danny Lai
 
Three Challenges in Reliable Data Transport over Heterogeneous ...
Three Challenges in Reliable Data Transport over Heterogeneous ...Three Challenges in Reliable Data Transport over Heterogeneous ...
Three Challenges in Reliable Data Transport over Heterogeneous ...Videoguy
 
Javantura v3 - Real-time BigData ingestion and querying of aggregated data – ...
Javantura v3 - Real-time BigData ingestion and querying of aggregated data – ...Javantura v3 - Real-time BigData ingestion and querying of aggregated data – ...
Javantura v3 - Real-time BigData ingestion and querying of aggregated data – ...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
Vortex Cloud Beyond Cloud Messaging
Vortex Cloud Beyond Cloud MessagingVortex Cloud Beyond Cloud Messaging
Vortex Cloud Beyond Cloud Messaging
ADLINK Technology IoT
 
Overview of the DDS-XRCE specification
Overview of the DDS-XRCE specificationOverview of the DDS-XRCE specification
Overview of the DDS-XRCE specification
Gerardo Pardo-Castellote
 
Web Services and Devices Profile for Web Services (DPWS)
Web Services and Devices Profile for Web Services (DPWS)Web Services and Devices Profile for Web Services (DPWS)
Web Services and Devices Profile for Web Services (DPWS)Jorgen Thelin
 
The Data Distribution Service
The Data Distribution ServiceThe Data Distribution Service
The Data Distribution Service
Angelo Corsaro
 
Deep Dive into the OPC UA / DDS Gateway Specification
Deep Dive into the OPC UA / DDS Gateway SpecificationDeep Dive into the OPC UA / DDS Gateway Specification
Deep Dive into the OPC UA / DDS Gateway Specification
Gerardo Pardo-Castellote
 
illustro Overview - z/IPMon Introduction
illustro Overview - z/IPMon Introductionillustro Overview - z/IPMon Introduction
illustro Overview - z/IPMon Introduction
illustro
 

Similar to Distributed Systems: How to connect your real-time applications (20)

DDS Advanced Tutorial - OMG June 2013 Berlin Meeting
DDS Advanced Tutorial - OMG June 2013 Berlin MeetingDDS Advanced Tutorial - OMG June 2013 Berlin Meeting
DDS Advanced Tutorial - OMG June 2013 Berlin Meeting
 
Real Time Java DDS
Real Time Java DDSReal Time Java DDS
Real Time Java DDS
 
Fast RTPS
Fast RTPSFast RTPS
Fast RTPS
 
Distributed Algorithms with DDS
Distributed Algorithms with DDSDistributed Algorithms with DDS
Distributed Algorithms with DDS
 
Cloud computing - dien toan dam may
Cloud computing - dien toan dam mayCloud computing - dien toan dam may
Cloud computing - dien toan dam may
 
MBSE meets Industrial IoT: Introducing the New MagicDraw Plug-in for RTI Co...
MBSE meets Industrial IoT: Introducing the New MagicDraw Plug-in for RTI Co...MBSE meets Industrial IoT: Introducing the New MagicDraw Plug-in for RTI Co...
MBSE meets Industrial IoT: Introducing the New MagicDraw Plug-in for RTI Co...
 
Reactive Data Centric Architectures with DDS
Reactive Data Centric Architectures with DDSReactive Data Centric Architectures with DDS
Reactive Data Centric Architectures with DDS
 
Introduction to DDS: Context, Information Model, Security, and Applications.
Introduction to DDS: Context, Information Model, Security, and Applications.Introduction to DDS: Context, Information Model, Security, and Applications.
Introduction to DDS: Context, Information Model, Security, and Applications.
 
Data-Centric and Message-Centric System Architecture
Data-Centric and Message-Centric System ArchitectureData-Centric and Message-Centric System Architecture
Data-Centric and Message-Centric System Architecture
 
Easing Integration of Large-Scale Real-Time Systems with DDS
Easing Integration of Large-Scale Real-Time Systems with DDSEasing Integration of Large-Scale Real-Time Systems with DDS
Easing Integration of Large-Scale Real-Time Systems with DDS
 
MPLS/SDN 2013 Intercloud Standardization and Testbeds - Sill
MPLS/SDN 2013 Intercloud Standardization and Testbeds - SillMPLS/SDN 2013 Intercloud Standardization and Testbeds - Sill
MPLS/SDN 2013 Intercloud Standardization and Testbeds - Sill
 
Working Experience_V5.0
Working Experience_V5.0Working Experience_V5.0
Working Experience_V5.0
 
Three Challenges in Reliable Data Transport over Heterogeneous ...
Three Challenges in Reliable Data Transport over Heterogeneous ...Three Challenges in Reliable Data Transport over Heterogeneous ...
Three Challenges in Reliable Data Transport over Heterogeneous ...
 
Javantura v3 - Real-time BigData ingestion and querying of aggregated data – ...
Javantura v3 - Real-time BigData ingestion and querying of aggregated data – ...Javantura v3 - Real-time BigData ingestion and querying of aggregated data – ...
Javantura v3 - Real-time BigData ingestion and querying of aggregated data – ...
 
Vortex Cloud Beyond Cloud Messaging
Vortex Cloud Beyond Cloud MessagingVortex Cloud Beyond Cloud Messaging
Vortex Cloud Beyond Cloud Messaging
 
Overview of the DDS-XRCE specification
Overview of the DDS-XRCE specificationOverview of the DDS-XRCE specification
Overview of the DDS-XRCE specification
 
Web Services and Devices Profile for Web Services (DPWS)
Web Services and Devices Profile for Web Services (DPWS)Web Services and Devices Profile for Web Services (DPWS)
Web Services and Devices Profile for Web Services (DPWS)
 
The Data Distribution Service
The Data Distribution ServiceThe Data Distribution Service
The Data Distribution Service
 
Deep Dive into the OPC UA / DDS Gateway Specification
Deep Dive into the OPC UA / DDS Gateway SpecificationDeep Dive into the OPC UA / DDS Gateway Specification
Deep Dive into the OPC UA / DDS Gateway Specification
 
illustro Overview - z/IPMon Introduction
illustro Overview - z/IPMon Introductionillustro Overview - z/IPMon Introduction
illustro Overview - z/IPMon Introduction
 

Recently uploaded

Text-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptx
Text-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptxText-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptx
Text-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptx
ShamsuddeenMuhammadA
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Globus
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
Matt Welsh
 
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteAI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
Google
 
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Globus
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
Paco van Beckhoven
 
GraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph TechnologyGraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph Technology
Neo4j
 
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
Globus
 
Understanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSageUnderstanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSage
Globus
 
Cyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdfCyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdf
Cyanic lab
 
Launch Your Streaming Platforms in Minutes
Launch Your Streaming Platforms in MinutesLaunch Your Streaming Platforms in Minutes
Launch Your Streaming Platforms in Minutes
Roshan Dwivedi
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Globus
 
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamOpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
takuyayamamoto1800
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdf
Globus
 
Pro Unity Game Development with C-sharp Book
Pro Unity Game Development with C-sharp BookPro Unity Game Development with C-sharp Book
Pro Unity Game Development with C-sharp Book
abdulrafaychaudhry
 
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdfDominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
AMB-Review
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns
 
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
rickgrimesss22
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Globus
 

Recently uploaded (20)

Text-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptx
Text-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptxText-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptx
Text-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptx
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
 
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteAI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
 
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
 
GraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph TechnologyGraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph Technology
 
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
 
Understanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSageUnderstanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSage
 
Cyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdfCyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdf
 
Launch Your Streaming Platforms in Minutes
Launch Your Streaming Platforms in MinutesLaunch Your Streaming Platforms in Minutes
Launch Your Streaming Platforms in Minutes
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
 
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamOpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdf
 
Pro Unity Game Development with C-sharp Book
Pro Unity Game Development with C-sharp BookPro Unity Game Development with C-sharp Book
Pro Unity Game Development with C-sharp Book
 
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdfDominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
 
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
 

Distributed Systems: How to connect your real-time applications

  • 1. Distributed Systems: How to connect your real-time applications UsingCPP 24/11/2016 Jaime Martin Losa CTO eProsima JaimeMartin@eProsima.com +34 607 91 37 45 www.eProsima.com
  • 2. Agenda  Introduction – DDS – Architecture – Shapes Demo  Hello World – eProsima Fast RTPS – Open Source (Apache 2.0) – RTI Connext DDS - Comercial  Modern CPP API
  • 4. Introduction: Everything is distributed  Enterprise Internet  Internet of Things  Cloud Computing  Industry 4.0  … Next-generation systems needs:  Scalability  Integration & Evolution  Robustness & Availability  Performance  Security
  • 5. “Real World” Systems are integrated using a Data Model  Grounded on the “physics” of the problem domain – Tied to the nature of the sensors and real objects in the system (vehicles, device types, …)  Provides governance across disparate teams & organizations – The “N^2” integration problem is reduced to a “N” problem  Increased decoupling from use-cases and components – Avoids over constraining applications  Open, Evolvable, Platform-Independent – The use-cases, algorithms might change between missions or versions of the system © 2010 Real-Time Innovations, Inc. Realizing this data-model requires a middleware infrastructure App AppApp
  • 6. Challenge  Everything is connected, and we should enable communication between the different nodes.  And this means: – Common protocols – Common Data Types – Known interfaces – Different QoS over different datalinks and performance requirements. – Different comunications patterns. – Broad platform and programming language support. – Good Data Models! – …
  • 7. DDS: Standards-based Integration Infrastructure for Critical Applications Streaming Data Sensors Events Real-Time Applications Enterprise Applications Actuators
  • 9. Broad Adoption  Vendor independent – API for portability – Wire protocol for interoperability  Multiple implementations – 10 of API – 8 support RTPS  Heterogeneous – C, C++, Java, .NET (C#, C++/CLI) – Linux, Windows, VxWorks, other embedded & real•time  Loosely coupled
  • 10. DDS adopted by key programs in Europe  European Air Traffic Control – DDS proposed for interoperate ATC centers  Spanish Army – DDS is mandated for C2 Interoperability (ethernet, radio & satellite)  UK Generic Vehicle Architecture – Mandates DDS for vehicle comm. – Mandates DDS-RTPS for interop.
  • 11. US-DoD mandates DDS for data-distribution  DISR (formerly JTA) – DoD Information Technology Standards Registry  US Navy Open Architecture  Army, OSD – UCS, Unmanned Vehicle Control  SPAWAR NESI – Net-centric Enterprise Solutions for Interoperability – Mandates DDS for Pub-Sub SOA
  • 12. RTPS Adoption  ROS (Robotic Operating System)  FIWARE – EU R&D Software Platform  Many Drone Companies – 3D Robotics – Magma UAVs – …
  • 14. DDS  DDS (Data Distribution Service for Real-Time Systems) is a OMG specification for a pub/sub data centric model (DCPS, Data Centric Publish/Subscribe) for Real-Time data comms in distributed systems.  DDS is a networking middleware that: – Simplifies and Standardizes data flows in distributed real-time systems. – Provides robust comms (no single point of failure) and efficient (minimum latency) – Provides all kind of QoS to shape the data flows and deliver predictable results.
  • 15. DDS DDS uses the concept of Global Data Space. In this Space we define topics of data, and the publishers publish samples of these topics. DDS distributes these samples to all the subscribers of those topics. Any node can be a publisher or a subscriber.
  • 16. Why DDS? Decoupled model  Space (location) – Automatic Discovery ensures network topology independence  Redundancy: – It is possible to configure redundant publishers and subscribers, primary/secundary and takeover schemas supported  Time: – The reception of data does not need to be synchronous with the writing. A subscriber may, if so configured, receive data that was written even before the subscriber joined the network.  Platform: – Applications do not have to worry about data representation, processor architecture, Operating System, or even programming language on the other side  Implementation: – DDS Protocol is also an standard. Different implementations interoperate.
  • 17. Why DDS? Fully configurable QoS Policy DURABILITY HISTORY READER DATA LIFECYCLE WRITER DATA LIFECYCLE LIFESPAN ENTITY FACTORY RESOURCE LIMITS RELIABILITY TIME BASED FILTER DEADLINE CONTENT FILTERS Volatility UserQoS Delivery PresentationRedundancy Infrastructure Transport QoS Policy USER DATA TOPIC DATA GROUP DATA PARTITION PRESENTATION DESTINATION ORDER OWNERSHIP OWNERSHIP STRENGTH LIVELINESS LATENCY BUDGET TRANSPORT PRIORITY
  • 18. DDS Infrastructure  Standard API for portability.  RTPS can be implemented over any transport  No central Broker/Service  Different Comm channel per topic
  • 19. Quality of Service: QoS The DDS Model Domain Participant Data Reader Node Subscriber Data Domain Subscriber Data Writer Data Writer Data Reader Data Reader Data Writer Publisher Topic Publisher Topic Topic
  • 20. Topics, Instances and Keys  Topic: A set of similar objects, sharing a common Data Type  Instance: A particular object of the set  Key: Fields of the Data Type to identify an object. Topic: RadarTrack Key: Flight ID Instance Flight ID= MAD-BER57 Instance Flight ID= PAR-BER89 Instance Flight ID= PAR-BER89 Qos Applied by Instance.
  • 21. Demo const long STR_LEN=24; struct ShapeType { string<MSG_LEN> color; //@key long x; long y; long shapesize; }; • 3 Topics: • Square, Circle, Triangle • Color is the KEY
  • 22. Questions? Jaime Martin Losa CTO eProsima JaimeMartin@eProsima.com +34 607 91 37 45 www.eProsima.com
  • 23. Fast RTPS Hands On: A Hello World
  • 24. Hands-on Example (C++) Type Definition MyType.idl fastrtpsgen MyType.h MyTypePubSubTypes.c MyTypePublisher.cxx MyTypeSubscriber.cxx MyType.sln Publisher Subscriber.exe Three minutes to a running app!! 1. Define your data 2. Create your project 3. Build 4. Run: publisher subscriber compiler
  • 25. Example #1 - Hello World We will use this data-type : const long MSG_LEN=256; struct HelloMsg { string<MSG_LEN> user; //@key string<MSG_LEN> msg; };
  • 26. Generate type support (for C++) [Windows]  Look at the directory you should see: – solution-x64Win64VS2015.sln – And Several other files…  Open the Solution:  Compile from visual studio fastrtpsgen HelloMsg.idl -example x64Win64VS2015 -replace -ppDisable
  • 27. Execute the program [Windows]  C++: – On one window run:  binx64Win64VS2015HelloMsgPublisherSubscriberd.exe publisher – On another window run:  binx64Win64VS2015HelloMsgPublisherSubscriberd.exe subscriber  You should see the subscribers getting an empty string…
  • 28. Writting some data  Modify HelloMsgPublisher.cxx: /* Main loop */ do { if(ch == 'y') { st.msg() = std::string("Hello using cpp ") + std::to_string(msgsent); mp_publisher->write(&st); ++msgsent; cout << "Sending sample, count=" << msgsent << ",send another sample?(y-yes,n-stop): "; }
  • 29. How to Get Data? (Listener-Based) // Listener code void HelloMsgSubscriber::SubListener::onNewDataMessage(Subscriber* sub) { // Take data HelloMsg st; if(sub->takeNextData(&st, &m_info)) { if(m_info.sampleKind == ALIVE) { // Print your structure data here. ++n_msg; cout << "Sample received, count=" << n_msg << endl; cout << " " << st.msg() << endl; } } }
  • 30. RTI Connext DDS Hands On: A Hello World
  • 31. Hands-on Example (C++) Type Definition MyType.idl rtiddsgen MyType.h MyTypeSupport.c MyTypePublisher.cpp MyTypeSubscriber.cpp MyType.sln Publisher.exe Subscriber.exe Three minutes to a running app!! 1. Define your data 2. Create your project 3. Build 4. Run: publisher subscriber compiler
  • 32. Example #1 - Hello World We will use this data-type : const long MSG_LEN=256; struct HelloMsg { string<MSG_LEN> user; //@key string<MSG_LEN> msg; };
  • 33. Generate type support (for C++) [Windows]  Look at the directory you should see: – HelloMsg-64-vs2010.sln – And Several other files…  Open the Solution: HelloMsgPublisher.cxx  Compile from visual studio rtiddsgen HelloMsg.idl -language C++ -example x64Win64VS2010 -replace -ppDisable
  • 34. Execute the program [Windows]  C++: – On one window run:  objsi86Win32VS2005HelloMsgPublisher.exe – On another window run:  objsi86Win32VS2005HelloMsgSubscriber.exe  Java – On one window run:  gmake –f makefile_hello_i86Win32jdk HelloMsgPublisher – On another window run:  gmake –f makefile_hello_i86Win32jdk HelloMsgSubscriber  You should see the subscribers getting an empty string…
  • 35. Writting some data  Modify HelloMsg_publisher.cxx: /* Main loop */ for (count=0; (sample_count == 0) || (count < sample_count); ++count) { printf("Writing HelloMsg, count %dn", count); /* Modify the data to be sent here */ sprintf(instance->user,"%s","eProsima"); sprintf(instance->msg,"Writing HelloMsg, user eProsima, count %d",count); retcode = HelloMsg_writer->write(*instance, instance_handle);
  • 36. Writting some data (performance tip)  Modify HelloMsg_publisher.cxx: /* For a data type that has a key, if the same instance is going to be written multiple times, initialize the key here and register the keyed instance prior to writing */ sprintf(instance->user,"%s","eProsima"); instance_handle = HelloMsg_writer->register_instance(*instance); /* Main loop */ for (count=0; (sample_count == 0) || (count < sample_count); ++count) { printf("Writing HelloMsg, count %dn", count); /* Modify the data to be sent here */ sprintf(instance->msg,"Writing HelloMsg, user eProsima, count %d",count); retcode = HelloMsg_writer->write(*instance, instance_handle);
  • 37. Example: Publication // Entities creation DomainParticipant participant = TheParticipantFactory->create_participant( domain_id, participant_qos, participant_listener); Publisher publisher = domain->create_publisher( publisher_qos, publisher_listener); Topic topic = domain->create_topic( "MyTopic", "MyType", topic_qos, topic_listener); DataWriter writer = publisher->create_datawriter( topic, writer_qos, writer_listener); MyTypeDataWriter twriter = MyTypeDataWriter::narrow(writer); MyType my_instance; twriter->write(my_instance);
  • 38. Example: Subscription // Entities creation Subscriber subscriber = domain->create_subscriber( subscriber_qos, subscriber_listener); Topic topic = domain->create_topic( "MyTopic", "MyType", topic_qos, topic_listener); DataReader reader = subscriber->create_datareader( topic, reader_qos, reader_listener); // Use listener-based or wait-based access
  • 39. How to Get Data? (Listener-Based) // Listener code MyListener::on_data_available( DataReader reader ) { MyTypeSeq received_data; SampleInfoSeq sample_info; MyTypeDataReader treader = TextDataReader::narrow(reader); treader->take( &received_data, &sample_info, …) // Use received_data printf("Got: %sn", received_data[0]->contents); }
  • 40. DDS Modern CPP UsingCPP Conference 23/11/2016 Jaime Martin Losa CTO eProsima JaimeMartin@eProsima.com +34 607 91 37 45 www.eProsima.com
  • 41. Modern CPP DDS API  OMG Spec: – ISO/IEC C++ 2003 Language DDS PSM  C++03 with support for some C++11 features
  • 42. Example Modern CPP: DataWriter try {// ================== DataWriter =================== DomainId id = 0; DomainParticipant dp(id); pub::qos::PublisherQos pqos; pqos << policy::Partition("Tracks"); pub::Publisher pub(dp, pqos); topic::qos::TopicQos tqos; tqos << policy::Reliability::Reliable() << policy::Durability::Transient() << policy::History::KeepLast(10) << policy::TransportPriority(14); dds::topic::Topic<RadarTrack> topic(dp, "TrackTopic", tqos); pub::qos::DataWriterQos dwqos(tqos); pub::DataWriter<RadarTrack> dw(pub, topic, dwqos); RadarTrack track("alpha", 100, 200); dw.write(track); // or dw << track; } catch (const dds::core::Exception& e) {}
  • 43. Example Modern CPP: DataReader try {// ================== DataReader=================== DomainId id = 0; DomainParticipant dp(id); sub::qos::SubscriberQos sqos; sqos << policy::Partition("Tracks"); sub::Subscriber sub(dp, sqos); topic::qos::TopicQos tqos = dp.default_topic_qos(); tqos << policy::Reliability::Reliable() << policy::Durability::Transient() << policy::History::KeepLast(10) << policy::TransportPriority(14); dds::topic::Topic<RadarTrack> topic(dp, "TrackTopic", tqos); sub::qos::DataReaderQos dwqos(tqos); sub::DataReader<RadarTrack> dr(sub, topic, drqos); std::vector< Samples<RadarTrack> > samples(MY_MAX_LEN); dr.read(samples.begin(), MY_MAX_LEN); } catch (const dds::core::Exception& e) {}
  • 44. Questions? Jaime Martin Losa CTO eProsima JaimeMartin@eProsima.com +34 607 91 37 45 www.eProsima.com
  • 45. Want to know more?  www.eProsima.com  Youtube: https://www.youtube.com/user/eprosima  Mail: JaimeMartin@eProsima.com  Phone: +34 607913745  Twitter: @jaimemartinlosa  http://es.slideshare.net/JaimeMartin-eProsima
  • 46. Thank you! Jaime Martin Losa CTO eProsima JaimeMartin@eProsima.com +34 607 91 37 45 www.eProsima.com