SlideShare uma empresa Scribd logo
1 de 73
Baixar para ler offline
Angelo	
  Corsaro,	
  PhD	
  
Chief	
  Technology	
  Officer	
  
angelo.corsaro@prismtech.com
Reactive Data Centric
Architectures with Vortex, Spark
and ReactiveX
Getting Reactive
CopyrightPrismTech,2015
Up to recently Reactive Systems were mainstream only domains such as
Industrial, Military, Telco, Finance and Aerospace
To address the challenges imposed by the Internet of Thing and Big Data
Applications an increasing number of architects and developers is recognising
the importance of the techniques and technologies used for building Reactive
Systems
The Raising Importance of being Reactive
CopyrightPrismTech,2015
The techniques and technologies
traditionally used in a class of
Reactive and Interactive Systems
is gaining quite a bit of attention
from the mainstream developers
community
Recently, the Reactive Manifesto
was defined to summarise the
key traits of “Reactive
Applications”
Reactive Manifesto
Responsive
Scalable
Event-Driven Resilient
http://www.reactivemanifesto.org/
CopyrightPrismTech,2015
Event-Driven: modular,
asynchronous
Responsive: Timely react to stimuli
Resilient: Tolerate failures
functionally and ideally temporally
Scalable: Gracefully scale up and
down depending on load demands
Reactive Manifesto
Responsive
Scalable
Event-Driven Resilient
http://www.reactivemanifesto.org/
Getting Data Centric
CopyrightPrismTech,2015
The prevailing application-/service-centric mindset by focusing on the control-
flow as opposed than the data-flow has lead to design systems that are hard to
extend, scale and make fault-tolerant
An increasing number of architects has realised that the remedy is to change the
main point of attention: Data is the centre of the universe — applications are
ephemeral
The Importance of being Data-Centric
CopyrightPrismTech,2015
Data-Centric Manifesto
http://datacentricmanifesto.org
the data-centric revolution puts data at the
centre of the system
applications are optional visitors to the data
CopyrightPrismTech,2015
Control-Flow-Centric Lightbulb
Example
Lightbulb
- status(): bool
- on():
- off():
- intensity(): float
- intensity(i):
CopyrightPrismTech,2015
Data-Flow-Centric Lightbulb
Example
Lightbulb
- intensity: float
- on: bool
Reactive and Data Centric
Architectures
CopyrightPrismTech,2015
Data-Centric: data is what matters.
Application autonomously and
asynchronously transform data
Responsive: Timely react to stimuli
Resilient: Tolerate failures
functionally and ideally temporally
Scalable: Gracefully scale up and
down depending on load demands
Reactive Data-Centric Manifesto
Responsive
Scalable
Data-Centric Resilient
http://www.reactivemanifesto.org/
Reactive Data-Centric
Systems with Vortex
Step 1:
Data Centricity in Vortex
CopyrightPrismTech,2015
Vortex provides a Distributed Data
Space abstraction where applications
can autonomously and
asynchronously read and write data
enjoying spatial and temporal
decoupling
Its built-in dynamic discovery isolates
applications from network topology
and connectivity details
Vortex’ Data Space is completely
decentralised
High Level Abstraction
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,2015
Vortex supports the definition of Data
Models.
These data models allow to naturally
represent physical and virtual entities
characterising the application
domain
Vortex types are extensible and
evolvable, thus allowing incremental
updates and upgrades
Data Centricity
CopyrightPrismTech,2015
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
struct	
  TemperatureSensor	
  {	
  
	
  	
  	
  @key	
  
	
  	
  	
  long	
  sid;	
  
	
  	
  	
  float	
  temp;	
  
	
  	
  	
  float	
  hum;	
  
}	
  
	
  
CopyrightPrismTech,2015
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
CopyrightPrismTech,2015
Vortex “knows” about
application data types
and uses this
information provide
type-safety and content-
based routing
Content Awareness
struct	
  TemperatureSensor	
  {	
  
	
  	
  	
  @key	
  
	
  	
  	
  long	
  sid;	
  
	
  	
  	
  float	
  temp;	
  
	
  	
  	
  float	
  hum;	
  
}	
  
	
  
sid temp hum
101 25.3 0.6
507 33.2 0.7
913 27,5 0.55
1307 26.2 0.67
“temp	
  >	
  25	
  OR	
  hum	
  >=	
  0.6”
sid temp hum
101 25.3 0.6
507 33.2 0.7
1307 26.2 0.67
Type
TempSensor
CopyrightPrismTech,2015
For data to flow from a DataWriter (DW) to
one or many DataReader (DR) a few
conditions have to apply:
The DR and DW domain participants have
to be in the same domain
The partition expression of the DR’s
Subscriber and the DW’s Publisher should
match (in terms of regular expression
match)
The QoS Policies offered by the DW should
exceed or match those requested by the DR
Quality of Service
Domain
Participant
DURABILITY
OWENERSHIP
DEADLINE
LATENCY BUDGET
LIVELINESS
RELIABILITY
DEST. ORDER
Publisher
DataWriter
PARTITION
DataReader
Subscriber
Domain
Participant
offered
QoS
Topic
writes reads
Domain Id
joins joins
produces-in consumes-from
RxO QoS Policies
requested
QoS
Step 2:
Reactive Architectures with Vortex
CopyrightPrismTech,2015
Reactive Systems1
A Reactive System designates a permanently operating system that responds,
reacts, to external stimuli at a speed determined by its environment, e.g. an
industrial control system.
Reactive Systems
[1] Nicolas Halbwachs, Synchronous Programming of Reactive Systems
CopyrightPrismTech,2015
Transformational Systems
A Transformational System designates a system that terminates after
transforming its input into its output, e.g. a compiler
Transformational Systems
CopyrightPrismTech,2015
Interactive Systems
An Interactive System designates a systems that permanently communicates
with its environment at its own speed, e.g. a computer game
Interactive Systems
CopyrightPrismTech,2015
Reactive
react to an environment which
“cannot wait”, e.g. reacting late has
harsh consequences
response time needs to be
deterministic
distributed concurrent systems
data-centric
Reactive vs. Interactive Systems
The term reactive systems is increasingly used to denote interactive systems with stringent
response time, performance and scalability constraints.
Interactive
react to an environment which
“doesn’t like to wait”, e.g. reacting
late induces QoS degradation
response time needs to be acceptable
distributed concurrent systems
data-centric
CopyrightPrismTech,2015
Concurrency
Aside from the concurrency between the system and its environment, it is natural to decompose
these systems as an ensemble of concurrent components that cooperate to achieve the intended
behaviour
Strict Temporal Requirements
Reactive Systems have strict requirements with respect to the rate at which the need to process
input as well as the response time for their outputs
Determinism
The output of these systems are generally determined by the input and the occurrence time, e.g. no
scheduling effects on the temporal properties of the output
Reliability
Reactive Systems are often life/mission critical, as such reliability is of utmost importance
Reactive Systems Key Traits
Architectural Styles for
Reactive Systems
CopyrightPrismTech,2015
Stream Processing is a commonly adopted architectural style for building
systems that operate over continuous (theoretically infinite) streams of data
Stream Processing is often applied in:
- Reactive Systems
- Interactive Systems
- Signal Processing Systems
- Functional Stream Programming
- Big Data Analytics
Stream Processing
CopyrightPrismTech,2015
Stream Processing Architectures are ideal for
modelling systems that react to streams of data
produced by the cyber-phisical-systems, such as
data produced by sensors, the stock market, etc.
Stream Processing Systems operate in real-time
over streams and generate in turns other
streams of data providing information on what
is happening or suggesting actions to perform,
such as by stock X, raise alarm Y, or detected
spatial violation, etc.
Stream Processing
CopyrightPrismTech,2015
Stream Processing Systems are typically modelled as collection of concurrent modules
communicating via typed data channels
Modules usually play one of the following roles:
- Sources: Injecting data into the System
- Filters/Actors: Performing some computation over sources
- Sinks: Consuming the data produced by the system
Stream Processing
Filter
Source
Filter
Filter
Stream Sink
Stream Processing with
Vortex
CopyrightPrismTech,2015
A stream represents a potentially infinite sequence of data samples of a given
type T
As such, in Vortex, a stream can be naturally represented with a Topic
Example:
- Topic<PressureType>
- Topic<MarketData>
Streams in Vortex
Filter
Filter
Filter
Stream
CopyrightPrismTech,2015
Sources in Vortex are mapped to
DataWriters for a given Topic
Sinks in Vortex are mapped to DataReaders
for a given Topic
Source and Sinks in Vortex
Filter
Source
Filter
Filter
Sink
CopyrightPrismTech,2015
Filters implement bit and pieces of the
application business logic
Each Filter has one or more input stream and one
or more output streams
Obviously, a Filter consumes data from an input
stream through a Vortex data reader and pushed
data into an output stream through a Vortex data
writer
Filters in Vortex
Filter
Filter
Filter
Vortex Architectural
Benefits
CopyrightPrismTech,2015
Stream Processing Architectures in general and Vortex-based architecture in
particular promote loose coupling
Anonymous Communication => No Spatial Coupling
Non-Blocking and Asynchronous Interaction => No control or temporal
coupling
In Vortex the only thing that matters is the kind of information a module is
interested in consuming or producing — who is producing the data or when the
data has been produced is not relevant
Loose Coupling
CopyrightPrismTech,2015
Location Transparency is an important
architectural property as it makes it possible to
completely decouple the logical decomposition
of a system from its actual physical deployment
Vortex Automatic Discovery brings location
transparency to the next level by enabling
systems that are zero-conf, self-forming and
self-healing
Location Transparency
Module
Module
Module
Module
Module
Module
Physical
Deployment Unit
Logical
Deployment Unit
CopyrightPrismTech,2015
Vortex provides full control over temporal
decoupling by means of its Durability Policy
As such the data produced by a Source can be:
- Volatile: available for those that are
around at the time at production
- Transient: available as far as the system/
source is running
- Durable: available forever
Temporal Decoupling
tSource
t
t
Sink
Sink
Volatile Durability
tSource
t
t
Sink
Sink
Transient Durability
CopyrightPrismTech,2015
Vortex provides mechanism for detecting traditional
faults as well as performance failures
The Fault-Detection mechanism is controlled by
means of the Vortex Liveliness policy
Performance Failures can be detected using the
Deadline Policy which allows to receive notification
when data is not received within the expected
delays
Failure Detection
Source
tSink
Fault Notification
TD
Source
t
Sink
Performance Failure Notification
P
t
P P
CopyrightPrismTech,2015
Vortex provides a built-in fault-masking
mechanism that allow to replicate
Sources and transparently switch over
when a failure occurs
At any point in time the “active” source is
the one with the highest strength. Where
the strength is an integer parameter
controller by the user
Fault-Masking
Source
tSink
Source t
CopyrightPrismTech,2015
Vortex provides a built-in fault-masking
mechanism that allow to replicate
Sources and transparently switch over
when a failure occurs
At any point in time the “active” source is
the one with the highest strength. Where
the strength is an integer parameter
controller by the user
Fault-Masking
Source
tSink
Source t
CopyrightPrismTech,2015
Performance
Device-2-Device
• Peer-to-Peer Intra-core latency 

