Software Architecture1 Architectural Pattern: Broker Used to structure distributed systems...

33
Software Architecture 1 Architectural Pattern: Broker • Used to structure distributed systems – decouple components that interact by remote service invocations – Responsible for coordinating communication: forwarding of requests from client to server transmission of results and exceptions • Context: distributed, heterogeneous, with independent components environment

Transcript of Software Architecture1 Architectural Pattern: Broker Used to structure distributed systems...

Page 1: Software Architecture1 Architectural Pattern: Broker Used to structure distributed systems –decouple components that interact by remote service invocations.

Software Architecture 1

Architectural Pattern: Broker

• Used to structure distributed systems– decouple components that interact by remote

service invocations– Responsible for coordinating communication:

• forwarding of requests from client to server

• transmission of results and exceptions

• Context: distributed, heterogeneous, with independent components environment

Page 2: Software Architecture1 Architectural Pattern: Broker Used to structure distributed systems –decouple components that interact by remote service invocations.

Software Architecture 2

Problem characteristics

• Building a system as a set of decoupled interacting components gains in:– flexibility– mantainability– changeability– distributability– scalability

Page 3: Software Architecture1 Architectural Pattern: Broker Used to structure distributed systems –decouple components that interact by remote service invocations.

Software Architecture 3

Problem characteristics

• Distributed components need inter-process communication

• A communication solution: – Components handle communication :

• Positive points:– Easier to build

– Can use same programming language

Page 4: Software Architecture1 Architectural Pattern: Broker Used to structure distributed systems –decouple components that interact by remote service invocations.

Software Architecture 4

Problem characteristics

• Negative points– system is dependent on communication method used

– clients need to know location of servers

– new components have to be written using same language

– components need to know such communication protocol

• Furthermore, need component services for adding, removing, exchanging, activating, locating services

– these services cannot depend on detail specifics to guarantee: portability and interoperability

Page 5: Software Architecture1 Architectural Pattern: Broker Used to structure distributed systems –decouple components that interact by remote service invocations.

Software Architecture 5

Developer’s Hint

• There should be no essential difference between developing software for centralized systems and for distributed systems

• OO applications should :– use only interface offered by objects

• OO applications should not need to know:– implementation details– object’s physical location

Page 6: Software Architecture1 Architectural Pattern: Broker Used to structure distributed systems –decouple components that interact by remote service invocations.

Software Architecture 6

Forces to balance

• Components should be able to access services provided through remote, location transparent service invocations

• Need to exchange, add, remove components at run-time

• architecture should hide system and implementation specific details from users of components and services

Page 7: Software Architecture1 Architectural Pattern: Broker Used to structure distributed systems –decouple components that interact by remote service invocations.

Software Architecture 7

Broker Pattern solution

• Design broker component to decouple clients from servers

• Servers:– Register with broker– present method interfaces to clients

• Clients– access server’s methods via broker– uses same form to call server’s methods

Page 8: Software Architecture1 Architectural Pattern: Broker Used to structure distributed systems –decouple components that interact by remote service invocations.

Software Architecture 8

Broker Pattern Solution

• Broker’s tasks– locating appropriate server– forwarding requests to server– transmitting results and exceptions to client

Page 9: Software Architecture1 Architectural Pattern: Broker Used to structure distributed systems –decouple components that interact by remote service invocations.

Software Architecture 9

Broker Pattern Solution

• Applications access distributed services:

– sending message calls to appropriate object as if in same memory space

– no need to focus on low-level inter-process communication protocol

• Broker architecture flexibility: dynamic change, addition, deletion, relocation of objects

Page 10: Software Architecture1 Architectural Pattern: Broker Used to structure distributed systems –decouple components that interact by remote service invocations.

Software Architecture 10

Broker characteristics

• Makes distribution transparent to developer

• How: Introduces distributed OO model encapsulated within the objects

• Integrates two core technologies:– distributed systems– Object technology

• An added plus: components can be written in different programming languages

Page 11: Software Architecture1 Architectural Pattern: Broker Used to structure distributed systems –decouple components that interact by remote service invocations.

Software Architecture 11

Broker Architectural Structure

• Six types of participating components:– Clients– Servers– Brokers– Bridges– Client-side proxies– Server-side proxies

Page 12: Software Architecture1 Architectural Pattern: Broker Used to structure distributed systems –decouple components that interact by remote service invocations.

Software Architecture 12

Broker Architectural Structure

• Servers kinds– library-type: offer services to many applications– application specific servers

• Server’s Objects interface:– written using an IDL or– through a binary standard*

