SlideShare a Scribd company logo
Angelo	
  Corsaro,	
  PhD	
  
Chief	
  Technology	
  Officer	
  
angelo.corsaro@prismtech.com
Vortex Tutorial
Part I
CopyrightPrismTech,2014
Vortex enables seamless,
ubiquitous, efficient and
timely data sharing across
mobile, embedded, desktop,
cloud and web applications
Vortex is based on the OMG
DDS standard
The Vortex Platform
Vortex Device
Tools
Integration
Vortex Cloud
MaaS
CopyrightPrismTech,2014
Vortex Architecture
Security Model
CopyrightPrismTech,2014
Support for transport level
security via TLS and DTLS
Support for fine grained
access control
Access control plug-in
compliant with DDS Security
Vortex Security Model
Arthur Dent
Arthur Dent
Ford Prerfect
Zaphod Beeblebrox
Marvin
Trillian
A(r,w), B(r)
A(r,w), B(r,w), X(r)
*(r,w)
*(r)
A(r,w), B(r,w), C(r,w)
Ford Prerfect
Zaphod Beeblebrox
Trillian
Marvin
A
B
A,B
X
*
*
A,B,C
Identity Access Rights
Sessions are authenticated
and communication is
encrypted
Only the Topic included as
part of the access rights are
visible and accessible
Use Cases
CopyrightPrismTech,2014
Smart Grids
Analytics
Big	
  Data	
  Store
CopyrightPrismTech,2014
E-Health
Hospital A Private Cloud
Analytics
Big	
  Data	
  Store
Hospital B
CopyrightPrismTech,2014
Smart City
http://bit.ly/connected-boulevard
CopyrightPrismTech,2014
SESAR
PENS
PENS: Pan European Network Service
FDP: Flight Data Processor
CWP: Controller Working Position
IPv6 network SSM support
FDP
FDPFDP
CWP
Tower
Device
FDP
FDPFDP Tower
Device
CWP
FDP
FDPFDP Tower
Device
CWP
FDP
FDPFDP
CWP
Tower
Device
EU Nation 4
EU Nation 1
EU Nation 2
EU Nation 3
Building ChirpIt
CopyrightPrismTech,2014
To explore the various features provided by the Vortex platform we will be designing and
implementing a micro-blogging platform called ChirpIt. Specifically, we want to support the
following features:
ChirpIt users should be able to “chirp”, “re-chirp”, “like” and “dislike” trills as well as get
detailed statistics
The ChirpIt platform should provide information on trending topics — identified by hashtags —
as well as trending users
Third party services should be able to flexibly access slices of produced trills to perform their
own trend analysis
ChirpIt should scale to millions of users
ChirpIt should be based on a Lambda Architecture
ChirpIt Requirements
CopyrightPrismTech,2014
ChirpIt Architecture
analytics
data centre
chirp
emotions
stats
batch	
  	
  
layer
chirpit	
  apps
Cloud Messaging
serving	
  	
  
layer
chirp
emotions
stats
master	
  
dataset
view view view
chirp
emotions
stats
3rd	
  party	
  svcs
Speed	
  	
  
layer
The Data Distribution
Service
CopyrightPrismTech,2014
DDS provides a Global Data Space
abstraction that allows applications
to autonomously, anonymously,
securely and efficiently share data
DDS’ Global Data Space is fully
distributed (decentralised), highly
efficient and scalable
Data Distribution Service (DDS)
DDS Global Data Space
...
Data
Writer
Data
Writer
Data
Writer
Data
Reader
Data
Reader
Data
Reader
Data
Reader
Data
Writer
TopicA
QoS
TopicB
QoS
TopicC
QoS
TopicD
QoS
CopyrightPrismTech,2014
DataWriters and DataReaders are
automatically and dynamically
matched by the DDS Discovery
A rich set of QoS allows to control
existential, temporal, and spatial
properties of data
Data Distribution Service (DDS)
DDS Global Data Space
...
Data
Writer
Data
Writer
Data
Writer
Data
Reader
Data
Reader
Data
Reader
Data
Reader
Data
Writer
TopicA
QoS
TopicB
QoS
TopicC
QoS
TopicD
QoS
CopyrightPrismTech,2014
Elegant and High Level Data Sharing Abstraction
Polyglot and platform independent
• Java, Scala, C, C++, C#, JavaScript, CoffeeScript etc.
• Android, Windows, Linux, VxWorks, etc.
Peer-to-Peer by nature, Brokered when useful
Key Highlights
CopyrightPrismTech,2014
Content and Temporal Filtering (both sender and receiver filtering supported)
Queries
20+ QoS to control existential, temporal, and spatial properties of data
Key Highlights
CopyrightPrismTech,2014
High Performance and Scalable
• ~30 usec latency*
• 7M msgs/sec node-to-node throughput*
Key Highlights
(*) Performance measured on Linux Host with i7 processor on a 1Gbps Ethernet network
Decomposing DDS
Information
Organisation
CopyrightPrismTech,2014
DDS data lives within a domain
A domain is identified with a non
negative integer, such as 1, 3, 31
The number 0 identifies the default
domain
A domain represent an impassable
communication plane
Domain
DDS Domain
CopyrightPrismTech,2014
Partitions are the mechanism provided by DDS to organise information within a
domain
Access to partitions is controlled through QoS Policies
Partitions are defined as strings:
- “system:telemetry”
- “system:log”
- “data:row-2:col-3”
Partitions addressed by name or regular expressions:
- ”system:telemetry”
- “data:row-2:col-*”
Partitions
Partitions
Information Definition
CopyrightPrismTech,2014
A Topic defines a domain-wide information’s class
A Topic is defined by means of a (name, type, qos)
tuple, where
• name: identifies the topic within the domain
• type: is the programming language type
associated with the topic. Types are
extensible and evolvable
• qos: is a collection of policies that express
the non-functional properties of this topic,
e.g. reliability, persistence, etc.
Topic
Topic
Type
Name
QoS
...
TopicA
QoS
TopicB
QoS
TopicC
QoS
TopicD
QoS
CopyrightPrismTech,2014
As explained in the previous slide a topic defines a class/type of information
Topics can be defined as Singleton or can have multiple Instances
Topic Instances are identified by means of the topic key
A Topic Key is identified by a tuple of attributes -- like in databases
Remarks:
- A Singleton topic has a single domain-wide instance
- A “regular” Topic can have as many instances as the number of different key
values, e.g., if the key is an 8-bit character then the topic can have 256 different
instances
Topic and Instances
ChirpIt Data Model
CopyrightPrismTech,2014
Chirp Actions
	
  	
  	
  union	
  ChirpBody	
  switch	
  (ChirpActionKind)	
  {	
  
	
  	
  	
  	
  case	
  CHIRP_KIND:	
  
	
  	
  	
  	
  	
  	
  string<128>	
  chirp;	
  
	
  	
  	
  	
  case	
  RECHIRP_KIND:	
  
	
  	
  	
  	
  	
  	
  string<128>	
  chirp;	
  
	
  	
  	
  	
  	
  	
  string	
  user;	
  
	
  	
  	
  	
  case	
  LIKE_KIND:	
  
	
  	
  	
  	
  	
  	
  string	
  luser;	
  
	
  	
  	
  	
  case	
  DISLIKE_KIND:	
  
	
  	
  	
  	
  	
  	
  string	
  duser;	
  
	
  	
  	
  	
  };	
  