as low as 8 µs
• Peer-to-Peer latency as low as 

30 µs
• Point-to-Point throughput 

well over 2.5M msg/sec
Device-2-Cloud
• Routing latency as low as 4 µs
• Linear scale out
• 44K* msgs/sec with a single
router, 4x times more the
average Tweets per second in
the world (~6000 tweets/sec)!
*2048 bytes message payload
CopyrightPrismTech,2015
Introduced in 2004, Vortex is an Object
Management Group (OMG) Standard for
efficient, secure and interoperable, platform-
and programming-language independent
data sharing
The Vortex Standard
Vortex has been
recently recommended
as one of the IIoT data-
sharing
platform for the Industrial Internet Consortium
Reference Architecture
Vortex and ReactiveX
CopyrightPrismTech,2015
Reactive and Interactive Systems continuously interact with their environment
Stimuli coming from the cyber-physical world are often represented as events to
be handled by the Reactive/Interactive System
- e.g. think about the event from a GUI, or the data available event in Vortex
Events are often handled through some form of callbacks, such as listeners,
functors, etc. This stile of event handling leads to inversion of control
Dealing with Events
CopyrightPrismTech,2015
The Inversion of Control induced by callback-based code in known to make
applications brittle and harder to understand
As an mental exercise, think about the call-back style code you’d have to write to
in Java for drawing when the mouse is being dragged. Although the logic is
simple, it is far cry from having a “declarative style”
The problem of callback management, infamously known as Callback Hell, has
become even more important due to the surge of Reactive Systems…
Can we escape the Callback Hell?
The Callback Hell
CopyrightPrismTech,2015
Reactive Programming is a paradigm based on a relaxed form of Synchronous
Dataflow Programming
The Reactive Programming is built around the notion of continuous time-varying
values and propagation of change
Reactive Programming facilitates the declarative development of non-blocking
event driven applications — in essence you express what should be done and the
runtime decides when to do it
Reactive Programming was popularised in the context of Functional
Programming Languages by the seminal done by Elliot and Hudak in 1997 as part
of Fran — a framework for composing richly interactive multimedia animations
Reactive Programming
CopyrightPrismTech,2015
There is an increasing number of Reactive Programming framework. The Rx
framework introduced by Erik Meijer is becoming a reference
.NET Rx
Arguably the first framework that brought Reactive Programming to the masses.
Available for the .NET platform
ReactiveX (http://reactivex.io)
An Open Source implementation of Rx for the JVM contributed by NetFlix, it
supports, Java, Scala, Kotlin, Clojure, Groovy and JRuby
Reactive Programming Libraries
CopyrightPrismTech,2015
ReactiveX is a Java implementation of .NET Reactive Extensions — a library for
composing asynchronous and event-based programs by using observable
sequences.
ReactiveX allow you to compose streams of data declaratively while abstracting
away low level concerns such as threading, synchronization, concurrent data
structures, and non-blocking I/O
The two main concepts at the foundation of ReactiveX are Observables and
Observers
ReactiveX Overview
CopyrightPrismTech,2015
ReactiveX Observables allow the composition of flows and sequences of
asynchronous data
You can think of Observables as some kinds of asynchronous collections that
push data to you
In essence an observable can be created from any synchronous or asynchronous
stream of data.
- you can create an observables that represents the data coming into a Vortex Data
Reader, the events from a Button, or even time
- you can also create an observable that represent an actual container
ReactiveX Observables
CopyrightPrismTech,2015
Observable Examples
t1 2 3
val	
  ticks:	
  Observable[Long]	
  =	
  Observable.interval(1	
  seconds)
n4 50
t1 2 3
val	
  evens:	
  Observable[Long]	
  =	
  ticks.filter(n	
  =>	
  n	
  %	
  2	
  ==	
  0)
n4 50 x x x
t
val	
  bufs:	
  Observable[Seq[Long]]	
  =	
  evens.buffer(2,1)
n0 4 6 82
CopyrightPrismTech,2015
The Observer receives
notification concerning new
values, errors or the completion
of the stream — e.g. no more
data
ReactiveX Observers
trait	
  Observer[-­‐T]	
  {	
  
	
  def	
  onNext(value:	
  T):	
  Unit	
  
	
  def	
  onError(error:	
  Throwable):	
  Unit	
  
	
  def	
  onCompleted():	
  Unit	
  
}
CopyrightPrismTech,2015
Beside from the standard ReactiveX/RxScala Observable, each framework that
wants to integrate with ReactiveX/RxScala has to provide its own factory
methods to create observables
For Vortex you have to use the DddsObservable defined as follows:
Vortex Observables
object	
  DdsObservable	
  {	
  
	
  	
  def	
  fromDataReaderData[T](dr:	
  DataReader[T]):	
  Observable[T]	
  
	
  	
  def	
  fromDataReaderEvents[T](dr:	
  DataReader[T]):	
  Observable[ReaderEvent[T]]	
  
	
  	
  //	
  more	
  methods	
  which	
  we’ll	
  ignore	
  for	
  the	
  time	
  being	
  
}
Coding Lab
CopyrightPrismTech,2015
We will use the omnipresent Shapes
Application to illustrate the benefits of
using Reactive Programming with Vortex
Three Topics
- Circle, Square, Triangle
One Type:
Shapes Application
struct ShapeType {
string color;
long x;
long y;
long shapesize;
};
#pragma keylist ShapeType color
Spotted shapes represent subscriptions
Pierced shapes represent publications
CopyrightPrismTech,2015
We want to show a triangle that
positioned midway between every
single pair of circle and square of the
same colour
Problem 1: Shape in the Middle
CopyrightPrismTech,2015
Logically
Shapes Marble Diagrams
t
t
• Conceptually, we need to select on stream, look at it one element at the time
and match it with the corresponding item in the other stream
• Then, we can produce the average
CopyrightPrismTech,2015
Logically
Shapes Marble Diagrams
t
t
t
x x
CopyrightPrismTech,2015
Logically
Shapes Marble Diagrams
t
t
t
x x x x
P.S.: The dropping may seem a bit counter-intuitive but it is in part due to how the Vortex streams work
CopyrightPrismTech,2015
Midpoint Triangle
	
  	
  	
  	
  val	
  circles	
  =	
  VortexObservable.fromDataReaderData	
  {	
  
	
  	
  	
  	
  	
  	
  DataReader[ShapeType](Topic[ShapeType](circle))	
  
	
  	
  	
  	
  }	
  
	
  	
  	
  	
  val	
  squares	
  =	
  VortexObservable.fromDataReaderData	
  {	
  
	
  	
  	
  	
  	
  	
  DataReader[ShapeType](Topic[ShapeType](square))	
  
	
  	
  	
  	
  }	
  
	
  	
  	
  	
  val	
  ttopic	
  =	
  Topic[ShapeType](triangle)	
  
	
  	
  	
  	
  val	
  tdw	
  =	
  DataWriter[ShapeType](ttopic)	
  
	
  	
  	
  	
  //	
  Compute	
  the	
  average	
  between	
  circle	
  and	
  square	
  of	
  matching	
  color	
  with	
  flatMap	
  
	
  	
  	
  	
  val	
  triangles	
  =	
  circles.flatMap	
  {	
  
	
  	
  	
  	
  	
  	
  c	
  =>	
  squares.dropWhile(_.color	
  !=	
  c.color).take(1).map	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  s	
  =>	
  new	
  ShapeType(s.color,	
  (s.x	
  +	
  c.x)/2,	
  (s.y	
  +	
  c.y)/2,	
  (s.shapesize	
  +	
  c.shapesize)/4)	
  
	
  	
  	
  	
  	
  	
  }	
  
	
  	
  	
  	
  }	
  
	
  	
  	
  	
  triangles.subscribe(tdw.write(_))	
  
