Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging...
Transcript of Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging...
![Page 1: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/1.jpg)
Distributed Applications
Software Engineering 2017 Alessio Gambi - Saarland University
Based on the work of Cesare Pautasso, Christoph Dorn, and other sources
![Page 2: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/2.jpg)
ReCap
![Page 3: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/3.jpg)
Software Architecture
A software system’s architecture is the set of principal design decisions made
about the system. N. Taylor et al.
Abstraction Communication
Visualization and Representation Quality Attributes
![Page 4: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/4.jpg)
Every system a software architecture has
What designers want
![Page 5: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/5.jpg)
Design
• Architectural Styles
• Architectural Patterns
• Building Blocks - Software Components - Component API/Interfaces - Software Connectors
![Page 6: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/6.jpg)
3-Tier Architecture
Web Browser
Front End App Server Back End
Business logic
Presentation
Data source
![Page 7: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/7.jpg)
Backend
ParserArticleEdit
ReadsWrites
ArticleViewSubmit Logic
UI Page
Skinning Localization
Static Resources
![Page 8: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/8.jpg)
Backend
Parser
ArticleEdit
Reads
Writes
ArticleView
Submit Logic
UI Page
Skinning Localization
ParserCache
Static Resources
Loader
CachedCached
Cached
Job Runner
Writes
Job Queue
HTML File Cache
Precompile/Recompile
Regenerate/Invalidate
![Page 9: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/9.jpg)
Distributed Applications
![Page 10: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/10.jpg)
Client/Server• Many clients, active, close to users
• One server, passive, close to data
• Single point of failure, scalability
• Security, scalability
![Page 11: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/11.jpg)
Distribution and LifecycleIn distributed applications the lifecycle of remote
objects is disjoint from the local ones. We must explicitly design the lifecycle of those
remote entities
![Page 12: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/12.jpg)
Distribution and LifecycleIn distributed applications the lifecycle of remote
objects is disjoint from the local ones. We must explicitly design the lifecycle of those
remote entities
Static and Lazy instances Leasing
Per-request instances Pooling
Client-dependent instances Passivation
![Page 13: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/13.jpg)
Server Process
Mac
hine
B
ound
ary
Process B
Client
Object
Server Application
n-1) shutdown
n) destroy 1) create
3) invoke
Process A
Client 2) invoke
Static Instances
Remote object instances exist independently of any clientsThey last as long as their container (server)
![Page 14: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/14.jpg)
Server Process M
achi
ne
Bou
ndar
y
Servant for Obj X
Server Application
Process A
Client 3) Invoke on Obj X Invoker
1) create
4) create
5) invoke
2) register Object “X”
Lazy Instances
Instantiate object upon first requestSave computational resources
![Page 15: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/15.jpg)
Server Process
Mac
hine
B
ound
ary
Process B
Client
Servant for Obj X
Server Application
3) Invoke on Obj X
Process A
Client 2) Invoke on Obj X Invoker
1) create Servant for Obj X
2a) create 2b) invoke 2c) destroy
3a) create 3b) invoke 3c) destroy
Per-request Instances
Each request processed by a fresh instanceProvide max logical isolation (but high cost)
![Page 16: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/16.jpg)
Server Process
Process B
Client
Object
Server Application
5a) new Instance
Process A
Client 2a) new Instance Remote
Factory
1) create Object
2b) create
5b) create
3) invoke 4) invoke
6) invoke
Client-dependent Instances
Requests from the same client processed by the same instance (but there might be a one-to-many mapping)
Remote objects extend client logic and share its state
![Page 17: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/17.jpg)
Server Process Object “X”
Lifecycle Manager
Process A
Client 4) Invoke on Obj X Invoker
3) create lease
1) Create X
4) renew lease
5) invoke
2) create
After lease expired: 6) destroy
Leasing
Avoid removal of per-client objects when not used by periodically renew the lease
![Page 18: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/18.jpg)
Pooling
Maintain a (possibly dynamic) set of generic objects to serve clients requests
Clean up state before returning to the pool
Server Process
Mac
hine
B
ound
ary
Servant for X
Server Application
Process A
Client 4) Invoke on Obj X Invoker
1) create
6) invoke
3) register pooled instance “X”
Object Pool “X”
Servant for X Servant
for X Servant for X
2) create
7) put servant back
5) get idle servant
![Page 19: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/19.jpg)
Server Process Servant for “X”
Lifecycle Manager
Process A
Client 1a,4) Invoke on Obj X Invoker
5) activate (objId)
1b,8) invoke
7a) create 7b) activate
After timeout 2a) passivate 2b) destroy
3) storeState (objId)
6) getState (objId)
Passivation
Save resources by freezing “per-client” objects
Objects are reactivated upon first request
![Page 20: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/20.jpg)
(A)SynchronizationRemote invocations can be either synchronous or asynchronous. For asynchronous invocations we must handle the evolution of the distributed
state across the nodes.
One-way Patterns Two-way Patterns
Fire and Forget Poll Object
Sync with Server Callback
![Page 21: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/21.jpg)
Process A Process B
Mac
hine
B
ound
ary
Client
Requestor Invoker 1) invoke
2b) send
2a) return
Fire and Forget
Best effort (or nobody cares) semantics
![Page 22: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/22.jpg)
Process A Process B
Client
Requestor Invoker 1) invoke
2) send
3b) return
Object 3a) reply
3c) invoke
Sync with Server
Requestor ensures that the request correctly arrived to server (but not processed)
Delivery confirmation semantics
![Page 23: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/23.jpg)
Poll Object (or Future)
Local stub on client’s machine checks if results are ready
Process A Process B
Client
Requestor Invoker 1) invoke
2) invoke
3) isAvailable = false
Poll Object
6) getResult
4) storeResult
5) isAvailable = true
![Page 24: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/24.jpg)
Callback
Execute code whenever the remote request returns
Process A Process B
Client
Requestor Invoker 2) invoke
3) invoke
Callback Object
4) finished(result)
1) create 5) execute
![Page 25: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/25.jpg)
Publish/Subscribe
• Subscription to queues or topics
• Loose coupling
![Page 26: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/26.jpg)
Pub/Sub vs Event-Driven
![Page 27: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/27.jpg)
Pub/Sub vs Event-Driven
no specific roleslocal/distributed
![Page 28: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/28.jpg)
Pub/Sub vs Event-Driven
opposite roles no specific rolesmostly distributed local/distributed
![Page 29: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/29.jpg)
Message Bus
• Publish
• Subscribe
• Notify
![Page 30: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/30.jpg)
MOMMessage-Oriented Middleware
Messaging Middleware
Sender
Receiver
Receiver
Receiver
Queue
Queue
Send Message
Receive Message
Receive Reply
Send Reply
![Page 31: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/31.jpg)
MOMMessage-Oriented Middleware
Messaging Middleware
Sender
Receiver
Receiver
Receiver
Queue
Queue
Send Message
Receive Message
Receive Reply
Send Reply
• Processing always on consumer
• Queues provide persistence and decoupling (async)
![Page 32: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/32.jpg)
Reply or don’t reply?MOMs enable both request-only and request-reply
interactions despite sender/receiver do not know each other addresses
![Page 33: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/33.jpg)
Reply or don’t reply?MOMs enable both request-only and request-reply
interactions despite sender/receiver do not know each other addresses
Uniquely identify a request message (ID)
Correlation between the requests and replies
MessageType=REQUEST|REPLY & MessageID = ID
+
=
![Page 34: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/34.jpg)
Handling Messages• Routing
Content-based, Dynamic
• Filtering Message filter
• Transforming messages Splitter, Aggregator
• Transforming messages content Normalizer, Content Enricher, Content Filter
• Transforming message envelope Envelope wrapper
![Page 35: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/35.jpg)
Content-based Routing
Destination decided using the payload
![Page 36: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/36.jpg)
Dynamic Routing
Destination not fixed but chosen using rules
![Page 37: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/37.jpg)
Message Filter
Remove un-needed messages
![Page 38: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/38.jpg)
Splitter
Decompose a composite message in parts
![Page 39: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/39.jpg)
Aggregator
Use the parts to create a composite message
![Page 40: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/40.jpg)
Content Filter
Filter from a composite message unneeded payload
![Page 41: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/41.jpg)
Content Enricher
Use additional data to augment messages
![Page 42: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/42.jpg)
Normalizer
Route messages to translators which transform the to a common format
![Page 43: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/43.jpg)
Enveloper Wrapper
Bridged delivery via wrapping messages into other messages
![Page 44: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/44.jpg)
Messaging Bridgelink multiple messaging systems to make messages
exchanged on one also available on the others
![Page 45: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/45.jpg)
Pipe & Filter
• Clean separation: filter process, pipe transport
• Heterogeneity and distribution
• Only batch processing, serializable data
• Composability, Reuse
![Page 46: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/46.jpg)
![Page 47: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/47.jpg)
Stream
• Send
• Receive
![Page 48: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/48.jpg)
Streaming
• Infinite sequence of messages simple/primitive, complex
• Discrete - Messages stock markets, twitter
• Continuous - Data video, audio
![Page 49: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/49.jpg)
Streaming Source
Streaming Sink
Streaming Sink
Streaming Sink
MW
Streaming and Data Analytics
Unicast or multicast communication channelsNo discrete unit of interaction (request/response)
Low overhead, but mostly transport/communication
![Page 50: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/50.jpg)
Sync/Async Streams
• Synchronous Time matters (e.g., minimum transfer rate)
• Asynchronous Sequence matters (e.g., no specific transfer rate)
![Page 51: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/51.jpg)
Sync/Async Streams
• Synchronous Time matters (e.g., minimum transfer rate)
• Asynchronous Sequence matters (e.g., no specific transfer rate)
• Isochronous Time is essence (e.g., both min and max transfer rate)
![Page 52: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/52.jpg)
Incoming streams
Streaming data m
Output complex messages
m3 m2 m1
… … …
s3 s2 s1
m1
…
s1
m2
…
s2
m3
…
s3 Streaming data s
Complex stream/multiple streams data processing
Application-specific data processing
Processing ModelComplex Event Processor
![Page 53: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/53.jpg)
Processing ModelComplex Event Processor
• Event representation POJO, Maps, Object-Arrays, XML, etc..
• Continuous processing events processes as they arrive and sent to output
• Listeners and notifications both incoming and outgoing events
• Domain specific languages (DSL) describe conditions, transformations, etc.
![Page 54: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/54.jpg)
EPLEvent Processing Language
https://docs.oracle.com/cd/E13157_01/wlevs/docs30/epl_guide/overview.html
Specify interests on certain types of events event-patterns, correlations of events, and more
High-level language SQL-like standard and new clauses
Streams replace tables; events replace rows it’s just an analogy
Statements target single and multiple data streams
![Page 55: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/55.jpg)
EPLEvent Processing Language
https://docs.oracle.com/cd/E13157_01/wlevs/docs30/epl_guide/overview.html
• Standard clauses SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY
• Re-casted clauses INSERT INTO
• New clauses RETAIN, MATCHING, OUTPUT
![Page 56: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/56.jpg)
EPLEvent Processing Language
• Retain virtual window (constraint amount of data)
• Matching sequence of events (logical and temporal operators)
• Output control/stabilize the output rate
![Page 57: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/57.jpg)
Event ProcessingIncoming events processed through sliding windows - incremental, one event - batched, chunks of events
Size of window limits the maximum number of events or the maximum amount of time to keep them - time - length
Conditions expressed on the window and events
![Page 58: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/58.jpg)
Sliding Window with Length
![Page 59: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/59.jpg)
Filter & Slide
![Page 60: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/60.jpg)
Slide & Filter
![Page 61: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/61.jpg)
Sliding Window with Time
![Page 62: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/62.jpg)
Batched Window with Time
![Page 63: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/63.jpg)
Service Oriented• Components outside control
• Standard connectors, precise interfaces
• Interface compatibility problem
• Loose coupling, reuse
![Page 64: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/64.jpg)
![Page 65: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/65.jpg)
![Page 66: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/66.jpg)
Components Services Tight coupling Loose coupling
Client requires library Message exchanges
Client / Server Peer-to-peer
Extendable Composable
Fast Some overhead
Small/Medium Medium/Large
Buy and install Pay-per-useLocal Remote
![Page 67: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/67.jpg)
Composition/Orchestrationbuild systems out of the composition of existing ones
![Page 68: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/68.jpg)
Business Processes
• Many alternative notations and languages WSCI, BPML, BPEL4WS, BPSS, XPDL
• Standard protocols and technologies WSDL, XML, HTTP, JSON, SMTP, FTP, …
• Two “BIG” players SOAP + WS-*, HTTP+RESTFul
![Page 69: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/69.jpg)
![Page 70: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/70.jpg)
Messaging Bridgelink multiple messaging systems to make messages
exchanged on one also available on the others
![Page 71: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/71.jpg)
Software Architecture
• Work Flow Engine
• Enterprise BUS
![Page 72: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/72.jpg)
https://www.slideshare.net/kumargaurav66/oracle-soaand-bpm
![Page 73: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/73.jpg)
Say “what what” ? In the cloud!
![Page 74: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/74.jpg)
Heavy vs LightOld vs New
![Page 75: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/75.jpg)
https://i.stack.imgur.com/WQsEJ.jpg
Application
Resource URI
HTTPGET
HTTPPOST
HTTPPUT
HTTPDEL
JSON...
Application
Endpoint URI
SMTP HTTP ...MQ
SOAP (WS-*)
Layered View
![Page 76: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/76.jpg)
http://webtechsharing.com/soap-vs-rest/
Process View
![Page 77: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/77.jpg)
Summary
• Understand the size and complexity of your system and distribute functions and data (lifecycle)
• Embrace diversity: not only RPC, not only sync
• Aim at satisfy your the requirements with the right method (different patterns/styles for different parts)
![Page 78: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message](https://reader034.fdocuments.net/reader034/viewer/2022050503/5f9553da9c3df95b1e72de99/html5/thumbnails/78.jpg)
Additional Readings- Sam Newman, Building Microservices, 2015. http://de.slideshare.net/spnewman/
principles-of-microservices-ndc-2014 - Markus Völter et al.: Remoting Patterns – Foundation of Enterprise, Internet and Realtime
Distributed Object Middleware, Wiley Series in Software Design Patterns, 2004 - Thomas Erl: Service-Oriented Architecture – Concepts, Technology and Design, Prentice
Hall, 2005 - Roy Fielding’s PhD thesis on REST: http://www.ics.uci.edu/~fielding/pubs/dissertation/
top.htm - Martin Fowler’s blog: https://martinfowler.com/ - Fay Chang et al. Bigtable: a distributed storage system for structured data. (OSDI ’06) - Eric Redmond and Jim R. Wilson: Seven Databases in Seven Weeks – A Guide to Modern
Databases and the NoSQL Movement - CAP: http://www.julianbrowne.com/article/viewer/brewers-cap-theorem - Eventual consistency: http://queue.acm.org/detail.cfm?id=1466448 - Java Message Service: http://www.oracle.com/technetwork/java/index-jsp-142945.html - Integration patterns: https://camel.apache.org/enterprise-integration-patterns.html,
http://www.espertech.com/esper/release-5.0.0/esper-reference/html_single/index.html