!
	
  	
  	
  	
  	
  
	
  	
  	
  	
  struct	
  ChirpAction	
  {	
  
	
  	
  	
  	
  	
  	
  ChirpHeader	
  header;	
  
	
  	
  	
  	
  	
  	
  ChirpBody	
  	
  	
  body;	
  
	
  	
  	
  	
  };	
  
	
  	
  	
  	
  #pragma	
  keylist	
  ChirpAction	
  header.id.cid	
  
	
  
	
  	
  	
  struct	
  ChirpId	
  {	
  
	
  	
  	
  	
  	
  	
  string	
  uid;	
  
	
  	
  	
  	
  	
  	
  string	
  cid;	
  
	
  	
  	
  	
  };	
  
!
	
  	
  	
  	
  enum	
  ChirpActionKind	
  {	
  
	
  	
  	
  	
  	
  	
  CHIRP_KIND,	
  RECHIRP_KIND,	
  	
  
	
  	
  	
  	
  	
  	
  LIKE_KIND,	
  DISLIKE_KIND	
  
	
  	
  	
  	
  };	
  
	
  	
  	
  	
  	
  
	
  	
  	
  	
  struct	
  ChirpHeader	
  {	
  
	
  	
  	
  	
  	
  	
  ChirpId	
  id;	
  
	
  	
  	
  	
  	
  	
  Location	
  location;	
  
	
  	
  	
  	
  	
  	
  unsigned	
  long	
  long	
  timestamp;	
  
	
  	
  	
  	
  	
  	
  ChirpActionKind	
  kind;	
  
	
  	
  	
  	
  };	
  
	
  	
  	
  	
  	
  
CopyrightPrismTech,2014
ChirpIt Statistics
	
  	
  	
  	
  struct	
  ChirpStats	
  {	
  
	
  	
  	
  	
  	
  	
  ChirpId	
  id;	
  
	
  	
  	
  	
  	
  	
  unsigned	
  long	
  rechirps;	
  
	
  	
  	
  	
  	
  	
  unsigned	
  long	
  likes;	
  
	
  	
  	
  	
  };	
  
	
  	
  	
  	
  #pragma	
  keylist	
  ChirpStats	
  id.cid	
  
	
  	
  	
  	
  struct	
  UserStats	
  {	
  
	
  	
  	
  	
  	
  	
  string	
  userId;	
  
	
  	
  	
  	
  	
  	
  unsigned	
  long	
  followers;	
  
	
  	
  	
  	
  	
  	
  unsigned	
  long	
  chirps;	
  
	
  	
  	
  	
  	
  	
  unsigned	
  long	
  followed;	
  
	
  	
  	
  	
  };	
  
	
  	
  	
  	
  #pragma	
  keylist	
  UserStats	
  userId	
  
CopyrightPrismTech,2014
User Actions
	
  	
  	
  	
  struct	
  enum	
  UserActionKind	
  {	
  
	
  	
  	
  	
  	
  	
  FOLLOW,	
  UNFOLLOW	
  
	
  	
  	
  	
  };	
  
	
  	
  	
  	
  	
  
	
  	
  	
  	
  struct	
  UserAction	
  {	
  
	
  	
  	
  	
  	
  	
  UserActionKind	
  kind;	
  
	
  	
  	
  	
  	
  	
  string	
  fromUser;	
  
	
  	
  	
  	
  	
  	
  string	
  toUser;	
  
	
  	
  	
  	
  };	
  
CopyrightPrismTech,2014
App Config
	
  	
  	
  	
  typedef	
  sequence<string>	
  Partitions;	
  
!
	
  	
  	
  	
  struct	
  AppConfig	
  {	
  
	
  	
  	
  	
  	
  	
  string	
  userId;	
  
	
  	
  	
  	
  	
  	
  Partitions	
  ps;	
  
	
  	
  	
  	
  	
  	
  unsigned	
  short	
  history;	
  
	
  	
  	
  	
  };	
  	
  	
  
	
  	
  	
  	
  #pragma	
  keylist	
  UserConfig	
  userId	
  
ChirpIt Information
Scoping
CopyrightPrismTech,2014
To make the system scale properly we need to ensure that the chirps, rechirps,
etc., are distributed only to the interested parties
As we have a single topic representing chirp actions, how can we ensure that
information is received only by followers?
DDS Provides two mechanisms:
- Partitions: Allow to create information scopes
- Content Filters: Allow to receive the data that satisfy certains predicates
Scoping Information
CopyrightPrismTech,2014
ChirpIt Architecture
ChirpAction
@wolverine
@drx
chirp:wolverine
ChirpAction
@drx	
  follows	
  @wolverine
CopyrightPrismTech,2014
@drx
ChirpAction
ChirpIt Architecture
data centre
ChirpAction
@wolverine
chirp:wolverine
ChirpAction
@magneto
chirp:magneto
@drx	
  follows	
  @wolverine	
  and	
  @magneto
CopyrightPrismTech,2014
In summary partitions are used to scope information
Each user will “join” a partition for each followed party
Example:
- If @drx follows @magneto, @wolverine, @cyclops and @mistique then he will
receive ChirpActions from the partitions:
• chirp:@magneto, chirp:@wolverine, chirp:@cyclops and chirp:@mistique
- On the other hand, regardless of the people that follows @wolverine he will always
and only write ChirpActions in the partitions
• chirp:@wolverine
Using Partitions to Scope Chirps
Producing Information
CopyrightPrismTech,2014
A DataWriter (DW) is a strongly typed entity used
to produce samples for one or more instances of
a Topic, with a given QoS
Conceptually, the DataWriter QoS should be the
same as the Topic QoS or more stringent
However, DDS does enforce a specific relationship
between the Topic and DataWriter QoS
DataWriter
DW
Type
Topic
QoS
CopyrightPrismTech,2014
The DataWriter controls the life-cycle of Topic
Instances and allows to:
Define a new topic instance
Write samples for a topic instance
Dispose the topic instance
DataWriter
DW
Type
Topic
QoS
Consuming Information
CopyrightPrismTech,2014
A DataReader (DR) is a strongly typed entity used to
access and/or consume samples for a Topic, with a
given QoS
Conceptually, the DataReader QoS should be the
same as the Topic QoS or less stringent
However, DDS does enforce a specific relationship
between the Topic and DataReader QoS
DataReader
DR
Type
Topic
QoS
Putting all Together
CopyrightPrismTech,2014
DomainParticipant: Provides access to a data cloud -- called a domain in DDS
Topic: Domain-wide definition of a kind of Information
Publisher/Subscriber: Provide scope to data sharing through the concept of partitions
DataReader/DataWriter: Allow to read/write data for a given topic in the partitions their Subscriber/Publisher are associated with.
DDS Entities
Domain (e.g. Domain 123)
Domain
Participant
Topic
Publisher
DataWrter
Subscriber
DataReader
Partition (e.g. “Telemetry”, “Shapes”, )
Topic Instances/Samples
Ta
Tb
Tc
Tx
Ty
T1
T1 T3
ChirpIt Implementation
— Chirping —
CopyrightPrismTech,2014
ChirpOut App
	
  	
  	
  	
  	
  	
  //	
  Domain	
  Participant	
  defined	
  by	
  dependency	
  injection	
  
	
  	
  	
  	
  	
  	
  	
  
	
  	
  	
  	
  	
  	
  //	
  Define	
  the	
  topic	
  
	
  	
  	
  	
  	
  	
  val	
  topic	
  =	
  Topic[ChirpAction](Config.ChirpActionTopic)	
  
	
  	
  	
  	
  	
  	
  //	
  Define	
  the	
  publisher	
  and	
  link-­‐it	
  up	
  to	
  the	
  “chirp:@user”	
  partition	
  
	
  	
  	
  	
  	
  	
  val	
  pubQos	
  =	
  PublisherQos()	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  .withPolicy(Partition(Config.ChirpRootPartition	
  +	
  user))	
  
	
  	
  	
  	
  	
  	
  implicit	
  val	
  pub	
  =	
  Publisher(pubQos)	
  
	
  	
  	
  	
  	
  	
  //	
  Define	
  the	
  data	
  writer	
  and	
  make	
  it	
  reliable	
  and	
  for	
  the	
  time	
  being	
  
	
  	
  	
  	
  	
  	
  //	
  Transient	
  Local…	
  Will	
  refined	
  this	
  in	
  the	
  Part	
  II	
  
	
  	
  	
  	
  	
  	
  val	
  dwQos	
  =	
  DataWriterQos().withPolicies(	
  
	
  	
  	
  	
  	
  	
  	
  	
  Reliability.Reliable,	
  
	
  	
  	
  	
  	
  	
  	
  	
  Durability.TransientLocal)	
  
	
  	
  	
  	
  	
  	
  //	
  Create	
  the	
  DataWriter	
  
	
  	
  	
  	
  	
  	
  val	
  dw	
  =	
  DataWriter[ChirpAction](pub,	
  topic,	
  dwQos)	
  
	
  	
  	
  	
  	
  	
  //	
  Chirp!!!	
  
	
  	
  	
  	
  	
  	
  val	
  chirp	
  =	
  …	
  
	
  	
  	
  	
  	
  	
  dw.write(chirp)