CopyrightPrismTech,2015
Using for-comprehension
	
  	
  
	
  	
  	
  	
  //	
  Compute	
  the	
  average	
  between	
  circle	
  and	
  square	
  of	
  matching	
  colour	
  with	
  flatMap	
  
	
  	
  	
  	
  val	
  triangles	
  =	
  circles.flatMap	
  {	
  
	
  	
  	
  	
  	
  	
  c	
  =>	
  squares.dropWhile(_.color	
  !=	
  c.color).take(1).map	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  s	
  =>	
  new	
  ShapeType(s.color,	
  (s.x	
  +	
  c.x)/2,	
  (s.y	
  +	
  c.y)/2,	
  (s.shapesize	
  +	
  c.shapesize)/4)	
  
	
  	
  	
  	
  	
  	
  }	
  
	
  	
  	
  	
  }	
  
	
  	
  
	
  	
  	
  	
  //	
  Compute	
  the	
  average	
  between	
  circle	
  and	
  square	
  of	
  matching	
  colour	
  with	
  for	
  comprehension	
  
	
  	
  	
  	
  val	
  triangles	
  =	
  for	
  {	
  
	
  	
  	
  	
  	
  	
  	
  c	
  <-­‐	
  circles;	
  
	
  	
  	
  	
  	
  	
  	
  s	
  <-­‐	
  squares.dropWhile(_.color	
  !=	
  c.color).take(1)	
  
	
  	
  	
  	
  }	
  yield	
  new	
  ShapeType(s.color,	
  (s.x	
  +	
  c.x)/2,	
  (s.y	
  +	
  c.y)/2,	
  (s.shapesize	
  +	
  c.shapesize)/4)	
  
CopyrightPrismTech,2015
Count the number of times a circle bounces on the left or top border and
make the number of bounces proportional to the position of a square of the
same color
Problem 2: Square Race
CopyrightPrismTech,2015
Square Race
val circles = DdsObservable.fromReaderData {
DataReader[ShapeType](Topic[ShapeType]("Circle"))
}
val sdw = DataWriter[ShapeType](Topic[ShapeType]("Square"))
val squares = circles.filter(s => {
s.x == 0 || s.y == 0
}).map(s => {
val x = xcoord(s.color) + delta
xcoord(s.color) = x
new ShapeType(s.color, x, ycoord(s.color), size)
})
squares.subscribe(sdw.write(_))
Big Data
with Vortex and Spark
CopyrightPrismTech,2015
Spark is a fast and general-purpose — in memory —
cluster computing system that provides high-level
APIs in Java, Scala and Python
Spark has an optimised engine that supports general
execution graphs
Spark supports a rich set of higher-level tools
including Spark SQL for SQL and structured data
processing, MLlib for machine learning, GraphX for
graph processing, and Spark Streaming
Apache Spark
CopyrightPrismTech,2015
Resilient Distributed Data Sets
CopyrightPrismTech,2015
RDD Transformations
CopyrightPrismTech,2015
RDD Operations
CopyrightPrismTech,2015
Spark API
CopyrightPrismTech,2015
Vortex can be used as a source
or a sink for Apache Spark
Streams
This allows to seamlessly
integrate Vortex Application
with Spark
… And at the same time
Vortex & Spark
Live Spark Lab
CopyrightPrismTech,2015
ReactiveX Examples:
- https://github.com/PrismTech/moliere-demo-rx
Spark Streaming for DDS
- https://github.com/kydos/spark-streaming-dds
Resources
CopyrightPrismTech,2015

Mais conteúdo relacionado

Mais procurados

Data Sharing in Extremely Resource Constrained Envionrments
Data Sharing in Extremely Resource Constrained EnvionrmentsData Sharing in Extremely Resource Constrained Envionrments
Data Sharing in Extremely Resource Constrained EnvionrmentsAngelo Corsaro
 
Building Reactive Applications with DDS
Building Reactive Applications with DDSBuilding Reactive Applications with DDS
Building Reactive Applications with DDSAngelo Corsaro
 
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éAngelo Corsaro
 
Getting Started with Vortex
Getting Started with VortexGetting Started with Vortex
Getting Started with VortexAngelo Corsaro
 
Vortex Tutorial -- Part I
Vortex Tutorial -- Part IVortex Tutorial -- Part I
Vortex Tutorial -- Part IAngelo Corsaro
 
Introducing Vortex Lite
Introducing Vortex LiteIntroducing Vortex Lite
Introducing Vortex LiteAngelo Corsaro
 
DDS and OPC UA Explained
DDS and OPC UA ExplainedDDS and OPC UA Explained
DDS and OPC UA ExplainedAngelo Corsaro
 
Vortex: The Intelligent Data Sharing Platform for the Internet of Things
Vortex: The Intelligent Data Sharing Platform for the Internet of ThingsVortex: The Intelligent Data Sharing Platform for the Internet of Things
Vortex: The Intelligent Data Sharing Platform for the Internet of ThingsAngelo Corsaro
 
Looking at SDN with DDS Glasses
Looking at SDN with DDS GlassesLooking at SDN with DDS Glasses
Looking at SDN with DDS GlassesAngelo Corsaro
 
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 CloudAngelo Corsaro
 
High Performance Distributed Computing with DDS and Scala
High Performance Distributed Computing with DDS and ScalaHigh Performance Distributed Computing with DDS and Scala
High Performance Distributed Computing with DDS and ScalaAngelo Corsaro
 
The DDS Tutorial Part II
The DDS Tutorial Part IIThe DDS Tutorial Part II
The DDS Tutorial Part IIAngelo Corsaro
 
Data Decentralisation: Efficiency, Privacy and Fair Monetisation
Data Decentralisation: Efficiency, Privacy and Fair MonetisationData Decentralisation: Efficiency, Privacy and Fair Monetisation
Data Decentralisation: Efficiency, Privacy and Fair MonetisationAngelo Corsaro
 
The Data Distribution Service Tutorial
The Data Distribution Service TutorialThe Data Distribution Service Tutorial
The Data Distribution Service TutorialAngelo Corsaro
 
The Data Distribution Service
The Data Distribution ServiceThe Data Distribution Service
The Data Distribution ServiceAngelo Corsaro
 
The Art and Science of DDS Data Modelling
The Art and Science of DDS Data ModellingThe Art and Science of DDS Data Modelling
The Art and Science of DDS Data ModellingAngelo Corsaro
 
Connected Mobile and Web Applications with Vortex
Connected Mobile and Web Applications with VortexConnected Mobile and Web Applications with Vortex
Connected Mobile and Web Applications with VortexAngelo Corsaro
 
Cyclone DDS: Sharing Data in the IoT Age
Cyclone DDS: Sharing Data in the IoT AgeCyclone DDS: Sharing Data in the IoT Age
Cyclone DDS: Sharing Data in the IoT AgeAngelo Corsaro
 
The Data Distribution Service: The Communication Middleware Fabric for Scala...
The Data Distribution Service: The Communication  Middleware Fabric for Scala...The Data Distribution Service: The Communication  Middleware Fabric for Scala...
The Data Distribution Service: The Communication Middleware Fabric for Scala...Angelo Corsaro
 

Mais procurados (20)

Data Sharing in Extremely Resource Constrained Envionrments
Data Sharing in Extremely Resource Constrained EnvionrmentsData Sharing in Extremely Resource Constrained Envionrments
Data Sharing in Extremely Resource Constrained Envionrments
 
Building Reactive Applications with DDS
Building Reactive Applications with DDSBuilding Reactive Applications with DDS
Building Reactive Applications with DDS
 
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é
 
Vortex Tutorial Part 2
Vortex Tutorial Part 2Vortex Tutorial Part 2
Vortex Tutorial Part 2
 
