Middleware
Middleware
Middleware
Middleware
Introduction to Middleware I
What is Middleware? Layer between OS and distributed applications Hides complexity and heterogeneity of distributed system Bridges gap between low-level OS communications and programming language abstractions Provides common programming abstraction and infrastructure for distributed applications Overview at: http://www.middleware.org
Middleware
OperatingSystem SystemComms Comms Operating Operating System Comms Network Network Network
Middleware
(remote calls, object invocation, messages, ) (sockets, IP, TCP, UDP, ) (packets, bits, )
2
Introduction to Middleware II
Middleware provides support for (some of):
Naming, Location, Service discovery, Replication Protocol handling, Communication faults, QoS Synchronisation, Concurrency, Transactions, Storage Access control, Authentication
Middleware dimensions:
Request/Reply Language-specific Proprietary Small-scale Tightly-coupled vs. vs. vs. vs. vs. Asynchronous Messaging Language-independent Standards-based Large-scale Loosely-coupled components
3 Middleware
Outline
Part I: Remote Procedure Call (RPC)
Historic interest, but still ubiquitous
RPC Service
4) Unmarshal 5) Record ID 6) Marshal 7) Set timer
Remote Function
call()
fun()
5 Middleware
Properties of RPC
Language-level pattern of function call
easy to understand for programmer
Middleware
Maybe or at most once (RPC system tries once) Error return programmer may retry Exactly once (RPC system retries a few times) Hard error return some failure most likely note that exactly once cannot be guaranteed
7 Middleware
Disadvantages of RPC
Synchronous request/reply interaction
tight coupling between client and server client may block for a long time if server loaded leads to multi-threaded programming at client fork() slow/failed clients may delay servers when replying multi-threading essential at servers
remote call
Distribution Transparency
Not possible to mask all problems
join()
8 Middleware
OOM
object request broker / object manager
OOM
object request broker / object manager
remote
skeleton object B
proxy object B
Middleware
object B
Properties of OOM
Support for object-oriented programming model
objects, methods, interfaces, encapsulation, exceptions (were also in some RPC systems e.g. Mayflower)
Location Transparency
system (ORB) maps object references to locations
RMI compiler creates proxies and skeletons RMI registry used for interface lookup Entire system written in Java (single-language system; other languages can be made to work with varying amounts of pain)
11 Middleware
CORBA
Common Object Request Broker Architecture
Open standard by the OMG (Version 3.0) Language- and platform independent
Interface Repository
Querying existing remote interfaces
Implementation Repository
Activating remote objects on demand
12 Middleware
CORBA IDL
Definition of language-independent remote interfaces
Language mappings to C++, Java, Smalltalk, Translation by IDL compiler
Type system
typedef sequence<string> Files; basic types: long (32 bit), interface PrintService : Server { long long (64 bit), short, void print(in Files printJob); float, char, boolean, }; octet, any, constructed types: struct, union, sequence, array, enum objects (common super type Object)
Parameter passing
in, out, inout basic & constructed types passed by value objects passed by reference
13 Middleware
Trading Service
Attributes (properties) remote object references
Transaction Service
Making object invocation part of transactions
Disadvantages of OOM
Synchronous request/reply interaction only
So CORBA oneway semantics added and Asynchronous Method Invocation (AMI) But implementations may not be loosely coupled
15 Middleware
OOM experience
Keynote address at Middleware 2009 Steve Vinoski From Middleware Implementor to Middleware User (There and back again)
Reflective Middleware
Flexible middleware (OOM) for mobile and context-aware applications adaptation to context through monitoring and substitution of components Interfaces for reflection
Objects can inspect middleware behaviour
17 Middleware
message queues
Network
Network
Network
18
Middleware
Properties of MOM
Asynchronous interaction
Client and server are only loosely coupled Messages are queued Good for application integration
19 Middleware
IBM WebSphere MQ
One-to-one reliable message passing using queues
Persistent and non-persistent messages Message priorities, message notification
Queue Managers
Responsible for queues Transfer messages from input to output queues Keep routing tables
Message Channels
Reliable connections between queue managers
Messaging API:
Open a queue Close a queue Put message into opened queue Get message from local queue
20
Middleware
Middleware
JMS Server implements JMS API JMS Clients connect to JMS servers Java objects can be serialised to JMS messages A JMS interface has been provided for MQ pub/sub (one-to-many) - just a specification?
21
Disadvantages of MOM
Poor programming abstraction (but has evolved)
Rather low-level Request/reply difficult to achieve, but can be done
22 Middleware
Web Services
Use well-known web standards for distributed computing Communication Message content expressed in XML Simple Object Access Protocol (SOAP)
Lightweight protocol for sync/async communication
WSDL says how to use a web service UDDI helps to find the right web service
Exports SOAP API for access
24 Middleware
No location transparency
25 Middleware
Location transparency
anonymity of communicating entities
26 Middleware
Event Service
publish
(event-broker network)
publish
27 Middleware
28 Middleware
Properties of Publish/Subscribe
Asynchronous communication
Publishers and subscribers are loosely coupled
29 Middleware
Event Patterns
PrinterOutOfPaperEvent or PrinterOutOfTonerEvent
Subscriber
Subscriber
30
Summary
Middleware is an important abstraction for building distributed systems 1. 2. 3. 4.
Middleware
Synchronous vs. asynchronous communication Scalability, many-to-many communication Language integration Ubiquitous systems, mobile systems
31