CopyrightPrismTech,2014
ChirpIn
	
  	
  	
  	
  	
  	
  //	
  Domain	
  Participant	
  defined	
  by	
  dependency	
  injection	
  
	
  	
  	
  	
  	
  	
  	
  
	
  	
  	
  	
  	
  	
  //	
  Define	
  the	
  topic	
  
	
  	
  	
  	
  	
  	
  val	
  topic	
  =	
  Topic[ChirpAction](Config.ChirpActionTopic)	
  
	
  	
  	
  	
  	
  	
  //	
  Define	
  the	
  subscribe	
  and	
  link-­‐it	
  up	
  to	
  the	
  partition	
  associated	
  to	
  
	
  	
  	
  	
  	
  	
  //	
  the	
  user	
  followed	
  
	
  	
  	
  	
  	
  	
  val	
  subQos	
  =	
  PublisherQos()	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  .withPolicy(Partition(followerList.map(Config.ChirpRootPartition	
  +	
  _))	
  
	
  	
  	
  	
  	
  	
  implicit	
  val	
  sub	
  =	
  Subscriber(subQos)	
  
	
  	
  	
  	
  	
  	
  //	
  Define	
  the	
  data	
  reader	
  and	
  make	
  it	
  reliable	
  and	
  for	
  the	
  time	
  being	
  
	
  	
  	
  	
  	
  	
  //	
  Transient	
  Local…	
  Will	
  refined	
  this	
  in	
  the	
  Part	
  II	
  
	
  	
  	
  	
  	
  	
  val	
  drQos	
  =	
  DataReaderQos().withPolicies(	
  
	
  	
  	
  	
  	
  	
  	
  	
  Reliability.Reliable,	
  
	
  	
  	
  	
  	
  	
  	
  	
  Durability.TransientLocal)	
  
	
  	
  	
  	
  	
  	
  //	
  Create	
  the	
  DataWriter	
  
	
  	
  	
  	
  	
  	
  val	
  dr	
  =	
  DataReader[ChirpAction](sub,	
  topic,	
  drQos)	
  
CopyrightPrismTech,2014
ChirpIn
//	
  React	
  to	
  new	
  Chirp	
  
dr	
  listen	
  {	
  
	
  	
  	
  case	
  DataAvailable(_)	
  =>	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  //	
  take	
  vs.	
  read	
  will	
  become	
  clear	
  in	
  Part	
  II	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  val	
  samples	
  =	
  dr.take()	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  //	
  For	
  the	
  time	
  being	
  simply	
  print-­‐out	
  the	
  new	
  chirps	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  samples	
  
	
   	
   	
   .filter(s	
  =>	
  (s.getData	
  !=	
  null))	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  .foreach(s	
  =>	
  displayChirp)	
  
	
  	
  	
  	
  	
  	
  	
  	
  }	
  	
  
}
CopyrightPrismTech,2014
ChirpOut App
// Define the topic — assuming the topic is registered with the server…!
topic = new dds.Topic(0, 'Chirp', ‘com.ChirpIt’)!
// Define the data writer Qos!
dwQos = new dds.DataWriterQos(!
dds.Reliability.Reliable, !
dds.Durability.TranslientLocal,!
dds.Partition(userPartition))!
!
// Use an Option monad to maintain the writer!
chirpWriter = z_.None!
!
// Create the writer when the runtime is connected!
runtime.onconnect(() ->!
dw = new dds.DataWriter(runtime, topic, dwQos)!
chirpWriter = z_.Some(dw)!
)!
!
// …!
// Write chirps!
chirp = …!
chirpWriter.map((dw) -> dw.write(chirp))!
CopyrightPrismTech,2014
ChirpIn App
// Define the topic — assuming the topic is registered with the server…!
topic = new dds.Topic(0, 'Chirp', ‘com.ChirpIt’)!
// Define the data reader Qos!
drQos = new dds.DataWriterQos(!
dds.Reliability.Reliable, !
dds.Durability.TranslientLocal,!
dds.Partition(followedList))!
!
// Use an Option monad to maintain the reader!
chirpReader = z_.None!
!
// Create the writer when the runtime is connected!
runtime.onconnect(() ->!
dr = new dds.DataReader(runtime, topic, dwQos)!
// Attach a listener!
dr.addListener((chirp) -> diplayChirp(chirp))!
chirpReader = z_.Some(dr)!
)
CopyrightPrismTech,2014
ChirpIt Thus Far…
data centre
chirp
emotions
stats
chirp
emotions
stats
chirp
emotions
stats
chirp
emotions
stats
Live Demo
CopyrightPrismTech,2014
$ ./chirpOut @wolverin
chirp>> @magneto will win!$ ./chirpOut @magneto
@magneto>> @wolverine chirping while asleep… again!
Download the package zip or tar.gz package available at:
- https://dl.dropboxusercontent.com/u/19238968/webcast/2014/10/chirpit.zip
- https://dl.dropboxusercontent.com/u/19238968/webcast/2014/10/chirpit.tar.gz
Extract the package somewhere in your file-system and open a terminal at that
location and run the app as shown below
ChirpIt Demo
$ ./chirpIn @magneto @wolverinse @mystique
@wolverin>> @magneto will win!
@magneto>> @wolverine chirping while asleep… again!
CopyrightPrismTech,2014
In Part II we extend our implementation to manage application configuration
storage and analytics
To do so, we will need to introduce additional features provided by the DDS and
the Vortex Platform, such as Durability and Integration with Big-Data Stores
What’s Next
CopyrightPrismTech,2014
In this presentation we have performed the first step toward implementing a
micro-blogging platform
The combination of Vortex Device and Vortex Cloud made it very easy to create
and deploy our Internet-Scale, multi-device micro-blogging platform
Some of the DDS QoS, such as Durability have already shown how historical
data, i.e. chirps made while we were offline — can be provided by the platform
The Part II will illustrate how the complete application fits together and what is
the role of Vortex in the Lambda Architecture
Summary
CopyrightPrismTech,2014
Online Resources