Getting Started with Vortex
Getting Started with VortexGetting Started with Vortex
Getting Started with Vortex
 
Vortex Tutorial -- Part I
Vortex Tutorial -- Part IVortex Tutorial -- Part I
Vortex Tutorial -- Part I
 
Introducing Vortex Lite
Introducing Vortex LiteIntroducing Vortex Lite
Introducing Vortex Lite
 
DDS and OPC UA Explained
DDS and OPC UA ExplainedDDS and OPC UA Explained
DDS and OPC UA Explained
 
Vortex: The Intelligent Data Sharing Platform for the Internet of Things
Vortex: The Intelligent Data Sharing Platform for the Internet of ThingsVortex: The Intelligent Data Sharing Platform for the Internet of Things
Vortex: The Intelligent Data Sharing Platform for the Internet of Things
 
Looking at SDN with DDS Glasses
Looking at SDN with DDS GlassesLooking at SDN with DDS Glasses
Looking at SDN with DDS Glasses
 
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
 
High Performance Distributed Computing with DDS and Scala
High Performance Distributed Computing with DDS and ScalaHigh Performance Distributed Computing with DDS and Scala
High Performance Distributed Computing with DDS and Scala
 
The DDS Tutorial Part II
The DDS Tutorial Part IIThe DDS Tutorial Part II
The DDS Tutorial Part II
 
Data Decentralisation: Efficiency, Privacy and Fair Monetisation
Data Decentralisation: Efficiency, Privacy and Fair MonetisationData Decentralisation: Efficiency, Privacy and Fair Monetisation
Data Decentralisation: Efficiency, Privacy and Fair Monetisation
 
The Data Distribution Service Tutorial
The Data Distribution Service TutorialThe Data Distribution Service Tutorial
The Data Distribution Service Tutorial
 
The Data Distribution Service
The Data Distribution ServiceThe Data Distribution Service
The Data Distribution Service
 
The Art and Science of DDS Data Modelling
The Art and Science of DDS Data ModellingThe Art and Science of DDS Data Modelling
The Art and Science of DDS Data Modelling
 
Connected Mobile and Web Applications with Vortex
Connected Mobile and Web Applications with VortexConnected Mobile and Web Applications with Vortex
Connected Mobile and Web Applications with Vortex
 
Cyclone DDS: Sharing Data in the IoT Age
Cyclone DDS: Sharing Data in the IoT AgeCyclone DDS: Sharing Data in the IoT Age
Cyclone DDS: Sharing Data in the IoT Age
 
The Data Distribution Service: The Communication Middleware Fabric for Scala...
The Data Distribution Service: The Communication  Middleware Fabric for Scala...The Data Distribution Service: The Communication  Middleware Fabric for Scala...
The Data Distribution Service: The Communication Middleware Fabric for Scala...
 

Destaque

Building the Internet of Things
Building the Internet of ThingsBuilding the Internet of Things
Building the Internet of ThingsAngelo Corsaro
 
Fog Computing with Vortex
Fog Computing with VortexFog Computing with Vortex
Fog Computing with VortexAngelo Corsaro
 
DDS in Action -- Part I
DDS in Action -- Part IDDS in Action -- Part I
DDS in Action -- Part IAngelo Corsaro
 
Reactive Data Centric Architectures with DDS
Reactive Data Centric Architectures with DDSReactive Data Centric Architectures with DDS
Reactive Data Centric Architectures with DDSAngelo Corsaro
 
Migrating data centric applications to windows azure
Migrating data centric applications to windows azureMigrating data centric applications to windows azure
Migrating data centric applications to windows azureSteve Xu
 
Fineo Technical Overview - NextSQL for IoT
Fineo Technical Overview - NextSQL for IoTFineo Technical Overview - NextSQL for IoT
Fineo Technical Overview - NextSQL for IoTJesse Yates
 
Many Bundles of Things - M Rulli
Many Bundles of Things - M RulliMany Bundles of Things - M Rulli
Many Bundles of Things - M Rullimfrancis
 
MongoDB IoT City Tour LONDON: Managing the Database Complexity, by Arthur Vie...
MongoDB IoT City Tour LONDON: Managing the Database Complexity, by Arthur Vie...MongoDB IoT City Tour LONDON: Managing the Database Complexity, by Arthur Vie...
MongoDB IoT City Tour LONDON: Managing the Database Complexity, by Arthur Vie...MongoDB
 
Authorization Aspects of the Distributed Dataflow-oriented IoT Framework Calvin
Authorization Aspects of the Distributed Dataflow-oriented IoT Framework CalvinAuthorization Aspects of the Distributed Dataflow-oriented IoT Framework Calvin
Authorization Aspects of the Distributed Dataflow-oriented IoT Framework CalvinTomas Nilsson
 
Getting to know oracle database objects iot, mviews, clusters and more…
Getting to know oracle database objects iot, mviews, clusters and more…Getting to know oracle database objects iot, mviews, clusters and more…
Getting to know oracle database objects iot, mviews, clusters and more…Aaron Shilo
 
Informix - The Ideal Database for IoT
Informix - The Ideal Database for IoTInformix - The Ideal Database for IoT
Informix - The Ideal Database for IoTPradeep Natarajan
 
Developing io t applications in the fog a distributed dataflow approach
Developing io t applications in the fog  a distributed dataflow approachDeveloping io t applications in the fog  a distributed dataflow approach
Developing io t applications in the fog a distributed dataflow approachNam Giang
 
Understanding the Operational Database Infrastructure for IoT and Fast Data
Understanding the Operational Database Infrastructure for IoT and Fast DataUnderstanding the Operational Database Infrastructure for IoT and Fast Data
Understanding the Operational Database Infrastructure for IoT and Fast DataVoltDB
 
IOT Paris Seminar 2015 - Storage Challenges in IOT
IOT Paris Seminar 2015 - Storage Challenges in IOTIOT Paris Seminar 2015 - Storage Challenges in IOT
IOT Paris Seminar 2015 - Storage Challenges in IOTMongoDB
 
Processing Twitter Stream with Oracle Event Processing (OEP)
Processing Twitter Stream with Oracle Event Processing (OEP)Processing Twitter Stream with Oracle Event Processing (OEP)
Processing Twitter Stream with Oracle Event Processing (OEP)Guido Schmutz
 
Why IoT needs Fog Computing ?
Why IoT needs Fog Computing ?Why IoT needs Fog Computing ?
Why IoT needs Fog Computing ?Ahmed Banafa
 
Alphorm.com Support de la Formation JavaScript , avancé
Alphorm.com Support de la Formation JavaScript , avancéAlphorm.com Support de la Formation JavaScript , avancé
Alphorm.com Support de la Formation JavaScript , avancéAlphorm
 
How to build a Distributed Serverless Polyglot Microservices IoT Platform us...
How to build a Distributed Serverless Polyglot Microservices IoT Platform us...How to build a Distributed Serverless Polyglot Microservices IoT Platform us...
How to build a Distributed Serverless Polyglot Microservices IoT Platform us...Animesh Singh
 

Destaque (20)

Building the Internet of Things
Building the Internet of ThingsBuilding the Internet of Things
Building the Internet of Things
 
Fog Computing with Vortex
Fog Computing with VortexFog Computing with Vortex
Fog Computing with Vortex
 
DDS in Action -- Part I
DDS in Action -- Part IDDS in Action -- Part I
DDS in Action -- Part I
 
Reactive Data Centric Architectures with DDS
Reactive Data Centric Architectures with DDSReactive Data Centric Architectures with DDS
Reactive Data Centric Architectures with DDS
 
Migrating data centric applications to windows azure
Migrating data centric applications to windows azureMigrating data centric applications to windows azure
Migrating data centric applications to windows azure
 
Fineo Technical Overview - NextSQL for IoT
Fineo Technical Overview - NextSQL for IoTFineo Technical Overview - NextSQL for IoT
Fineo Technical Overview - NextSQL for IoT
 
Many Bundles of Things - M Rulli
Many Bundles of Things - M RulliMany Bundles of Things - M Rulli
Many Bundles of Things - M Rulli
 
MongoDB IoT City Tour LONDON: Managing the Database Complexity, by Arthur Vie...
MongoDB IoT City Tour LONDON: Managing the Database Complexity, by Arthur Vie...MongoDB IoT City Tour LONDON: Managing the Database Complexity, by Arthur Vie...
MongoDB IoT City Tour LONDON: Managing the Database Complexity, by Arthur Vie...
 
Authorization Aspects of the Distributed Dataflow-oriented IoT Framework Calvin
Authorization Aspects of the Distributed Dataflow-oriented IoT Framework CalvinAuthorization Aspects of the Distributed Dataflow-oriented IoT Framework Calvin
Authorization Aspects of the Distributed Dataflow-oriented IoT Framework Calvin
 
Getting to know oracle database objects iot, mviews, clusters and more…
Getting to know oracle database objects iot, mviews, clusters and more…Getting to know oracle database objects iot, mviews, clusters and more…
Getting to know oracle database objects iot, mviews, clusters and more…
 
