2 3 Tier Client/Server PCs Network c Presentation File system Operating systemPresentationProcCPCsNetworkcOperating systemOperating systemFile systemApplicationProcCDatabase
3 Why do we have distributed systems? ScalabilityHeterogeneityFault tolerance
4 Scalability Able to handle growth as it arises Without a reduction in service i.e. response timeWithout changing the codeImpliesChanging the host of processesAdding hosts
5 HeterogeneityWe know that components may be heterogeneous in several dimensionsThe hardware platformThe operating systemThe programming language in which it is written
6 Fault tolerantIf a host fails we need to transfer the work to another hostSeamlessly
7 A service request consists of three parts The name of the componentThe service to be performedThe list of parametersRequests and results are passed in messages.
8 So what do we need to do? We need To identify the host and process that can provide the serviceTo transfer messages to/from the requesting process in one host from/to the serving process in another host reliably and quicklyThe messages need to be understood – both syntax and semantics.
9 Applications will be built on HTTP – e.g. WEB services More applications will be written using HTTP as the transport protocol and XML to pass parameters betweenprocesses within an applicationapplications within an organisationand applications between organisations.This allows thin client architectures to be more feasible and make the differences between operating systems and platforms less important
10 Today we want to look at a more generalised form of distributed components –
12 We know that TCP will transport messages between processes on different hosts reliably,but we will need more than that.TCP needs the IP address and then the port numberWe need –- A protocol to find the host supporting the process- A protocol to ensure we are passing parameters understandably
13 To implement scalability and heterogeneity and fault tolerance, and to allowdevelopers to proceed without knowing theimplementation we need transparencyThere are eight layers of transparency!!(see Emmerich –Engineering Distributed Objects – page 19-27)
14 Access transparencyRequires that the interface between components on different hosts be the same as between components on the same machine.Without access transparency, components cannot easily be moved from one host to another.
15 Location transparency Requires that a component can be addressed without knowledge of the host on which the component is located.
16 Migration transparency Requires that a component can be moved from one host to another without users or designers needing to take special considerationDependent on access and location transparency
17 Replication Transparency Requires that multiple copies of the same component can be kept on the same or different hostsAnd that the user is not aware that the service is being provided by the copy not the originalAnd that when a component changes all copies are changed simultaneously
18 Concurrency transparency Requires that several components can request service from a shared component while preserving the integrity of each transaction
19 Scalability transparency Requires that it should be transparent to the designers and users of a component how scalability is to be achievedIt is achieved by replication and migration transparency
20 Performance transparency Requires that load is balanced across multiple copies of a component such that the user does not see any reduction in performance as the number of transactions processed increases
21 Failure transparencyWe know that failures are more likely to occur in a distributed environmentThis facility requires that users are unaware that a failure has occurred, that recovery occurs automatically and that transactions are rerouted to other servers and processesIf a failure occur, a transaction must not be left part processed
22 Why use the term “component” and not “object”? They may not have been written using an object oriented languageThey may not have all of the attributes of objectsThey tend to be larger in scope and carry out a significant unit of workThey are often “containers” consisting of a number of objectsEncapsulate business functions
23 Reasons for using components Code re-useAssembly of new applications from pre-built componentsSupport for heterogeneityAbility to scale
24 Distributed component requests have a lot of work to do Find the host for the process (resource discovery)Resolve data heterogeneitySynchronise client and server (parallelism)Transfer messages across the networkStart the process if it is not active (and deactivate it afterwards)Handle errorsPerhaps 2000 times more work than to invoke a process in the same language on the same host.
25 So how do we do this and maintain transparency? ProcessOn Host AProcess onHost BApplication layerMiddlewareMiddlewarePresentation &Session LayersTCP/IPNetwork & TransportLayersTCP/IPData link & Physical layers
26 Seven different approaches Load balancingTransaction oriented middlewareMessage oriented middleware (MOM)Remote Procedure Calls (RPCs)Distributed ObjectsXML, UDDI, WSDL and SOAP on the WEBGRID computing
27 More mnemonics to learn Uses XML rather than HTML to give semantic meaning to the data being exchangedUDDI (Universal Description Discovery Integration) to describe servicesWSDL (WEB Service Description Language)SOAP (Simple Object Access Protocol)