More Related Content

What's hot

RSA and RC4 Cryptosystem Performance Evaluation Using Image and Text
RSA and RC4 Cryptosystem Performance Evaluation Using Image and TextRSA and RC4 Cryptosystem Performance Evaluation Using Image and Text
RSA and RC4 Cryptosystem Performance Evaluation Using Image and Text
Yekini Nureni
 
Implementation of-hybrid-cryptography-algorithm
Implementation of-hybrid-cryptography-algorithmImplementation of-hybrid-cryptography-algorithm
Implementation of-hybrid-cryptography-algorithm
Ijcem Journal
 
Object Striping In Swift_OpenStack HongKong Summit 2013_v2.2
Object Striping In Swift_OpenStack HongKong Summit 2013_v2.2Object Striping In Swift_OpenStack HongKong Summit 2013_v2.2
Object Striping In Swift_OpenStack HongKong Summit 2013_v2.2
Shriram Pore
 
Master thesis 14023164
Master thesis 14023164Master thesis 14023164
Master thesis 14023164
Thivya Devaraj
 
iaetsd Secured multiple keyword ranked search over encrypted databases
iaetsd Secured multiple keyword ranked search over encrypted databasesiaetsd Secured multiple keyword ranked search over encrypted databases
iaetsd Secured multiple keyword ranked search over encrypted databases
Iaetsd Iaetsd
 

What's hot (17)

Building and Scaling Internet of Things Applications with Vortex Cloud
Building and Scaling Internet of Things Applications with Vortex CloudBuilding and Scaling Internet of Things Applications with Vortex Cloud
Building and Scaling Internet of Things Applications with Vortex Cloud
 
Microservices Architecture with Vortex — Part II
Microservices Architecture with Vortex — Part IIMicroservices Architecture with Vortex — Part II
Microservices Architecture with Vortex — Part II
 
zenoh: zero overhead pub/sub store/query compute
zenoh: zero overhead pub/sub store/query computezenoh: zero overhead pub/sub store/query compute
zenoh: zero overhead pub/sub store/query compute
 
Ciphertext policy Attribute based Encryption with anonymous access policy
Ciphertext policy Attribute based Encryption with anonymous access policy Ciphertext policy Attribute based Encryption with anonymous access policy
Ciphertext policy Attribute based Encryption with anonymous access policy
 
DDS-XRCE (Extremely Resource Constrained Environments)
DDS-XRCE (Extremely Resource Constrained Environments)DDS-XRCE (Extremely Resource Constrained Environments)
DDS-XRCE (Extremely Resource Constrained Environments)
 
Nwc rsa
Nwc rsaNwc rsa
Nwc rsa
 
RSA and RC4 Cryptosystem Performance Evaluation Using Image and Text
RSA and RC4 Cryptosystem Performance Evaluation Using Image and TextRSA and RC4 Cryptosystem Performance Evaluation Using Image and Text
RSA and RC4 Cryptosystem Performance Evaluation Using Image and Text
 
Access control in decentralized online social networks applying a policy hidi...
Access control in decentralized online social networks applying a policy hidi...Access control in decentralized online social networks applying a policy hidi...
Access control in decentralized online social networks applying a policy hidi...
 
Implementation of-hybrid-cryptography-algorithm
Implementation of-hybrid-cryptography-algorithmImplementation of-hybrid-cryptography-algorithm
Implementation of-hybrid-cryptography-algorithm
 
A Review on Various Most Common Symmetric Encryptions Algorithms
A Review on Various Most Common Symmetric Encryptions AlgorithmsA Review on Various Most Common Symmetric Encryptions Algorithms
A Review on Various Most Common Symmetric Encryptions Algorithms
 
SECURE CLOUD STORAGE USING DENIABLE ATTRIBUTE BASED ENCRYPTION
SECURE CLOUD STORAGE USING DENIABLE ATTRIBUTE BASED ENCRYPTIONSECURE CLOUD STORAGE USING DENIABLE ATTRIBUTE BASED ENCRYPTION
SECURE CLOUD STORAGE USING DENIABLE ATTRIBUTE BASED ENCRYPTION
 
A comparative study of symmetric key algorithm des, aes and blowfish for vide...
A comparative study of symmetric key algorithm des, aes and blowfish for vide...A comparative study of symmetric key algorithm des, aes and blowfish for vide...
A comparative study of symmetric key algorithm des, aes and blowfish for vide...
 
Listening at the Cocktail Party with Deep Neural Networks and TensorFlow
Listening at the Cocktail Party with Deep Neural Networks and TensorFlowListening at the Cocktail Party with Deep Neural Networks and TensorFlow
Listening at the Cocktail Party with Deep Neural Networks and TensorFlow
 
Object Striping In Swift_OpenStack HongKong Summit 2013_v2.2
Object Striping In Swift_OpenStack HongKong Summit 2013_v2.2Object Striping In Swift_OpenStack HongKong Summit 2013_v2.2
Object Striping In Swift_OpenStack HongKong Summit 2013_v2.2
 
Master thesis 14023164
Master thesis 14023164Master thesis 14023164
Master thesis 14023164
 
iaetsd Secured multiple keyword ranked search over encrypted databases
iaetsd Secured multiple keyword ranked search over encrypted databasesiaetsd Secured multiple keyword ranked search over encrypted databases
iaetsd Secured multiple keyword ranked search over encrypted databases
 
Sharing Secured Scalable Data in Cloud Environment Using Key Aggregate Crypto...
Sharing Secured Scalable Data in Cloud Environment Using Key Aggregate Crypto...Sharing Secured Scalable Data in Cloud Environment Using Key Aggregate Crypto...
Sharing Secured Scalable Data in Cloud Environment Using Key Aggregate Crypto...
 

Viewers also liked

Aeg upute za rad
Aeg upute za radAeg upute za rad
Aeg upute za rad
arizan888
 
Témoignage : Yannis ANT
Témoignage : Yannis ANTTémoignage : Yannis ANT
Témoignage : Yannis ANT
Carole Bredard
 
Sub Saharan Africa Vocab GEN
Sub Saharan Africa Vocab GENSub Saharan Africa Vocab GEN
Sub Saharan Africa Vocab GEN
ordovensky
 
Redes Sociais - Sou mais Web - julho/2009
Redes Sociais - Sou mais Web - julho/2009Redes Sociais - Sou mais Web - julho/2009
Redes Sociais - Sou mais Web - julho/2009
Camila Leite
 
Ningbo Focus 2011
Ningbo Focus 2011Ningbo Focus 2011
Ningbo Focus 2011
Helge1967
 

Viewers also liked (20)

Villanueva descendants
Villanueva   descendantsVillanueva   descendants
Villanueva descendants
 
Aeg upute za rad
Aeg upute za radAeg upute za rad
Aeg upute za rad
 