Informix - The Ideal Database for IoT
Informix - The Ideal Database for IoTInformix - The Ideal Database for IoT
Informix - The Ideal Database for IoT
 
Developing io t applications in the fog a distributed dataflow approach
Developing io t applications in the fog  a distributed dataflow approachDeveloping io t applications in the fog  a distributed dataflow approach
Developing io t applications in the fog a distributed dataflow approach
 
Understanding the Operational Database Infrastructure for IoT and Fast Data
Understanding the Operational Database Infrastructure for IoT and Fast DataUnderstanding the Operational Database Infrastructure for IoT and Fast Data
Understanding the Operational Database Infrastructure for IoT and Fast Data
 
IOT Paris Seminar 2015 - Storage Challenges in IOT
IOT Paris Seminar 2015 - Storage Challenges in IOTIOT Paris Seminar 2015 - Storage Challenges in IOT
IOT Paris Seminar 2015 - Storage Challenges in IOT
 
Cassandra & Spark for IoT
Cassandra & Spark for IoTCassandra & Spark for IoT
Cassandra & Spark for IoT
 
Processing Twitter Stream with Oracle Event Processing (OEP)
Processing Twitter Stream with Oracle Event Processing (OEP)Processing Twitter Stream with Oracle Event Processing (OEP)
Processing Twitter Stream with Oracle Event Processing (OEP)
 
Why IoT needs Fog Computing ?
Why IoT needs Fog Computing ?Why IoT needs Fog Computing ?
Why IoT needs Fog Computing ?
 
Alphorm.com Support de la Formation JavaScript , avancé
Alphorm.com Support de la Formation JavaScript , avancéAlphorm.com Support de la Formation JavaScript , avancé
Alphorm.com Support de la Formation JavaScript , avancé
 
Understanding the Internet of Things Protocols
Understanding the Internet of Things ProtocolsUnderstanding the Internet of Things Protocols
Understanding the Internet of Things Protocols
 
How to build a Distributed Serverless Polyglot Microservices IoT Platform us...
How to build a Distributed Serverless Polyglot Microservices IoT Platform us...How to build a Distributed Serverless Polyglot Microservices IoT Platform us...
How to build a Distributed Serverless Polyglot Microservices IoT Platform us...
 

Semelhante a Reactive Data Centric Architectures with Vortex, Spark and ReactiveX

Reactive Stream Processing for Data-centric Publish/Subscribe
Reactive Stream Processing for Data-centric Publish/SubscribeReactive Stream Processing for Data-centric Publish/Subscribe
Reactive Stream Processing for Data-centric Publish/SubscribeSumant Tambe
 
