400 likes | 626 Views
Introduction to Distributed Systems Slides for CSCI 3171 Lectures E. W. Grundke. References. A. Tanenbaum and M. van Steen (TvS) Distributed Systems: Principles and Paradigms Prentice-Hall 2002 G. Coulouris, J. Dollimore and T. Kindberg (CDK) Distributed System: Concepts and Design
E N D
Introduction to Distributed Systems Slides for CSCI 3171 Lectures E. W. Grundke
References • A. Tanenbaum and M. van Steen (TvS) • Distributed Systems: Principles and Paradigms • Prentice-Hall 2002 • G. Coulouris, J. Dollimore and T. Kindberg (CDK) • Distributed System: Concepts and Design • Addison-Wesley 2001 • Acknowledgment: Some slides from • TvS: http://www.prenhall.com/divisions/esm/app/author_tanenbaum/custom/dist_sys_1e/ • CDK: http://www.cdk3.net/ig/beida/index.html
What is a Distributed System? • A collection of independent computers that appears to its users as a single coherent system. • Examples: • Distributed object-based systems (CORBA, DCOM)Distributed file systems (NFS)etc. TvS 1.2
Heterogeneity • Applies to all of the following: • networks • Internet protocols mask the differences between networks • computer hardware • e.g. data types such as integers can be represented differently • operating systems • e.g. the API to IP differs from one OS to another • programming languages • data structures (arrays, records) can be represented differently • implementations by different developers • they need agreed standards so as to be able to interwork CDK Ch. 1.4
Transparency in a Distributed System Different forms of transparency in a distributed system. TvS 1.4
Layered Protocols: IP • Layers, interfaces, and protocols in the OSI model.
Layered Protocols: OSI • Layers, interfaces, and protocols in the OSI model. 2-1 TvS 2.2
Middleware Protocols • An adapted reference model for networked communication. 2-5 TvS 2.6
Middleware • A software layer that • masks the heterogeneity of systems • provides a convenient programming abstraction • provides protocols for providing general-purpose services to more specific applications, eg. • authentication protocols • authorization protocols • distributed commit protocols • distributed locking protocols • high-level communication protocols • remote procedure calls (RPC) • remote method invocation (RMI)
Middleware • General structure of a distributed system as middleware. 1-22 TvS 1.24
Middleware and Openness • In an open middleware-based distributed system, the protocols used by each middleware layer should be the same, as well as the interfaces they offer to applications. 1.23 TvS 1.25
Middleware programming models • Remote Calls • remote Procedure Calls (RPC) • distributed objects and Remote Method Invocation (RMI) • eg. Java RMI • Common Object Request Broker Architecture (CORBA) • cross-language RMI • Other programming models • remote event notification • remote SQL access • distributed transaction processing CDK Ch 1
External Data Representation See Coulouris, Dollimore and Kindberg (CDK), Sec. 4.3
Motivation • Data in running programs:Not just primitives, but arrays, pointers, lists, trees, etc. • In general: complex graphs of interconnected structures or objects • Data being transmitted: • Sequential! Pointers make no sense. Structures must be flattened. • All the heterogeneities must be masked! (endian, binary formats, etc.) CDK 4.3
Motivation • Data in running programs:Not just primitives, but arrays, pointers, lists, trees, etc. • In general: complex graphs of interconnected structures or objects • Data being transmitted: • Sequential! Pointers make no sense. Structures must be flattened. • All the heterogeneities must be masked! (endian, binary formats, etc.) CDK 4.3
What is an External Data Representation? • “An agreed standard for the representation of data structures and primitive values.” • Internal to external: “marshalling” • External to internal: “unmarshalling” • Examples: • CORBA’s Common Data Representation (CDR)Java Object SerializationSun XDR (RFC 1832)
CORBA CDR • Defined in CORBA 2.0 in 1998 • Primitive types: • Standard data types, both big/little endian, conversion by the receiver. • Constructed types: • sequence, string, array, struct, enumerated, union • (not objects) • Data types are not specified in the external format: receiver is assumed to have access to the definition (via IDL). • (unlike Java Object Serialization!) CDK 4.3
CORBA CDR • only defined in CORBA 2.0 in 1998, before that, each implementation of CORBA had an external data representation, but they could not generally work with one another. That is: • the heterogeneity of hardware was masked • but not the heterogeneity due to different programmers (until CORBA 2) • CORBA CDR represents simple and constructed data types (sequence, string, array, struct, enum and union) • note that it does not deal with objects • it requires an IDL specification of data to be serialised CDK 4.3
CORBA CDR Example Index in sequence 4 bytes wide Notes of bytes • The flattened form represents a Person struct with value:{”Smith”, ”London”, 1934} CDK 4.3
What is RPC? • Call a procedure (function, subroutine, method, …) • in a program • running on a remote machine, • while hiding communication details from the programmer. • Note: Think C, not java! We deal with objects later!
Conventional Procedure Call • Parameter passing in a local procedure call: the stack before the call to read • The stack while the called procedure is active TvS 2.7
Parameter Passing Techniques • Call-by-value • Call-by-reference • Call-by-copy/restore
Client and Server Stubs • Principle of RPC between a client and server program. TvS 2.8
Steps of a Remote Procedure Call • Client procedure calls client stub in normal way • Client stub builds message, calls local OS • Client's OS sends message to remote OS • Remote OS gives message to server stub • Server stub unpacks parameters, calls server • Server does work, returns result to the stub • Server stub packs it in message, calls local OS • Server's OS sends message to client's OS • Client's OS gives message to client stub • Stub unpacks result, returns to client TvS 2.9
Passing Value Parameters • Steps involved in doing remote computation through RPC 2-8 TvS 2.10
Passing Value Parameters:Data Representation Issues • Original message on the Pentium • The message after receipt on the SPARC • The message after being inverted. The little numbers in boxes indicate the address of each byteBUT: This is not usually a problem with strings! (E.W.G.) TvS 2.11
Parameter Specification and Stub Generation • A procedure • The corresponding message. TvS 2.12
Passing Reference Parameters • Reference variables (pointers):pointers to arrayspointers to structures (objects without methods) • What if the structure contains other pointers? • The server may need a whole “graph” of structures! • “Parameter marshalling” • Interface Definition Language (IDL): • Specifies types, constants, procedures and parameter data types,compiled into client and server stubs.
Asynchronous RPC • The interconnection between client and server in a traditional RPC • The interaction using asynchronous RPC 2-12 TvS 2.14
Asynchronous RPC:Deferred Synchronous RPC • A client and server interacting through two asynchronous RPCs TvS 2.15
Distributed Computing Environment (DCE) • A middleware system • Developed by The Open Group (previously OSF) • Includes • distributed file servicedirectory servicesecurity servicedistributed time service • Adopted by Microsoft for distributed computing
DCE: Binding a Client to a Server 2-15 TvS 2.17
What is RMI? • RPC to a method in an object on another machine. • Note: Now think Java!
Object Orientation:Remote Method Invocation (RMI) • An object encapsulates • State (fields or instance variables) • Methods (often described by an interface) • Distributed object: • An interface known locally may describe an object on another machine.
Distributed Objects • Common organization of a remote object with client-side proxy. 2-16 TvS 2.18
Binding a Client to an Object • An example with implicit binding using only global references • An example with explicit binding using global and local references Distr_object* obj_ref; //Declare a systemwide object referenceobj_ref = …; // Initialize the reference to a distributed objectobj_ref-> do_something(); // Implicitly bind and invoke a method (a) Distr_object objPref; //Declare a systemwide object referenceLocal_object* obj_ptr; //Declare a pointer to local objectsobj_ref = …; //Initialize the reference to a distributed objectobj_ptr = bind(obj_ref); //Explicitly bind and obtain a pointer to the local proxyobj_ptr -> do_something(); //Invoke a method on the local proxy (b) TvS 2.19
Parameter Passing • The situation when passing an object by reference or by value. 2-18 TvS 2.20
The DCE Distributed-Object Model • Distributed dynamic objects in DCE. • Distributed named objects TvS 2.21