Témoignage : Yannis ANT
Témoignage : Yannis ANTTémoignage : Yannis ANT
Témoignage : Yannis ANT
 
Top 25 Toxic VA Air Zips.2015.b
Top 25 Toxic VA Air Zips.2015.bTop 25 Toxic VA Air Zips.2015.b
Top 25 Toxic VA Air Zips.2015.b
 
Éco actu n°19
Éco actu n°19Éco actu n°19
Éco actu n°19
 
Estadísticas ICCA 2002-2011
Estadísticas ICCA 2002-2011Estadísticas ICCA 2002-2011
Estadísticas ICCA 2002-2011
 
Asegure el cumplimiento de Normativas Regulatorias, Evite Errores Costosos y ...
Asegure el cumplimiento de Normativas Regulatorias, Evite Errores Costosos y ...Asegure el cumplimiento de Normativas Regulatorias, Evite Errores Costosos y ...
Asegure el cumplimiento de Normativas Regulatorias, Evite Errores Costosos y ...
 
Flv01 feb2009
Flv01 feb2009Flv01 feb2009
Flv01 feb2009
 
Sub Saharan Africa Vocab GEN
Sub Saharan Africa Vocab GENSub Saharan Africa Vocab GEN
Sub Saharan Africa Vocab GEN
 
Interoute 2013
Interoute 2013Interoute 2013
Interoute 2013
 
Creating the Hickstead Statue
Creating the Hickstead StatueCreating the Hickstead Statue
Creating the Hickstead Statue
 
Вестник Союза франчайзинга
Вестник Союза франчайзингаВестник Союза франчайзинга
Вестник Союза франчайзинга
 
Pavillon France @SLUSH 2015
Pavillon France @SLUSH 2015Pavillon France @SLUSH 2015
Pavillon France @SLUSH 2015
 
Redes Sociais - Sou mais Web - julho/2009
Redes Sociais - Sou mais Web - julho/2009Redes Sociais - Sou mais Web - julho/2009
Redes Sociais - Sou mais Web - julho/2009
 
Foncier économique et locaux d’activités dans le Pays de Lorient. Évolution 2...
Foncier économique et locaux d’activités dans le Pays de Lorient. Évolution 2...Foncier économique et locaux d’activités dans le Pays de Lorient. Évolution 2...
Foncier économique et locaux d’activités dans le Pays de Lorient. Évolution 2...
 
Ningbo Focus 2011
Ningbo Focus 2011Ningbo Focus 2011
Ningbo Focus 2011
 
0809023
08090230809023
0809023
 
Asus eee-pc-1101 ha-netbook-manual
Asus eee-pc-1101 ha-netbook-manualAsus eee-pc-1101 ha-netbook-manual
Asus eee-pc-1101 ha-netbook-manual
 
igus® : Câbles Chainflex®
igus® : Câbles Chainflex®  igus® : Câbles Chainflex®
igus® : Câbles Chainflex®
 
CASE Network Report 66 - Prospects for EU-Ukraine Economic Relations
CASE Network Report 66 - Prospects for EU-Ukraine Economic RelationsCASE Network Report 66 - Prospects for EU-Ukraine Economic Relations
CASE Network Report 66 - Prospects for EU-Ukraine Economic Relations
 

Similar to PrismTech Vortex Tutorial Part 1

Real Time Java DDS
Real Time Java DDSReal Time Java DDS
Real Time Java DDS
kerush
 
PinTrace Advanced AWS meetup
PinTrace Advanced AWS meetup PinTrace Advanced AWS meetup
PinTrace Advanced AWS meetup
Suman Karumuri
 

Similar to PrismTech Vortex Tutorial Part 1 (20)

DDS: The IoT Data Sharing Standard
DDS: The IoT Data Sharing StandardDDS: The IoT Data Sharing Standard
DDS: The IoT Data Sharing Standard
 
Reactive Data Centric Architectures with DDS
Reactive Data Centric Architectures with DDSReactive Data Centric Architectures with DDS
Reactive Data Centric Architectures with DDS
 
Vortex Tutorial Part II
Vortex Tutorial Part IIVortex Tutorial Part II
Vortex Tutorial Part II
 
Architecting IoT Systems with Vortex
Architecting IoT Systems with VortexArchitecting IoT Systems with Vortex
Architecting IoT Systems with Vortex
 
Distributed Systems: How to connect your real-time applications
Distributed Systems: How to connect your real-time applicationsDistributed Systems: How to connect your real-time applications
Distributed Systems: How to connect your real-time applications
 
Real Time Java DDS
Real Time Java DDSReal Time Java DDS
Real Time Java DDS
 
Distributed Algorithms with DDS
Distributed Algorithms with DDSDistributed Algorithms with DDS
Distributed Algorithms with DDS
 
Fiware - communicating with ROS robots using Fast RTPS
Fiware - communicating with ROS robots using Fast RTPSFiware - communicating with ROS robots using Fast RTPS
Fiware - communicating with ROS robots using Fast RTPS
 
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
 
Fog Computing with VORTEX
Fog Computing with VORTEXFog Computing with VORTEX
Fog Computing with VORTEX
 
Fiware: Connecting to robots
Fiware: Connecting to robotsFiware: Connecting to robots
Fiware: Connecting to robots
 
Building IoT Applications with Vortex and the Intel Edison Starter Kit
Building IoT Applications with Vortex and the Intel Edison Starter KitBuilding IoT Applications with Vortex and the Intel Edison Starter Kit
Building IoT Applications with Vortex and the Intel Edison Starter Kit
 
Fast RTPS Workshop at FIWARE Summit 2018
Fast RTPS Workshop at FIWARE Summit 2018Fast RTPS Workshop at FIWARE Summit 2018
Fast RTPS Workshop at FIWARE Summit 2018
 
OpenSplice DDS Tutorial -- Part II
OpenSplice DDS Tutorial -- Part IIOpenSplice DDS Tutorial -- Part II
OpenSplice DDS Tutorial -- Part II
 
IRJET- A Key-Policy Attribute based Temporary Keyword Search Scheme for S...
IRJET-  	  A Key-Policy Attribute based Temporary Keyword Search Scheme for S...IRJET-  	  A Key-Policy Attribute based Temporary Keyword Search Scheme for S...
IRJET- A Key-Policy Attribute based Temporary Keyword Search Scheme for S...
 
Desktop, Embedded and Mobile Apps with Vortex Café
Desktop, Embedded and Mobile Apps with Vortex CaféDesktop, Embedded and Mobile Apps with Vortex Café
Desktop, Embedded and Mobile Apps with Vortex Café
 
Desktop, Embedded and Mobile Apps with PrismTech Vortex Cafe
Desktop, Embedded and Mobile Apps with PrismTech Vortex CafeDesktop, Embedded and Mobile Apps with PrismTech Vortex Cafe
Desktop, Embedded and Mobile Apps with PrismTech Vortex Cafe
 
The Data Distribution Service Tutorial
The Data Distribution Service TutorialThe Data Distribution Service Tutorial
The Data Distribution Service Tutorial
 
Vortex Cloud Beyond Cloud Messaging
Vortex Cloud Beyond Cloud MessagingVortex Cloud Beyond Cloud Messaging
Vortex Cloud Beyond Cloud Messaging
 