Event Driven Architecture with a RESTful Microservices Architecture (Kyle Ben...
Event Driven Architecture with a RESTful Microservices Architecture (Kyle Ben...Event Driven Architecture with a RESTful Microservices Architecture (Kyle Ben...
Event Driven Architecture with a RESTful Microservices Architecture (Kyle Ben...confluent
 
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 applicationsJaime Martin Losa
 
Monitoring as an entry point for collaboration
Monitoring as an entry point for collaborationMonitoring as an entry point for collaboration
Monitoring as an entry point for collaborationJulien Pivotto
 
Open Source Bristol 30 March 2022
Open Source Bristol 30 March 2022Open Source Bristol 30 March 2022
Open Source Bristol 30 March 2022Timothy Spann
 
Cloud Computing_ICT Concepts & Trends.pptx
Cloud Computing_ICT Concepts & Trends.pptxCloud Computing_ICT Concepts & Trends.pptx
Cloud Computing_ICT Concepts & Trends.pptxssuser6063b0
 
Microservices Part 4: Functional Reactive Programming
Microservices Part 4: Functional Reactive ProgrammingMicroservices Part 4: Functional Reactive Programming
Microservices Part 4: Functional Reactive ProgrammingAraf Karsh Hamid
 
Cloud Computing:An Economic Solution for Libraries
Cloud Computing:An Economic Solution for LibrariesCloud Computing:An Economic Solution for Libraries
Cloud Computing:An Economic Solution for LibrariesAmit Shaw
 
Designing a Scalable Twitter - Patterns for Designing Scalable Real-Time Web ...
Designing a Scalable Twitter - Patterns for Designing Scalable Real-Time Web ...Designing a Scalable Twitter - Patterns for Designing Scalable Real-Time Web ...
Designing a Scalable Twitter - Patterns for Designing Scalable Real-Time Web ...Nati Shalom
 
Real Time Java DDS
Real Time Java DDSReal Time Java DDS
Real Time Java DDSkerush
 
A New And Efficient Hybrid Technique For The Automatic...
A New And Efficient Hybrid Technique For The Automatic...A New And Efficient Hybrid Technique For The Automatic...
A New And Efficient Hybrid Technique For The Automatic...Amber Wheeler
 
RTI Data-Distribution Service (DDS) Master Class 2011
RTI Data-Distribution Service (DDS) Master Class 2011RTI Data-Distribution Service (DDS) Master Class 2011
RTI Data-Distribution Service (DDS) Master Class 2011Gerardo Pardo-Castellote
 
Cyber forensics in cloud computing
Cyber forensics in cloud computingCyber forensics in cloud computing
Cyber forensics in cloud computingAlexander Decker
 
11.cyber forensics in cloud computing
11.cyber forensics in cloud computing11.cyber forensics in cloud computing
11.cyber forensics in cloud computingAlexander Decker
 
Functional reactive programming
Functional reactive programmingFunctional reactive programming
Functional reactive programmingAraf Karsh Hamid
 
IRJET - Torcloud - An Energy-Efficient Public Cloud for Imparting Files
IRJET -  	  Torcloud - An Energy-Efficient Public Cloud for Imparting FilesIRJET -  	  Torcloud - An Energy-Efficient Public Cloud for Imparting Files
IRJET - Torcloud - An Energy-Efficient Public Cloud for Imparting FilesIRJET Journal
 
Disadvantages Of Robotium
Disadvantages Of RobotiumDisadvantages Of Robotium
Disadvantages Of RobotiumSusan Tullis
 

Semelhante a Reactive Data Centric Architectures with Vortex, Spark and ReactiveX (20)

Reactive Stream Processing for Data-centric Publish/Subscribe
Reactive Stream Processing for Data-centric Publish/SubscribeReactive Stream Processing for Data-centric Publish/Subscribe
Reactive Stream Processing for Data-centric Publish/Subscribe
 
Event Driven Architecture with a RESTful Microservices Architecture (Kyle Ben...
Event Driven Architecture with a RESTful Microservices Architecture (Kyle Ben...Event Driven Architecture with a RESTful Microservices Architecture (Kyle Ben...
Event Driven Architecture with a RESTful Microservices Architecture (Kyle Ben...
 
chapter 3.pdf
chapter 3.pdfchapter 3.pdf
chapter 3.pdf
 
chapter 3.docx
chapter 3.docxchapter 3.docx
chapter 3.docx
 
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
 
Monitoring as an entry point for collaboration
Monitoring as an entry point for collaborationMonitoring as an entry point for collaboration
Monitoring as an entry point for collaboration
 
Open Source Bristol 30 March 2022
Open Source Bristol 30 March 2022Open Source Bristol 30 March 2022
Open Source Bristol 30 March 2022
 
Cloud Computing_ICT Concepts & Trends.pptx
Cloud Computing_ICT Concepts & Trends.pptxCloud Computing_ICT Concepts & Trends.pptx
Cloud Computing_ICT Concepts & Trends.pptx
 
Microservices Part 4: Functional Reactive Programming
Microservices Part 4: Functional Reactive ProgrammingMicroservices Part 4: Functional Reactive Programming
Microservices Part 4: Functional Reactive Programming
 
Cloud Computing:An Economic Solution for Libraries
Cloud Computing:An Economic Solution for LibrariesCloud Computing:An Economic Solution for Libraries
Cloud Computing:An Economic Solution for Libraries
 
Designing a Scalable Twitter - Patterns for Designing Scalable Real-Time Web ...
Designing a Scalable Twitter - Patterns for Designing Scalable Real-Time Web ...Designing a Scalable Twitter - Patterns for Designing Scalable Real-Time Web ...
Designing a Scalable Twitter - Patterns for Designing Scalable Real-Time Web ...
 
Real Time Java DDS
Real Time Java DDSReal Time Java DDS
Real Time Java DDS
 
A New And Efficient Hybrid Technique For The Automatic...
A New And Efficient Hybrid Technique For The Automatic...A New And Efficient Hybrid Technique For The Automatic...
A New And Efficient Hybrid Technique For The Automatic...
 
RTI Data-Distribution Service (DDS) Master Class 2011
RTI Data-Distribution Service (DDS) Master Class 2011RTI Data-Distribution Service (DDS) Master Class 2011
RTI Data-Distribution Service (DDS) Master Class 2011
 
Cyber forensics in cloud computing
Cyber forensics in cloud computingCyber forensics in cloud computing
Cyber forensics in cloud computing
 
11.cyber forensics in cloud computing
11.cyber forensics in cloud computing11.cyber forensics in cloud computing
11.cyber forensics in cloud computing
 
Functional reactive programming
Functional reactive programmingFunctional reactive programming
Functional reactive programming
 
Distributed Systems in Data Engineering
Distributed Systems in Data EngineeringDistributed Systems in Data Engineering
Distributed Systems in Data Engineering
 
IRJET - Torcloud - An Energy-Efficient Public Cloud for Imparting Files
IRJET -  	  Torcloud - An Energy-Efficient Public Cloud for Imparting FilesIRJET -  	  Torcloud - An Energy-Efficient Public Cloud for Imparting Files
IRJET - Torcloud - An Energy-Efficient Public Cloud for Imparting Files
 
Disadvantages Of Robotium
Disadvantages Of RobotiumDisadvantages Of Robotium
Disadvantages Of Robotium
 

Mais de Angelo Corsaro

zenoh: The Edge Data Fabric
zenoh: The Edge Data Fabriczenoh: The Edge Data Fabric
zenoh: The Edge Data FabricAngelo Corsaro
 
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 computeAngelo Corsaro
 
zenoh -- the ZEro Network OverHead protocol
zenoh -- the ZEro Network OverHead protocolzenoh -- the ZEro Network OverHead protocol
zenoh -- the ZEro Network OverHead protocolAngelo Corsaro
 
zenoh -- the ZEro Network OverHead protocol
zenoh -- the ZEro Network OverHead protocolzenoh -- the ZEro Network OverHead protocol
zenoh -- the ZEro Network OverHead protocolAngelo Corsaro
 
Breaking the Edge -- A Journey Through Cloud, Edge and Fog Computing
Breaking the Edge -- A Journey Through Cloud, Edge and Fog ComputingBreaking the Edge -- A Journey Through Cloud, Edge and Fog Computing
Breaking the Edge -- A Journey Through Cloud, Edge and Fog ComputingAngelo Corsaro
 
fog05: The Fog Computing Infrastructure
fog05: The Fog Computing Infrastructurefog05: The Fog Computing Infrastructure
fog05: The Fog Computing InfrastructureAngelo Corsaro
 
fog05: The Fog Computing Platform
fog05: The Fog Computing Platformfog05: The Fog Computing Platform
fog05: The Fog Computing PlatformAngelo Corsaro
 
Programming in Scala - Lecture Four
Programming in Scala - Lecture FourProgramming in Scala - Lecture Four
Programming in Scala - Lecture FourAngelo Corsaro
 
Programming in Scala - Lecture Three
Programming in Scala - Lecture ThreeProgramming in Scala - Lecture Three
Programming in Scala - Lecture ThreeAngelo Corsaro
 
Programming in Scala - Lecture Two
Programming in Scala - Lecture TwoProgramming in Scala - Lecture Two
Programming in Scala - Lecture TwoAngelo Corsaro
 
Programming in Scala - Lecture One
Programming in Scala - Lecture OneProgramming in Scala - Lecture One
Programming in Scala - Lecture OneAngelo Corsaro
 
The DDS Security Standard
The DDS Security StandardThe DDS Security Standard
The DDS Security StandardAngelo Corsaro
 
RUSTing -- Partially Ordered Rust Programming Ruminations
RUSTing -- Partially Ordered Rust Programming RuminationsRUSTing -- Partially Ordered Rust Programming Ruminations
RUSTing -- Partially Ordered Rust Programming RuminationsAngelo Corsaro
 
Vortex II -- The Industrial IoT Connectivity Standard
Vortex II -- The  Industrial IoT  Connectivity StandardVortex II -- The  Industrial IoT  Connectivity Standard
Vortex II -- The Industrial IoT Connectivity StandardAngelo Corsaro
 
The Cloudy, Foggy and Misty Internet of Things -- Toward Fluid IoT Architect...
The Cloudy, Foggy and Misty Internet of Things --  Toward Fluid IoT Architect...The Cloudy, Foggy and Misty Internet of Things --  Toward Fluid IoT Architect...
The Cloudy, Foggy and Misty Internet of Things -- Toward Fluid IoT Architect...Angelo Corsaro
 
Fluid IoT Architectures
Fluid IoT ArchitecturesFluid IoT Architectures
Fluid IoT ArchitecturesAngelo Corsaro
 

Mais de Angelo Corsaro (20)

Zenoh: The Genesis
Zenoh: The GenesisZenoh: The Genesis
Zenoh: The Genesis
 
zenoh: The Edge Data Fabric
zenoh: The Edge Data Fabriczenoh: The Edge Data Fabric
zenoh: The Edge Data Fabric
 
Zenoh Tutorial
Zenoh TutorialZenoh Tutorial
Zenoh Tutorial
 
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
 
zenoh -- the ZEro Network OverHead protocol
zenoh -- the ZEro Network OverHead protocolzenoh -- the ZEro Network OverHead protocol
zenoh -- the ZEro Network OverHead protocol
 
zenoh -- the ZEro Network OverHead protocol
zenoh -- the ZEro Network OverHead protocolzenoh -- the ZEro Network OverHead protocol
zenoh -- the ZEro Network OverHead protocol
 
Breaking the Edge -- A Journey Through Cloud, Edge and Fog Computing
Breaking the Edge -- A Journey Through Cloud, Edge and Fog ComputingBreaking the Edge -- A Journey Through Cloud, Edge and Fog Computing
Breaking the Edge -- A Journey Through Cloud, Edge and Fog Computing
 
Eastern Sicily
Eastern SicilyEastern Sicily
Eastern Sicily
 
fog05: The Fog Computing Infrastructure
fog05: The Fog Computing Infrastructurefog05: The Fog Computing Infrastructure
fog05: The Fog Computing Infrastructure
 
fog05: The Fog Computing Platform
fog05: The Fog Computing Platformfog05: The Fog Computing Platform
fog05: The Fog Computing Platform
 
Programming in Scala - Lecture Four
Programming in Scala - Lecture FourProgramming in Scala - Lecture Four
Programming in Scala - Lecture Four
 
Programming in Scala - Lecture Three
Programming in Scala - Lecture ThreeProgramming in Scala - Lecture Three
Programming in Scala - Lecture Three
 
Programming in Scala - Lecture Two
Programming in Scala - Lecture TwoProgramming in Scala - Lecture Two
Programming in Scala - Lecture Two
 
Programming in Scala - Lecture One
Programming in Scala - Lecture OneProgramming in Scala - Lecture One
Programming in Scala - Lecture One
 
The DDS Security Standard
The DDS Security StandardThe DDS Security Standard
The DDS Security Standard
 
RUSTing -- Partially Ordered Rust Programming Ruminations
RUSTing -- Partially Ordered Rust Programming RuminationsRUSTing -- Partially Ordered Rust Programming Ruminations
RUSTing -- Partially Ordered Rust Programming Ruminations
 
Vortex II -- The Industrial IoT Connectivity Standard
Vortex II -- The  Industrial IoT  Connectivity StandardVortex II -- The  Industrial IoT  Connectivity Standard
Vortex II -- The Industrial IoT Connectivity Standard
 
Fog Computing Defined
Fog Computing DefinedFog Computing Defined
Fog Computing Defined
 
The Cloudy, Foggy and Misty Internet of Things -- Toward Fluid IoT Architect...
The Cloudy, Foggy and Misty Internet of Things --  Toward Fluid IoT Architect...The Cloudy, Foggy and Misty Internet of Things --  Toward Fluid IoT Architect...
The Cloudy, Foggy and Misty Internet of Things -- Toward Fluid IoT Architect...
 
Fluid IoT Architectures
Fluid IoT ArchitecturesFluid IoT Architectures
Fluid IoT Architectures
 

Último

Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Scott Andery
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...panagenda
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 

Último (20)

Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 

Reactive Data Centric Architectures with Vortex, Spark and ReactiveX

  • 1. Angelo  Corsaro,  PhD   Chief  Technology  Officer   angelo.corsaro@prismtech.com Reactive Data Centric Architectures with Vortex, Spark and ReactiveX
  • 3. CopyrightPrismTech,2015 Up to recently Reactive Systems were mainstream only domains such as Industrial, Military, Telco, Finance and Aerospace To address the challenges imposed by the Internet of Thing and Big Data Applications an increasing number of architects and developers is recognising the importance of the techniques and technologies used for building Reactive Systems The Raising Importance of being Reactive
  • 4. CopyrightPrismTech,2015 The techniques and technologies traditionally used in a class of Reactive and Interactive Systems is gaining quite a bit of attention from the mainstream developers community Recently, the Reactive Manifesto was defined to summarise the key traits of “Reactive Applications” Reactive Manifesto Responsive Scalable Event-Driven Resilient http://www.reactivemanifesto.org/
  • 5. CopyrightPrismTech,2015 Event-Driven: modular, asynchronous Responsive: Timely react to stimuli Resilient: Tolerate failures functionally and ideally temporally Scalable: Gracefully scale up and down depending on load demands Reactive Manifesto Responsive Scalable Event-Driven Resilient http://www.reactivemanifesto.org/
  • 7. CopyrightPrismTech,2015 The prevailing application-/service-centric mindset by focusing on the control- flow as opposed than the data-flow has lead to design systems that are hard to extend, scale and make fault-tolerant An increasing number of architects has realised that the remedy is to change the main point of attention: Data is the centre of the universe — applications are ephemeral The Importance of being Data-Centric
  • 8. CopyrightPrismTech,2015 Data-Centric Manifesto http://datacentricmanifesto.org the data-centric revolution puts data at the centre of the system applications are optional visitors to the data
  • 9. CopyrightPrismTech,2015 Control-Flow-Centric Lightbulb Example Lightbulb - status(): bool - on(): - off(): - intensity(): float - intensity(i):
  • 11. Reactive and Data Centric Architectures
  • 12. CopyrightPrismTech,2015 Data-Centric: data is what matters. Application autonomously and asynchronously transform data Responsive: Timely react to stimuli Resilient: Tolerate failures functionally and ideally temporally Scalable: Gracefully scale up and down depending on load demands Reactive Data-Centric Manifesto Responsive Scalable Data-Centric Resilient http://www.reactivemanifesto.org/
  • 15. CopyrightPrismTech,2015 Vortex provides a Distributed Data Space abstraction where applications can autonomously and asynchronously read and write data enjoying spatial and temporal decoupling Its built-in dynamic discovery isolates applications from network topology and connectivity details Vortex’ Data Space is completely decentralised High Level Abstraction 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,2015 Vortex supports the definition of Data Models. These data models allow to naturally represent physical and virtual entities characterising the application domain Vortex types are extensible and evolvable, thus allowing incremental updates and upgrades Data Centricity
  • 17. CopyrightPrismTech,2015 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 struct  TemperatureSensor  {        @key        long  sid;        float  temp;        float  hum;   }    
  • 18. CopyrightPrismTech,2015 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
  • 19. CopyrightPrismTech,2015 Vortex “knows” about application data types and uses this information provide type-safety and content- based routing Content Awareness struct  TemperatureSensor  {        @key        long  sid;        float  temp;        float  hum;   }     sid temp hum 101 25.3 0.6 507 33.2 0.7 913 27,5 0.55 1307 26.2 0.67 “temp  >  25  OR  hum  >=  0.6” sid temp hum 101 25.3 0.6 507 33.2 0.7 1307 26.2 0.67 Type TempSensor
  • 20. CopyrightPrismTech,2015 For data to flow from a DataWriter (DW) to one or many DataReader (DR) a few conditions have to apply: The DR and DW domain participants have to be in the same domain The partition expression of the DR’s Subscriber and the DW’s Publisher should match (in terms of regular expression match) The QoS Policies offered by the DW should exceed or match those requested by the DR Quality of Service Domain Participant DURABILITY OWENERSHIP DEADLINE LATENCY BUDGET LIVELINESS RELIABILITY DEST. ORDER Publisher DataWriter PARTITION DataReader Subscriber Domain Participant offered QoS Topic writes reads Domain Id joins joins produces-in consumes-from RxO QoS Policies requested QoS
  • 22. CopyrightPrismTech,2015 Reactive Systems1 A Reactive System designates a permanently operating system that responds, reacts, to external stimuli at a speed determined by its environment, e.g. an industrial control system. Reactive Systems [1] Nicolas Halbwachs, Synchronous Programming of Reactive Systems
  • 23. CopyrightPrismTech,2015 Transformational Systems A Transformational System designates a system that terminates after transforming its input into its output, e.g. a compiler Transformational Systems
  • 24. CopyrightPrismTech,2015 Interactive Systems An Interactive System designates a systems that permanently communicates with its environment at its own speed, e.g. a computer game Interactive Systems
  • 25. CopyrightPrismTech,2015 Reactive react to an environment which “cannot wait”, e.g. reacting late has harsh consequences response time needs to be deterministic distributed concurrent systems data-centric Reactive vs. Interactive Systems The term reactive systems is increasingly used to denote interactive systems with stringent response time, performance and scalability constraints. Interactive react to an environment which “doesn’t like to wait”, e.g. reacting late induces QoS degradation response time needs to be acceptable distributed concurrent systems data-centric
  • 26. CopyrightPrismTech,2015 Concurrency Aside from the concurrency between the system and its environment, it is natural to decompose these systems as an ensemble of concurrent components that cooperate to achieve the intended behaviour Strict Temporal Requirements Reactive Systems have strict requirements with respect to the rate at which the need to process input as well as the response time for their outputs Determinism The output of these systems are generally determined by the input and the occurrence time, e.g. no scheduling effects on the temporal properties of the output Reliability Reactive Systems are often life/mission critical, as such reliability is of utmost importance Reactive Systems Key Traits
  • 28. CopyrightPrismTech,2015 Stream Processing is a commonly adopted architectural style for building systems that operate over continuous (theoretically infinite) streams of data Stream Processing is often applied in: - Reactive Systems - Interactive Systems - Signal Processing Systems - Functional Stream Programming - Big Data Analytics Stream Processing
  • 29. CopyrightPrismTech,2015 Stream Processing Architectures are ideal for modelling systems that react to streams of data produced by the cyber-phisical-systems, such as data produced by sensors, the stock market, etc. Stream Processing Systems operate in real-time over streams and generate in turns other streams of data providing information on what is happening or suggesting actions to perform, such as by stock X, raise alarm Y, or detected spatial violation, etc. Stream Processing
  • 30. CopyrightPrismTech,2015 Stream Processing Systems are typically modelled as collection of concurrent modules communicating via typed data channels Modules usually play one of the following roles: - Sources: Injecting data into the System - Filters/Actors: Performing some computation over sources - Sinks: Consuming the data produced by the system Stream Processing Filter Source Filter Filter Stream Sink
  • 32. CopyrightPrismTech,2015 A stream represents a potentially infinite sequence of data samples of a given type T As such, in Vortex, a stream can be naturally represented with a Topic Example: - Topic<PressureType> - Topic<MarketData> Streams in Vortex Filter Filter Filter Stream
  • 33. CopyrightPrismTech,2015 Sources in Vortex are mapped to DataWriters for a given Topic Sinks in Vortex are mapped to DataReaders for a given Topic Source and Sinks in Vortex Filter Source Filter Filter Sink
  • 34. CopyrightPrismTech,2015 Filters implement bit and pieces of the application business logic Each Filter has one or more input stream and one or more output streams Obviously, a Filter consumes data from an input stream through a Vortex data reader and pushed data into an output stream through a Vortex data writer Filters in Vortex Filter Filter Filter
  • 36. CopyrightPrismTech,2015 Stream Processing Architectures in general and Vortex-based architecture in particular promote loose coupling Anonymous Communication => No Spatial Coupling Non-Blocking and Asynchronous Interaction => No control or temporal coupling In Vortex the only thing that matters is the kind of information a module is interested in consuming or producing — who is producing the data or when the data has been produced is not relevant Loose Coupling
  • 37. CopyrightPrismTech,2015 Location Transparency is an important architectural property as it makes it possible to completely decouple the logical decomposition of a system from its actual physical deployment Vortex Automatic Discovery brings location transparency to the next level by enabling systems that are zero-conf, self-forming and self-healing Location Transparency Module Module Module Module Module Module Physical Deployment Unit Logical Deployment Unit
  • 38. CopyrightPrismTech,2015 Vortex provides full control over temporal decoupling by means of its Durability Policy As such the data produced by a Source can be: - Volatile: available for those that are around at the time at production - Transient: available as far as the system/ source is running - Durable: available forever Temporal Decoupling tSource t t Sink Sink Volatile Durability tSource t t Sink Sink Transient Durability
  • 39. CopyrightPrismTech,2015 Vortex provides mechanism for detecting traditional faults as well as performance failures The Fault-Detection mechanism is controlled by means of the Vortex Liveliness policy Performance Failures can be detected using the Deadline Policy which allows to receive notification when data is not received within the expected delays Failure Detection Source tSink Fault Notification TD Source t Sink Performance Failure Notification P t P P
  • 40. CopyrightPrismTech,2015 Vortex provides a built-in fault-masking mechanism that allow to replicate Sources and transparently switch over when a failure occurs At any point in time the “active” source is the one with the highest strength. Where the strength is an integer parameter controller by the user Fault-Masking Source tSink Source t
  • 41. CopyrightPrismTech,2015 Vortex provides a built-in fault-masking mechanism that allow to replicate Sources and transparently switch over when a failure occurs At any point in time the “active” source is the one with the highest strength. Where the strength is an integer parameter controller by the user Fault-Masking Source tSink Source t
  • 42. CopyrightPrismTech,2015 Performance Device-2-Device • Peer-to-Peer Intra-core latency 
 as low as 8 µs • Peer-to-Peer latency as low as 
 30 µs • Point-to-Point throughput 
 well over 2.5M msg/sec Device-2-Cloud • Routing latency as low as 4 µs • Linear scale out • 44K* msgs/sec with a single router, 4x times more the average Tweets per second in the world (~6000 tweets/sec)! *2048 bytes message payload
  • 43. CopyrightPrismTech,2015 Introduced in 2004, Vortex is an Object Management Group (OMG) Standard for efficient, secure and interoperable, platform- and programming-language independent data sharing The Vortex Standard Vortex has been recently recommended as one of the IIoT data- sharing platform for the Industrial Internet Consortium Reference Architecture
  • 45. CopyrightPrismTech,2015 Reactive and Interactive Systems continuously interact with their environment Stimuli coming from the cyber-physical world are often represented as events to be handled by the Reactive/Interactive System - e.g. think about the event from a GUI, or the data available event in Vortex Events are often handled through some form of callbacks, such as listeners, functors, etc. This stile of event handling leads to inversion of control Dealing with Events
  • 46. CopyrightPrismTech,2015 The Inversion of Control induced by callback-based code in known to make applications brittle and harder to understand As an mental exercise, think about the call-back style code you’d have to write to in Java for drawing when the mouse is being dragged. Although the logic is simple, it is far cry from having a “declarative style” The problem of callback management, infamously known as Callback Hell, has become even more important due to the surge of Reactive Systems… Can we escape the Callback Hell? The Callback Hell
  • 47. CopyrightPrismTech,2015 Reactive Programming is a paradigm based on a relaxed form of Synchronous Dataflow Programming The Reactive Programming is built around the notion of continuous time-varying values and propagation of change Reactive Programming facilitates the declarative development of non-blocking event driven applications — in essence you express what should be done and the runtime decides when to do it Reactive Programming was popularised in the context of Functional Programming Languages by the seminal done by Elliot and Hudak in 1997 as part of Fran — a framework for composing richly interactive multimedia animations Reactive Programming
  • 48. CopyrightPrismTech,2015 There is an increasing number of Reactive Programming framework. The Rx framework introduced by Erik Meijer is becoming a reference .NET Rx Arguably the first framework that brought Reactive Programming to the masses. Available for the .NET platform ReactiveX (http://reactivex.io) An Open Source implementation of Rx for the JVM contributed by NetFlix, it supports, Java, Scala, Kotlin, Clojure, Groovy and JRuby Reactive Programming Libraries
  • 49. CopyrightPrismTech,2015 ReactiveX is a Java implementation of .NET Reactive Extensions — a library for composing asynchronous and event-based programs by using observable sequences. ReactiveX allow you to compose streams of data declaratively while abstracting away low level concerns such as threading, synchronization, concurrent data structures, and non-blocking I/O The two main concepts at the foundation of ReactiveX are Observables and Observers ReactiveX Overview
  • 50. CopyrightPrismTech,2015 ReactiveX Observables allow the composition of flows and sequences of asynchronous data You can think of Observables as some kinds of asynchronous collections that push data to you In essence an observable can be created from any synchronous or asynchronous stream of data. - you can create an observables that represents the data coming into a Vortex Data Reader, the events from a Button, or even time - you can also create an observable that represent an actual container ReactiveX Observables
  • 51. CopyrightPrismTech,2015 Observable Examples t1 2 3 val  ticks:  Observable[Long]  =  Observable.interval(1  seconds) n4 50 t1 2 3 val  evens:  Observable[Long]  =  ticks.filter(n  =>  n  %  2  ==  0) n4 50 x x x t val  bufs:  Observable[Seq[Long]]  =  evens.buffer(2,1) n0 4 6 82
  • 52. CopyrightPrismTech,2015 The Observer receives notification concerning new values, errors or the completion of the stream — e.g. no more data ReactiveX Observers trait  Observer[-­‐T]  {    def  onNext(value:  T):  Unit    def  onError(error:  Throwable):  Unit    def  onCompleted():  Unit   }
  • 53. CopyrightPrismTech,2015 Beside from the standard ReactiveX/RxScala Observable, each framework that wants to integrate with ReactiveX/RxScala has to provide its own factory methods to create observables For Vortex you have to use the DddsObservable defined as follows: Vortex Observables object  DdsObservable  {      def  fromDataReaderData[T](dr:  DataReader[T]):  Observable[T]      def  fromDataReaderEvents[T](dr:  DataReader[T]):  Observable[ReaderEvent[T]]      //  more  methods  which  we’ll  ignore  for  the  time  being   }
  • 55. CopyrightPrismTech,2015 We will use the omnipresent Shapes Application to illustrate the benefits of using Reactive Programming with Vortex Three Topics - Circle, Square, Triangle One Type: Shapes Application struct ShapeType { string color; long x; long y; long shapesize; }; #pragma keylist ShapeType color Spotted shapes represent subscriptions Pierced shapes represent publications
  • 56. CopyrightPrismTech,2015 We want to show a triangle that positioned midway between every single pair of circle and square of the same colour Problem 1: Shape in the Middle
  • 57. CopyrightPrismTech,2015 Logically Shapes Marble Diagrams t t • Conceptually, we need to select on stream, look at it one element at the time and match it with the corresponding item in the other stream • Then, we can produce the average
  • 59. CopyrightPrismTech,2015 Logically Shapes Marble Diagrams t t t x x x x P.S.: The dropping may seem a bit counter-intuitive but it is in part due to how the Vortex streams work
  • 60. CopyrightPrismTech,2015 Midpoint Triangle        val  circles  =  VortexObservable.fromDataReaderData  {              DataReader[ShapeType](Topic[ShapeType](circle))          }          val  squares  =  VortexObservable.fromDataReaderData  {              DataReader[ShapeType](Topic[ShapeType](square))          }          val  ttopic  =  Topic[ShapeType](triangle)          val  tdw  =  DataWriter[ShapeType](ttopic)          //  Compute  the  average  between  circle  and  square  of  matching  color  with  flatMap          val  triangles  =  circles.flatMap  {              c  =>  squares.dropWhile(_.color  !=  c.color).take(1).map  {                  s  =>  new  ShapeType(s.color,  (s.x  +  c.x)/2,  (s.y  +  c.y)/2,  (s.shapesize  +  c.shapesize)/4)              }          }          triangles.subscribe(tdw.write(_))  
  • 61. CopyrightPrismTech,2015 Using for-comprehension            //  Compute  the  average  between  circle  and  square  of  matching  colour  with  flatMap          val  triangles  =  circles.flatMap  {              c  =>  squares.dropWhile(_.color  !=  c.color).take(1).map  {                  s  =>  new  ShapeType(s.color,  (s.x  +  c.x)/2,  (s.y  +  c.y)/2,  (s.shapesize  +  c.shapesize)/4)              }          }              //  Compute  the  average  between  circle  and  square  of  matching  colour  with  for  comprehension          val  triangles  =  for  {                c  <-­‐  circles;                s  <-­‐  squares.dropWhile(_.color  !=  c.color).take(1)          }  yield  new  ShapeType(s.color,  (s.x  +  c.x)/2,  (s.y  +  c.y)/2,  (s.shapesize  +  c.shapesize)/4)  
  • 62. CopyrightPrismTech,2015 Count the number of times a circle bounces on the left or top border and make the number of bounces proportional to the position of a square of the same color Problem 2: Square Race
  • 63. CopyrightPrismTech,2015 Square Race val circles = DdsObservable.fromReaderData { DataReader[ShapeType](Topic[ShapeType]("Circle")) } val sdw = DataWriter[ShapeType](Topic[ShapeType]("Square")) val squares = circles.filter(s => { s.x == 0 || s.y == 0 }).map(s => { val x = xcoord(s.color) + delta xcoord(s.color) = x new ShapeType(s.color, x, ycoord(s.color), size) }) squares.subscribe(sdw.write(_))
  • 64. Big Data with Vortex and Spark
  • 65. CopyrightPrismTech,2015 Spark is a fast and general-purpose — in memory — cluster computing system that provides high-level APIs in Java, Scala and Python Spark has an optimised engine that supports general execution graphs Spark supports a rich set of higher-level tools including Spark SQL for SQL and structured data processing, MLlib for machine learning, GraphX for graph processing, and Spark Streaming Apache Spark
  • 70. CopyrightPrismTech,2015 Vortex can be used as a source or a sink for Apache Spark Streams This allows to seamlessly integrate Vortex Application with Spark … And at the same time Vortex & Spark
  • 72. CopyrightPrismTech,2015 ReactiveX Examples: - https://github.com/PrismTech/moliere-demo-rx Spark Streaming for DDS - https://github.com/kydos/spark-streaming-dds Resources