Page 13: Software Architecture1 Architectural Pattern: Broker Used to structure distributed systems –decouple components that interact by remote service invocations.

Software Architecture 13

Broker Architectural Structure

• Clients: are applications that access servers• To call remote service:

– client forward requests to broker– broker forwards response or exception to client

• client and server model of interaction: – Dynamic: servers may also act as clients

• Contrast traditional client-server model: Static

Page 14: Software Architecture1 Architectural Pattern: Broker Used to structure distributed systems –decouple components that interact by remote service invocations.

Software Architecture 14

Broker Architectural Structure

• Broker’s role: messenger– transmits requests from clients to servers– transmits response and exceptions to client

• Broker must have means to locate server of a request based on server’s unique ID

• Brokers presents API to client and servers– to registering services (of server)– invoking servers methods (by client)

Page 15: Software Architecture1 Architectural Pattern: Broker Used to structure distributed systems –decouple components that interact by remote service invocations.

Software Architecture 15

Broker Architectural Structure

• Each client and server is hosted by a broker

• if a client makes request to local server:– broker forwards request directly to server

• if client makes request to remote server– client’s broker finds route to remote broker– forwards request on this route

• Conclusion: brokers need to interoperate

Page 16: Software Architecture1 Architectural Pattern: Broker Used to structure distributed systems –decouple components that interact by remote service invocations.

Software Architecture 16

Broker Architectural Structure

• Bridges: layer between two brokers, used to hide each side implementation details

• In particular when a Broker system is run on a heterogeneous network– two brokers have to communicate

independently of network and OS in use– Bridges encapsulate these system-specific

details

Page 17: Software Architecture1 Architectural Pattern: Broker Used to structure distributed systems –decouple components that interact by remote service invocations.

Software Architecture 17

Broker Architectural Structure

• Client-side proxies– represent layer between client and broker– layer provides transparency:

• remote objects appear local to client• there is no dependence between a client and broker

• proxies allow implementation hiding:– inter-process communication between clients and brokers

– creation and deletion of memory blocks– marshalling of parameters to broker– receives message, unmarshals results and exceptions from broker and

forwards to client

Page 18: Software Architecture1 Architectural Pattern: Broker Used to structure distributed systems –decouple components that interact by remote service invocations.

Software Architecture 18

Broker Architectural Structure

• Server-side proxies– responsible for receiving requests:

• unpacking messages

• unmarshalling parameters

• calling appropriate service

• marshalling results and exceptions to client

Page 19: Software Architecture1 Architectural Pattern: Broker Used to structure distributed systems –decouple components that interact by remote service invocations.

Software Architecture 19

Two definitions

• Marshalling– The semantic invariant conversion of data into

a machine independent format (ASN or XDR)

• Unmarshalling– performs reverse transformation

Page 20: Software Architecture1 Architectural Pattern: Broker Used to structure distributed systems –decouple components that interact by remote service invocations.

Software Architecture 20

Another definition

• Name service:– provides association between names and

objects– A name service determines which server is

associated with a given name.

Page 21: Software Architecture1 Architectural Pattern: Broker Used to structure distributed systems –decouple components that interact by remote service invocations.

Software Architecture 21

Broker Architecture: Static Diagram

Client-side Proxy

Broker

Server-side Proxy

ServerBridge

Client

Call_serverstart_taskuse_broker_API

Pack_dataunpack_datasend requestreturn

Main_event_loopupdate_repositoryregister-serviceacknoledgmentfind_serverfind_clientforward_requestforward_response

Pack_dataunpack_datacall_servicesend_response

Initializeregister_serviceenter_main_looprun_serviceuse_broker_API

Pack_dataunpack_dataforward_messagetransmit_message

Page 22: Software Architecture1 Architectural Pattern: Broker Used to structure distributed systems –decouple components that interact by remote service invocations.

Software Architecture 22

Dynamics

• Scenario I: server registers with local Broker system

– broker is started in inialization phase of system. Broker enters event loop and waits for messages

– user, or some other entity, starts server application. Server executes initialization code. Server registers with broker

– Broker receives registration request. Extracts information from message and stores in repository. Acknoledgment is sent

– Server enters main loop waiting for client requests

Page 23: Software Architecture1 Architectural Pattern: Broker Used to structure distributed systems –decouple components that interact by remote service invocations.

Software Architecture 23

Dynamics

• Scenario II: client sends synchronous request to local server.– Client app started. Client invokes remote server’s method.

– Client-side proxy packs parameters and other information in message to forward to local broker