PinTrace Advanced AWS meetup
PinTrace Advanced AWS meetup PinTrace Advanced AWS meetup
PinTrace Advanced AWS meetup
 

More from ADLINK Technology IoT

Building and Scaling Internet of Things Applications with Vortex Cloud
Building and Scaling Internet of Things Applications with Vortex CloudBuilding and Scaling Internet of Things Applications with Vortex Cloud
Building and Scaling Internet of Things Applications with Vortex Cloud
ADLINK Technology IoT
 
Spectra DTP4700 Linux Based Development for Software Defined Radio (SDR) Soft...
Spectra DTP4700 Linux Based Development for Software Defined Radio (SDR) Soft...Spectra DTP4700 Linux Based Development for Software Defined Radio (SDR) Soft...
Spectra DTP4700 Linux Based Development for Software Defined Radio (SDR) Soft...
ADLINK Technology IoT
 

More from ADLINK Technology IoT (20)

Connected Mobile and Web Applications with PrismTech Vortex Data Sharing Plat...
Connected Mobile and Web Applications with PrismTech Vortex Data Sharing Plat...Connected Mobile and Web Applications with PrismTech Vortex Data Sharing Plat...
Connected Mobile and Web Applications with PrismTech Vortex Data Sharing Plat...
 
Introducing Vortex Lite
Introducing Vortex LiteIntroducing Vortex Lite
Introducing Vortex Lite
 
Harnessing DDS in Next Generation Healthcare Systems
Harnessing DDS in Next Generation Healthcare SystemsHarnessing DDS in Next Generation Healthcare Systems
Harnessing DDS in Next Generation Healthcare Systems
 
Building and Scaling Internet of Things Applications with Vortex Cloud
Building and Scaling Internet of Things Applications with Vortex CloudBuilding and Scaling Internet of Things Applications with Vortex Cloud
Building and Scaling Internet of Things Applications with Vortex Cloud
 
Real-Time Web Programming with PrismTech Vortex Web
Real-Time Web Programming with PrismTech Vortex WebReal-Time Web Programming with PrismTech Vortex Web
Real-Time Web Programming with PrismTech Vortex Web
 
Introduction to PrismTech's Vortex Intelligent Data Sharing Platform for the ...
Introduction to PrismTech's Vortex Intelligent Data Sharing Platform for the ...Introduction to PrismTech's Vortex Intelligent Data Sharing Platform for the ...
Introduction to PrismTech's Vortex Intelligent Data Sharing Platform for the ...
 
PrismTech Integrated Communications Systems Modeling
PrismTech Integrated Communications Systems ModelingPrismTech Integrated Communications Systems Modeling
PrismTech Integrated Communications Systems Modeling
 
PrismTech Reflective Language for Communication Systems
PrismTech Reflective Language for Communication SystemsPrismTech Reflective Language for Communication Systems
PrismTech Reflective Language for Communication Systems
 
Model_Driven_Development_SDR
Model_Driven_Development_SDRModel_Driven_Development_SDR
Model_Driven_Development_SDR
 
SCA_4_adoption_may2013
SCA_4_adoption_may2013SCA_4_adoption_may2013
SCA_4_adoption_may2013
 
Using Model Driven Development to Easily Manage Variations in Software Define...
Using Model Driven Development to Easily Manage Variations in Software Define...Using Model Driven Development to Easily Manage Variations in Software Define...
Using Model Driven Development to Easily Manage Variations in Software Define...
 
Sca 4 0 _may16_2012_final
Sca 4 0 _may16_2012_finalSca 4 0 _may16_2012_final
Sca 4 0 _may16_2012_final
 
Spectra dtp4700h march2012_final
Spectra dtp4700h march2012_finalSpectra dtp4700h march2012_final
Spectra dtp4700h march2012_final
 
Spectra CX 3.4 Launch Webcast
Spectra CX 3.4 Launch WebcastSpectra CX 3.4 Launch Webcast
Spectra CX 3.4 Launch Webcast
 
Spectra DTP4700 Linux Based Development for Software Defined Radio (SDR) Soft...
Spectra DTP4700 Linux Based Development for Software Defined Radio (SDR) Soft...Spectra DTP4700 Linux Based Development for Software Defined Radio (SDR) Soft...
Spectra DTP4700 Linux Based Development for Software Defined Radio (SDR) Soft...
 
Migrating Legacy Waveforms to the Software Communications Architecture (SCA)
Migrating Legacy Waveforms to the Software Communications Architecture (SCA)Migrating Legacy Waveforms to the Software Communications Architecture (SCA)
Migrating Legacy Waveforms to the Software Communications Architecture (SCA)
 
Rapid Software Communications Architecture (SCA) Development for DSPs with Sp...
Rapid Software Communications Architecture (SCA) Development for DSPs with Sp...Rapid Software Communications Architecture (SCA) Development for DSPs with Sp...
Rapid Software Communications Architecture (SCA) Development for DSPs with Sp...
 
Spectra IP Core ORB - high-performance, low-latency solution for FPGA-GPP com...
Spectra IP Core ORB - high-performance, low-latency solution for FPGA-GPP com...Spectra IP Core ORB - high-performance, low-latency solution for FPGA-GPP com...
Spectra IP Core ORB - high-performance, low-latency solution for FPGA-GPP com...
 
Automating Software Communications Architecture (SCA) Testing with Spectra CX
Automating Software Communications Architecture (SCA) Testing with Spectra CXAutomating Software Communications Architecture (SCA) Testing with Spectra CX
Automating Software Communications Architecture (SCA) Testing with Spectra CX
 
SCA Next Part 1 - Software Defined Radio (SDR) Webcast Slides
SCA Next Part 1 - Software Defined Radio (SDR) Webcast SlidesSCA Next Part 1 - Software Defined Radio (SDR) Webcast Slides
SCA Next Part 1 - Software Defined Radio (SDR) Webcast Slides
 

Recently uploaded

AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
Alluxio, Inc.
 

Recently uploaded (20)

A Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdfA Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdf
 
SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBrokerSOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBroker
 
Corporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMSCorporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMS
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
 
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...
 
Studiovity film pre-production and screenwriting software
Studiovity film pre-production and screenwriting softwareStudiovity film pre-production and screenwriting software
Studiovity film pre-production and screenwriting software
 
AI/ML Infra Meetup | Reducing Prefill for LLM Serving in RAG
AI/ML Infra Meetup | Reducing Prefill for LLM Serving in RAGAI/ML Infra Meetup | Reducing Prefill for LLM Serving in RAG
AI/ML Infra Meetup | Reducing Prefill for LLM Serving in RAG
 
Designing for Privacy in Amazon Web Services
Designing for Privacy in Amazon Web ServicesDesigning for Privacy in Amazon Web Services
Designing for Privacy in Amazon Web Services
 
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
 
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
 
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
 
Using IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New ZealandUsing IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New Zealand
 
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.ILBeyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
 
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?
 
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...
 
How Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptxHow Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptx
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
 
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
 
2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx
 

