230 likes | 360 Views
What is a Distributed System?. You know when you have one … … when the failure of a computer you’ve never heard of stops you from getting any work done ( L.Lamport, ‘84 ). What is a Distributed System?.
E N D
What is a Distributed System? • You know when you have one … … when the failure of a computer you’ve never heard of stops you from getting any work done (L.Lamport, ‘84) EECE 411: Design of Distributed Software Applications
What is a Distributed System? A collection of independent computers that appears to its users as a single coherent system 1.1 • Independent hardware installations • Uniform software layer (middleware) EECE 411: Design of Distributed Software Applications
Main goals of a distributed system • Connect users and resources • Distribution transparency • Openness • Scalability EECE 411: Design of Distributed Software Applications
Goal II: Transparency Note: transparency may be set as a goal, but achieving it is a different story. EECE 411: Design of Distributed Software Applications
Transparency – discussion Observation: Aiming at full transparency may be too much: • Full transparency will cost performance • Keeping Web caches exactly up-to-date with the master copy • Immediately flushing write operations to disk for fault tolerance • Completely hiding failures of networks and nodes may be impossible (depending on assumptions and/or requirements • You cannot distinguish a slow computer from a failing one • Sometimes full transparency is not desirable from an application perspective • Users may be located in different continents; distribution is apparent and not something you want to hide EECE 411: Design of Distributed Software Applications
Goal III: Openness Openness ability to interact with or integrate services from other open systems, irrespective of the underlying environment: Achieving openness: Standard rules (protocols/interfaces) to describe services/components • Interface definitions should be: • Complete • Neutral • These help making system/services interoperable & portable At least make the distributed system independent from heterogeneityof the underlying environment: • Hardware • Platforms • Languages EECE 411: Design of Distributed Software Applications
Separating policy and mechanism Managing complexity: split the systems in smaller components. • Components controlled by policies specified by applications and users • Example – web browser caching; • Mechanism: caching infrastructure • Policy: what to cache, how large the cache is, cache replacement algorithms Other examples: • What operations do we allow downloaded code to perform? • What level of secrecy do we require for communication? Achieving openness:Ideally, the (distributed) system provides only the mechanisms (and a way to specify policies) EECE 411: Design of Distributed Software Applications
Middleware and Interoperability Interoperability provided by: • Protocols used by each middleware layer • Interfaces offered to applications • Independent hardware installations • Uniform software layer (middleware) EECE 411: Design of Distributed Software Applications
Goal IV: Scalability Observation: Many developers easily use the adjective “scalable” without making clear whytheir system actually scales. • System should be able to grow over multiple axes: • size (#user, #resources), geographical distribution, maintainability EECE 411: Design of Distributed Software Applications
Scaling Techniques (1) 1.4 Technique: Offload work to clients EECE 411: Design of Distributed Software Applications
Scaling Techniques (2) Technique: Hide communication latency • Make use of asynchronous communication • Have separate handler for incoming response Problem: not every application fits this model EECE 411: Design of Distributed Software Applications
Scaling Techniques (3) 1.5 Technique: Divide the problem space. • example: the way DNS divides the name space into zones. EECE 411: Design of Distributed Software Applications
Scaling Techniques (4) Replication/caching: Make copies of data available at different machines: • Replicated file servers and databases • Mirrored Web sites • Web caches (in browsers and proxies) • File caching (at server and client) EECE 411: Design of Distributed Software Applications
Scaling: The problem Applying scaling techniques is easy, except for one thing: • Having multiple copies (cached or replicated), leads to inconsistencies: modifying one copy makes that copy different from the rest. • Always keeping copies consistent (and in a generic way) requires global synchronizationon each modification. • This precludes large-scale solutions. EECE 411: Design of Distributed Software Applications
Summary so far: (primary) goals of a distributed system • Connect users and resources • Distribution transparency • Openness • Scalability EECE 411: Design of Distributed Software Applications
Developing distributed systems: Pitfalls Observation: Many distributed systems are needlessly complex • caused by mistakes that required patching later on. Many possible false assumptions: • The network is reliable • The network is secure • The network is homogeneous • The topology does not change • Latency is zero • Bandwidth is infinite • Transport cost is zero • There is one administrator EECE 411: Design of Distributed Software Applications
Middleware 1-22 EECE 411: Design of Distributed Software Applications
Architecture styles: Client/server Model: • Server: process implementing a certain service • Client: uses the service buy sending a request and waiting for the reply Main problem to deal with: unreliable communication Note: often both roles simultaneously for different services EECE 411: Design of Distributed Software Applications
Architectural styles: Layered style EECE 411: Design of Distributed Software Applications
Architectural styles: Layered style example • Layered style: three-layer (tier) architecture commonly used in many internet based applications today General organization of an Internet search engine into three different layers 1-28 EECE 411: Design of Distributed Software Applications
Architectural styles: Object based Idea: Organize into logically differentcomponents, and subsequently distribute those components over the various machines. object-based style EECE 411: Design of Distributed Software Applications
More architectural styles Alternatives:Decouple processes in space(“anonymous”) and/or time(“asynchronous”) Event-based Data-centered architectures EECE 411: Design of Distributed Software Applications
Summary so far: • Definition of distributed systems • collection of independent components that appears to its users as a single coherent system • Goals, pitfalls, scalability techniques, architecture styles Requirement: Components need to communicate • Shared memory • Message exchange • need to agree on many things • Protocols: data formats, exception handling, naming, … EECE 411: Design of Distributed Software Applications