– broker looks up location of server in repository. Server local, broker forwards message to server-side proxy.

– Server-side proxy unpacks parameters and other information. Server-side proxy invokes appropriate message on server

– after completion, server returns results to server-side proxy which packages it to broker

– broker forwards message to client-side proxy

– client-side proxy unpacks result and returns to client.

Page 24: Software Architecture1 Architectural Pattern: Broker Used to structure distributed systems –decouple components that interact by remote service invocations.

Software Architecture 24

Dynamics

• Scenario III: interaction of different brokers via bridge.– Broker receives request. Locates server in remote node. Broker

forwards request to remote broker.

– Message is passed from Broker A to Bridge A. Bridge A converts message to common protocol understood by both bridges. Bridge A transmit message to bridge B.

– Bridge B maps common protocol to Broker B format.

– Broker B performs all actions necessary when request arrives, as in scenario I.

Page 25: Software Architecture1 Architectural Pattern: Broker Used to structure distributed systems –decouple components that interact by remote service invocations.

Software Architecture 25

Implementation Issues

• Object model

– existing one

– define one

• Characteristics of object model

– object names, objects, requests, values, exceptions, supported types, type exceptions, interfaces, operations

• Component interoperability to offer

– binary standard (OLE)

– IDL (CORBA)

– Combination ( IBM’s SOM)

Page 26: Software Architecture1 Architectural Pattern: Broker Used to structure distributed systems –decouple components that interact by remote service invocations.

Software Architecture 26

Implementation Issues

• Specify Broker’s API for clients and servers

• Use proxy objects to hide implementation details from clients and servers– Client-side proxy: represents server object – Server-side proxy: represents client

Client Client-side proxy Broker

Server-side Proxy Server

Page 27: Software Architecture1 Architectural Pattern: Broker Used to structure distributed systems –decouple components that interact by remote service invocations.

Software Architecture 27

Implementation Issues

• Simultaneously design Broker– Design it into layers– Lots of more issues to consider here

• Design IDL compilers one per PL language to support.

Page 28: Software Architecture1 Architectural Pattern: Broker Used to structure distributed systems –decouple components that interact by remote service invocations.

Software Architecture 28

Implementations Available: CORBA

• CORBA defined by OMG– OO technology for distribution on heterogeneous systems

– It’s an abstract specification , not constraining underlying implementations

• CORBA basic components– Interface definition language

• Language independent

• Has a rich set of data types, and ways to define value objects

– A wire protocol: IIOP (internet interoperability object protocol) based on TCP/IP, and based on RPC

– Set of language mappings

Page 29: Software Architecture1 Architectural Pattern: Broker Used to structure distributed systems –decouple components that interact by remote service invocations.

Software Architecture 29

Implementations Available: CORBA

• CORBA components (cont.)– Portable object adapter:

• pulls request of wire, demarshalls data, forwards to proxy

• More flexible than RMI run-time and more programmer process control

– Services:• Naming

• Event service

• Transaction service

Page 30: Software Architecture1 Architectural Pattern: Broker Used to structure distributed systems –decouple components that interact by remote service invocations.

Software Architecture 30

Implementations Available: RMI/IIOP

• Uses much of RMI• Replaces RMI native protocol with IIOP protocol• Interfaces are define as in RMI:

– They use serializable objects– Extend remote interface– Throw remote exceptions

• Server is implemented differently– Does not extend UnicastRemoteObject, or Activatable, it extends

PortableRemoteObject

• Proxies are generated with rmic – with th –iiop flag to use IIOP as communication protocol

• Naming service is CORBA’s

Page 31: Software Architecture1 Architectural Pattern: Broker Used to structure distributed systems –decouple components that interact by remote service invocations.

Software Architecture 31

Implementations Available

• IBM SOM/DSOM – iteroperability: IDL and binary

– subclassing from binary patern allows to do mix-language inheritance

• Microsoft’s – OLE

– DCOM

• The Web– Browsers act as brokers, and a client uses a web-browser

– WWW servers act as service providers

Page 32: Software Architecture1 Architectural Pattern: Broker Used to structure distributed systems –decouple components that interact by remote service invocations.

Software Architecture 32

Broker Benefits

• Location transparency

• components changeability and extensibility

• Broker system portability

• Broker systems interoperability

• Reusability

Page 33: Software Architecture1 Architectural Pattern: Broker Used to structure distributed systems –decouple components that interact by remote service invocations.

Software Architecture 33

Broker Liabilities

• Restricted efficiency– due to indirection

• Lower fault tolerance– may need object replication for higher fault

tolerance