PrismTech Vortex Tutorial Part 1

  • 1. Angelo  Corsaro,  PhD   Chief  Technology  Officer   angelo.corsaro@prismtech.com Vortex Tutorial Part I
  • 2. CopyrightPrismTech,2014 Vortex enables seamless, ubiquitous, efficient and timely data sharing across mobile, embedded, desktop, cloud and web applications Vortex is based on the OMG DDS standard The Vortex Platform Vortex Device Tools Integration Vortex Cloud MaaS
  • 5. CopyrightPrismTech,2014 Support for transport level security via TLS and DTLS Support for fine grained access control Access control plug-in compliant with DDS Security Vortex Security Model Arthur Dent Arthur Dent Ford Prerfect Zaphod Beeblebrox Marvin Trillian A(r,w), B(r) A(r,w), B(r,w), X(r) *(r,w) *(r) A(r,w), B(r,w), C(r,w) Ford Prerfect Zaphod Beeblebrox Trillian Marvin A B A,B X * * A,B,C Identity Access Rights Sessions are authenticated and communication is encrypted Only the Topic included as part of the access rights are visible and accessible
  • 8. CopyrightPrismTech,2014 E-Health Hospital A Private Cloud Analytics Big  Data  Store Hospital B
  • 10. CopyrightPrismTech,2014 SESAR PENS PENS: Pan European Network Service FDP: Flight Data Processor CWP: Controller Working Position IPv6 network SSM support FDP FDPFDP CWP Tower Device FDP FDPFDP Tower Device CWP FDP FDPFDP Tower Device CWP FDP FDPFDP CWP Tower Device EU Nation 4 EU Nation 1 EU Nation 2 EU Nation 3
  • 12. CopyrightPrismTech,2014 To explore the various features provided by the Vortex platform we will be designing and implementing a micro-blogging platform called ChirpIt. Specifically, we want to support the following features: ChirpIt users should be able to “chirp”, “re-chirp”, “like” and “dislike” trills as well as get detailed statistics The ChirpIt platform should provide information on trending topics — identified by hashtags — as well as trending users Third party services should be able to flexibly access slices of produced trills to perform their own trend analysis ChirpIt should scale to millions of users ChirpIt should be based on a Lambda Architecture ChirpIt Requirements
  • 13. CopyrightPrismTech,2014 ChirpIt Architecture analytics data centre chirp emotions stats batch     layer chirpit  apps Cloud Messaging serving     layer chirp emotions stats master   dataset view view view chirp emotions stats 3rd  party  svcs Speed     layer
  • 15. CopyrightPrismTech,2014 DDS provides a Global Data Space abstraction that allows applications to autonomously, anonymously, securely and efficiently share data DDS’ Global Data Space is fully distributed (decentralised), highly efficient and scalable Data Distribution Service (DDS) DDS Global Data Space ... Data Writer Data Writer Data Writer Data Reader Data Reader Data Reader Data Reader Data Writer TopicA QoS TopicB QoS TopicC QoS TopicD QoS
  • 16. CopyrightPrismTech,2014 DataWriters and DataReaders are automatically and dynamically matched by the DDS Discovery A rich set of QoS allows to control existential, temporal, and spatial properties of data Data Distribution Service (DDS) DDS Global Data Space ... Data Writer Data Writer Data Writer Data Reader Data Reader Data Reader Data Reader Data Writer TopicA QoS TopicB QoS TopicC QoS TopicD QoS
  • 17. CopyrightPrismTech,2014 Elegant and High Level Data Sharing Abstraction Polyglot and platform independent • Java, Scala, C, C++, C#, JavaScript, CoffeeScript etc. • Android, Windows, Linux, VxWorks, etc. Peer-to-Peer by nature, Brokered when useful Key Highlights
  • 18. CopyrightPrismTech,2014 Content and Temporal Filtering (both sender and receiver filtering supported) Queries 20+ QoS to control existential, temporal, and spatial properties of data Key Highlights
  • 19. CopyrightPrismTech,2014 High Performance and Scalable • ~30 usec latency* • 7M msgs/sec node-to-node throughput* Key Highlights (*) Performance measured on Linux Host with i7 processor on a 1Gbps Ethernet network
  • 22. CopyrightPrismTech,2014 DDS data lives within a domain A domain is identified with a non negative integer, such as 1, 3, 31 The number 0 identifies the default domain A domain represent an impassable communication plane Domain DDS Domain
  • 23. CopyrightPrismTech,2014 Partitions are the mechanism provided by DDS to organise information within a domain Access to partitions is controlled through QoS Policies Partitions are defined as strings: - “system:telemetry” - “system:log” - “data:row-2:col-3” Partitions addressed by name or regular expressions: - ”system:telemetry” - “data:row-2:col-*” Partitions Partitions
  • 25. CopyrightPrismTech,2014 A Topic defines a domain-wide information’s class A Topic is defined by means of a (name, type, qos) tuple, where • name: identifies the topic within the domain • type: is the programming language type associated with the topic. Types are extensible and evolvable • qos: is a collection of policies that express the non-functional properties of this topic, e.g. reliability, persistence, etc. Topic Topic Type Name QoS ... TopicA QoS TopicB QoS TopicC QoS TopicD QoS
  • 26. CopyrightPrismTech,2014 As explained in the previous slide a topic defines a class/type of information Topics can be defined as Singleton or can have multiple Instances Topic Instances are identified by means of the topic key A Topic Key is identified by a tuple of attributes -- like in databases Remarks: - A Singleton topic has a single domain-wide instance - A “regular” Topic can have as many instances as the number of different key values, e.g., if the key is an 8-bit character then the topic can have 256 different instances Topic and Instances
  • 28. CopyrightPrismTech,2014 Chirp Actions      union  ChirpBody  switch  (ChirpActionKind)  {          case  CHIRP_KIND:              string<128>  chirp;          case  RECHIRP_KIND:              string<128>  chirp;              string  user;          case  LIKE_KIND:              string  luser;          case  DISLIKE_KIND:              string  duser;          };   !                  struct  ChirpAction  {              ChirpHeader  header;              ChirpBody      body;          };          #pragma  keylist  ChirpAction  header.id.cid          struct  ChirpId  {              string  uid;              string  cid;          };   !        enum  ChirpActionKind  {              CHIRP_KIND,  RECHIRP_KIND,                LIKE_KIND,  DISLIKE_KIND          };                    struct  ChirpHeader  {              ChirpId  id;              Location  location;              unsigned  long  long  timestamp;              ChirpActionKind  kind;          };            
  • 29. CopyrightPrismTech,2014 ChirpIt Statistics        struct  ChirpStats  {              ChirpId  id;              unsigned  long  rechirps;              unsigned  long  likes;          };          #pragma  keylist  ChirpStats  id.cid          struct  UserStats  {              string  userId;              unsigned  long  followers;              unsigned  long  chirps;              unsigned  long  followed;          };          #pragma  keylist  UserStats  userId  
  • 30. CopyrightPrismTech,2014 User Actions        struct  enum  UserActionKind  {              FOLLOW,  UNFOLLOW          };                    struct  UserAction  {              UserActionKind  kind;              string  fromUser;              string  toUser;          };  
  • 31. CopyrightPrismTech,2014 App Config        typedef  sequence<string>  Partitions;   !        struct  AppConfig  {              string  userId;              Partitions  ps;              unsigned  short  history;          };              #pragma  keylist  UserConfig  userId  
  • 33. CopyrightPrismTech,2014 To make the system scale properly we need to ensure that the chirps, rechirps, etc., are distributed only to the interested parties As we have a single topic representing chirp actions, how can we ensure that information is received only by followers? DDS Provides two mechanisms: - Partitions: Allow to create information scopes - Content Filters: Allow to receive the data that satisfy certains predicates Scoping Information
  • 36. CopyrightPrismTech,2014 In summary partitions are used to scope information Each user will “join” a partition for each followed party Example: - If @drx follows @magneto, @wolverine, @cyclops and @mistique then he will receive ChirpActions from the partitions: • chirp:@magneto, chirp:@wolverine, chirp:@cyclops and chirp:@mistique - On the other hand, regardless of the people that follows @wolverine he will always and only write ChirpActions in the partitions • chirp:@wolverine Using Partitions to Scope Chirps
  • 38. CopyrightPrismTech,2014 A DataWriter (DW) is a strongly typed entity used to produce samples for one or more instances of a Topic, with a given QoS Conceptually, the DataWriter QoS should be the same as the Topic QoS or more stringent However, DDS does enforce a specific relationship between the Topic and DataWriter QoS DataWriter DW Type Topic QoS
  • 39. CopyrightPrismTech,2014 The DataWriter controls the life-cycle of Topic Instances and allows to: Define a new topic instance Write samples for a topic instance Dispose the topic instance DataWriter DW Type Topic QoS
  • 41. CopyrightPrismTech,2014 A DataReader (DR) is a strongly typed entity used to access and/or consume samples for a Topic, with a given QoS Conceptually, the DataReader QoS should be the same as the Topic QoS or less stringent However, DDS does enforce a specific relationship between the Topic and DataReader QoS DataReader DR Type Topic QoS
  • 43. CopyrightPrismTech,2014 DomainParticipant: Provides access to a data cloud -- called a domain in DDS Topic: Domain-wide definition of a kind of Information Publisher/Subscriber: Provide scope to data sharing through the concept of partitions DataReader/DataWriter: Allow to read/write data for a given topic in the partitions their Subscriber/Publisher are associated with. DDS Entities Domain (e.g. Domain 123) Domain Participant Topic Publisher DataWrter Subscriber DataReader Partition (e.g. “Telemetry”, “Shapes”, ) Topic Instances/Samples Ta Tb Tc Tx Ty T1 T1 T3
  • 45. CopyrightPrismTech,2014 ChirpOut App            //  Domain  Participant  defined  by  dependency  injection                            //  Define  the  topic              val  topic  =  Topic[ChirpAction](Config.ChirpActionTopic)              //  Define  the  publisher  and  link-­‐it  up  to  the  “chirp:@user”  partition              val  pubQos  =  PublisherQos()                        .withPolicy(Partition(Config.ChirpRootPartition  +  user))              implicit  val  pub  =  Publisher(pubQos)              //  Define  the  data  writer  and  make  it  reliable  and  for  the  time  being              //  Transient  Local…  Will  refined  this  in  the  Part  II              val  dwQos  =  DataWriterQos().withPolicies(                  Reliability.Reliable,                  Durability.TransientLocal)              //  Create  the  DataWriter              val  dw  =  DataWriter[ChirpAction](pub,  topic,  dwQos)              //  Chirp!!!              val  chirp  =  …              dw.write(chirp)
  • 46. CopyrightPrismTech,2014 ChirpIn            //  Domain  Participant  defined  by  dependency  injection                            //  Define  the  topic              val  topic  =  Topic[ChirpAction](Config.ChirpActionTopic)              //  Define  the  subscribe  and  link-­‐it  up  to  the  partition  associated  to              //  the  user  followed              val  subQos  =  PublisherQos()                        .withPolicy(Partition(followerList.map(Config.ChirpRootPartition  +  _))              implicit  val  sub  =  Subscriber(subQos)              //  Define  the  data  reader  and  make  it  reliable  and  for  the  time  being              //  Transient  Local…  Will  refined  this  in  the  Part  II              val  drQos  =  DataReaderQos().withPolicies(                  Reliability.Reliable,                  Durability.TransientLocal)              //  Create  the  DataWriter              val  dr  =  DataReader[ChirpAction](sub,  topic,  drQos)  
  • 47. CopyrightPrismTech,2014 ChirpIn //  React  to  new  Chirp   dr  listen  {        case  DataAvailable(_)  =>  {                      //  take  vs.  read  will  become  clear  in  Part  II                      val  samples  =  dr.take()                    //  For  the  time  being  simply  print-­‐out  the  new  chirps                      samples         .filter(s  =>  (s.getData  !=  null))                        .foreach(s  =>  displayChirp)                  }     }
  • 48. CopyrightPrismTech,2014 ChirpOut App // Define the topic — assuming the topic is registered with the server…! topic = new dds.Topic(0, 'Chirp', ‘com.ChirpIt’)! // Define the data writer Qos! dwQos = new dds.DataWriterQos(! dds.Reliability.Reliable, ! dds.Durability.TranslientLocal,! dds.Partition(userPartition))! ! // Use an Option monad to maintain the writer! chirpWriter = z_.None! ! // Create the writer when the runtime is connected! runtime.onconnect(() ->! dw = new dds.DataWriter(runtime, topic, dwQos)! chirpWriter = z_.Some(dw)! )! ! // …! // Write chirps! chirp = …! chirpWriter.map((dw) -> dw.write(chirp))!
  • 49. CopyrightPrismTech,2014 ChirpIn App // Define the topic — assuming the topic is registered with the server…! topic = new dds.Topic(0, 'Chirp', ‘com.ChirpIt’)! // Define the data reader Qos! drQos = new dds.DataWriterQos(! dds.Reliability.Reliable, ! dds.Durability.TranslientLocal,! dds.Partition(followedList))! ! // Use an Option monad to maintain the reader! chirpReader = z_.None! ! // Create the writer when the runtime is connected! runtime.onconnect(() ->! dr = new dds.DataReader(runtime, topic, dwQos)! // Attach a listener! dr.addListener((chirp) -> diplayChirp(chirp))! chirpReader = z_.Some(dr)! )
  • 50. CopyrightPrismTech,2014 ChirpIt Thus Far… data centre chirp emotions stats chirp emotions stats chirp emotions stats chirp emotions stats
  • 52. CopyrightPrismTech,2014 $ ./chirpOut @wolverin chirp>> @magneto will win!$ ./chirpOut @magneto @magneto>> @wolverine chirping while asleep… again! Download the package zip or tar.gz package available at: - https://dl.dropboxusercontent.com/u/19238968/webcast/2014/10/chirpit.zip - https://dl.dropboxusercontent.com/u/19238968/webcast/2014/10/chirpit.tar.gz Extract the package somewhere in your file-system and open a terminal at that location and run the app as shown below ChirpIt Demo $ ./chirpIn @magneto @wolverinse @mystique @wolverin>> @magneto will win! @magneto>> @wolverine chirping while asleep… again!
  • 53. CopyrightPrismTech,2014 In Part II we extend our implementation to manage application configuration storage and analytics To do so, we will need to introduce additional features provided by the DDS and the Vortex Platform, such as Durability and Integration with Big-Data Stores What’s Next
  • 54. CopyrightPrismTech,2014 In this presentation we have performed the first step toward implementing a micro-blogging platform The combination of Vortex Device and Vortex Cloud made it very easy to create and deploy our Internet-Scale, multi-device micro-blogging platform Some of the DDS QoS, such as Durability have already shown how historical data, i.e. chirps made while we were offline — can be provided by the platform The Part II will illustrate how the complete application fits together and what is the role of Vortex in the Lambda Architecture Summary