+ All Categories
Home > Documents > Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging...

Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging...

Date post: 06-Aug-2020
Category:
Upload: others
View: 1 times
Download: 0 times
Share this document with a friend
78
Distributed Applications Software Engineering 2017 Alessio Gambi - Saarland University Based on the work of Cesare Pautasso, Christoph Dorn, and other sources
Transcript
Page 1: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message

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

ReCap

Page 3: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

(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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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
Page 47: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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
Page 65: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message
Page 66: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message

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

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

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
Page 70: Distributed Applications - Universität des Saarlandes · Message-Oriented Middleware Messaging Middleware Sender Receiver Receiver Receiver Queue Queue Send Message Receive Message

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

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://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

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

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://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

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

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

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


Recommended