distrSys

advertisement
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
2
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
3
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
4
Transparency in a Distributed System
Transparency
Description
Access
Hide differences in data representation and how a
resource is accessed
Location
Hide where a resource is located
Migration
Hide that a resource may move to another location
Relocation
Hide that a resource may be moved to another
location while in use
Replication
Hide that a resource may be shared by several
competitive users
Concurrency
Hide that a resource may be shared by several
competitive users
Failure
Hide the failure and recovery of a resource
Persistence
Hide whether a (software) resource is in memory or
on disk
Different forms of transparency in a distributed system.
TvS 1.4
5
Layered Protocols: IP
Layers, interfaces, and protocols in the OSI model.
6
Layered Protocols: OSI
Layers, interfaces, and protocols in the OSI model.
2-1
TvS 2.2
7
Middleware Protocols
2-5
An adapted reference model for networked communication.
TvS 2.6
8
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)
9
Middleware
General structure of a distributed system as middleware.
1-22
TvS 1.24
10
Middleware and Openness
1.23
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.
TvS 1.25
11
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
12
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
14
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
15
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 Serialization
Sun XDR (RFC 1832)
16
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
17
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
18
CORBA CDR Example
Index in sequence
of bytes
4 bytes wide
Notes
0-3
5
Length of string
4-7
”Smit”
“Smith”
8-11
”h____”
12-15
6
Length of string
16-19
”Lond”
“London”
20-23
”on__”
24-27
1934
Unsigned long
The flattened form represents a Person struct with value:
{”Smith”, ”London”, 1934}
CDK 4.3
19
Remote Procedure Calls
(RPC)
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!
21
Conventional Procedure Call
a)
b)
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
22
Parameter Passing Techniques
Call-by-value
Call-by-reference
Call-by-copy/restore
23
Client and Server Stubs
Principle of RPC between a client and server program.
TvS 2.8
24
Steps of a Remote Procedure Call
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
TvS 2.9
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
25
Passing Value Parameters
Steps involved in doing remote computation through RPC
2-8
TvS 2.10
26
Passing Value Parameters:
Data Representation Issues
a)
b)
c)
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 byte
BUT: This is not usually a problem with strings! (E.W.G.)
TvS 2.11
27
Parameter Specification and Stub
Generation
a)
b)
TvS 2.12
A procedure
The corresponding message.
28
Passing Reference Parameters
Reference variables (pointers):
pointers to arrays
pointers 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.
29
Asynchronous RPC
2-12
a)
b)
TvS 2.14
The interconnection between client and server in a traditional RPC
The interaction using asynchronous RPC
30
Asynchronous RPC:
Deferred Synchronous RPC
A client and server interacting through two asynchronous RPCs
TvS 2.15
31
Distributed Computing Environment (DCE)
A middleware system
Developed by The Open Group (previously OSF)
Includes
distributed file service
directory service
security service
distributed time service
Adopted by Microsoft for distributed computing
32
DCE: Binding a Client to a Server
2-15
TvS 2.17
33
Remote Method Invocation
(RMI)
What is RMI?
RPC to a method in an object on another machine.
Note: Now think Java!
35
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.
36
Distributed Objects
Common organization of a remote object with client-side proxy.
2-16
TvS 2.18
37
Binding a Client to an Object
Distr_object* obj_ref;
obj_ref = …;
obj_ref-> do_something();
//Declare a systemwide object reference
// Initialize the reference to a distributed object
// Implicitly bind and invoke a method
(a)
Distr_object objPref;
Local_object* obj_ptr;
obj_ref = …;
obj_ptr = bind(obj_ref);
obj_ptr -> do_something();
//Declare a systemwide object reference
//Declare a pointer to local objects
//Initialize the reference to a distributed object
//Explicitly bind and obtain a pointer to the local proxy
//Invoke a method on the local proxy
(b)
a)
b)
TvS 2.19
An example with implicit binding using only global references
An example with explicit binding using global and local references
38
Parameter Passing
The situation when passing an object by reference or by value.
2-18
TvS 2.20
39
The DCE Distributed-Object Model
a)
b)
TvS 2.21
Distributed dynamic objects in DCE.
Distributed named objects
40
Download