EECE 411: Design of Distributed Software Applications What is a Distributed System? You know when you have one … … when the failure of a computer you’ve.

Slides:



Advertisements
Similar presentations
Distributed Computing Systems Overview of Distributed Systems Andrew Tanenbaum and Marten van Steen, Distributed Systems – Principles and Paradigms, Prentice.
Advertisements

Jaringan Informasi Pengantar Sistem Terdistribusi oleh Ir. Risanuri Hidayat, M.Sc.
Tanenbaum & Van Steen, Distributed Systems: Principles and Paradigms, 2e, (c) 2007 Prentice-Hall, Inc. All rights reserved DISTRIBUTED SYSTEMS.
Definition of a Distributed System (1) A distributed system is: A collection of independent computers that appears to its users as a single coherent system.
Distributed components
EECE 411: Design of Distributed Software Applications What is a Distributed System? You know when you have one … … when the failure of a computer you’ve.
CS 582 / CMPE 481 Distributed Systems Communications.
REK’s adaptation of Prof. Claypool’s adaptation of
Based on last years lecture notes, used by Juha Takkinen.
CS4513 Distributed Computer Systems Introduction (Ch 1: , )
Fall 2007cs4251 Distributed Computing Umar Kalim Dept. of Communication Systems Engineering 31/10/2007.
Introducing … Distributed Systems.
EEC-681/781 Distributed Computing Systems Lecture 3 Wenbing Zhao Department of Electrical and Computer Engineering Cleveland State University
1 Introduction Chapter 1. 2 Definition of a Distributed System (1) A distributed system is: A collection of independent computers that appears to its.
Tutorials 1 1.What is the definition of a distributed system? 1.A distributed system is a collection of independent computers that appears to its users.
Lecture 8 Epidemic communication, Server implementation.
DISTRIBUTED COMPUTING
Dr. Kalpakis CMSC621 Advanced Operating Systems Introduction.
Massively Distributed Database Systems Spring 2014 Ki-Joune Li Pusan National University.
CS-495 Distributed Systems Fabián E. Bustamante, Winter 2004 Communication Networking RPC and Relatives Distributed Objects Message- & Stream-Oriented.
Tanenbaum & Van Steen, Distributed Systems: Principles and Paradigms, 2e, (c) 2007 Prentice-Hall, Inc. All rights reserved DISTRIBUTED SYSTEMS.
Distributed (Operating) Systems -Introduction- 1 Computer Engineering Department Distributed Systems Course Asst. Prof. Dr. Ahmet Sayar Kocaeli University.
Introduction Chapter 1. Definition of a Distributed System A distributed system [Tannenbaum & Steen] can be defined as a collection of independent computers.
Presentation on Osi & TCP/IP MODEL
Introduction to DISTRIBUTED SYSTEMS Tran, Van Hoai Department of Systems & Networking Faculty of Computer Science & Engineering HCMC University of Technology.
A brief overview about Distributed Systems Group A4 Chris Sun Bryan Maden Min Fang.
Tanenbaum & Van Steen, Distributed Systems: Principles and Paradigms, 2e, (c) 2007 Prentice-Hall, Inc. All rights reserved DISTRIBUTED.
DISTRIBUTED SYSTEMS Principles and Paradigms Second Edition ANDREW S
Advanced Operating Systems Welcome to this course, in Fall Semester Main TextBooks 1- Tanenbaum’s book 2- Chow’s Book 3- Singhal’s Book Other extra.
Distributed Systems Principles and Paradigms
Distributed Systems: Principles and Paradigms Chapter 01 Introduction.
Distributed Systems Principles and Paradigms Chapter 02 Communication 00 – 1.
Introduction. Outline Definitions Examples Hardware concepts Software concepts Readings: Chapter 1.
Introduction. Outline r Definitions r Challenges r Examples to Illustrate Challenges r Goals in Application Development r Summary.
Introduction to DISTRIBUTED COMPUTING Tran, Van Hoai Department of Systems & Networking Faculty of Computer Science & Engineering HCMC University of Technology.
Types of Operating Systems
Advanced Computer Networks Topic 2: Characterization of Distributed Systems.
OS2- Sem ; R. Jalili Introduction Chapter 1.
Kyung Hee University 1/41 Introduction Chapter 1.
DISTRIBUTED COMPUTING Introduction Dr. Yingwu Zhu.
Distributed Computing Systems CSCI 4780/6780. Distributed System A distributed system is: A collection of independent computers that appears to its users.
1- Distributed Systems Principles and Paradigms Operating Systems: Concurrent and Distributed Software Design Jean Bacon, Tim Harris 2003.
Distributed Computing Systems CSCI 4780/6780. Geographical Scalability Challenges Synchronous communication –Waiting for a reply does not scale well!!
9 Systems Analysis and Design in a Changing World, Fourth Edition.
Distributed Information Systems. Motivation ● To understand the problems that Web services try to solve it is helpful to understand how distributed information.
Tanenbaum & Van Steen, Distributed Systems: Principles and Paradigms, 2e, (c) 2007 Prentice-Hall, Inc. All rights reserved DISTRIBUTED SYSTEMS.
CORBA1 Distributed Software Systems Any software system can be physically distributed By distributed coupling we get the following:  Improved performance.
Distributed database system
OS2- Sem1-83; R. Jalili Introduction Chapter 1. OS2- Sem1-83; R. Jalili Definition of a Distributed System (1) A distributed system is: A collection of.
Distributed Systems: Principles and Paradigms By Andrew S. Tanenbaum and Maarten van Steen.
Definition of a Distributed System (1) A distributed system is: A collection of independent computers that appears to its users as a single coherent system.
Types of Operating Systems 1 Computer Engineering Department Distributed Systems Course Assoc. Prof. Dr. Ahmet Sayar Kocaeli University - Fall 2015.
Distributed Computing Systems CSCI 6900/4900. Review Distributed system –A collection of independent computers that appears to its users as a single coherent.
Introduction Chapter 1. Definition of a Distributed System (1) A distributed system is: A collection of independent computers that appears to its users.
Distributed Computing Systems CSCI 4780/6780. Scalability ConceptExample Centralized servicesA single server for all users Centralized dataA single on-line.
Tanenbaum & Van Steen, Distributed Systems: Principles and Paradigms, 2e, (c) 2007 Prentice-Hall, Inc. All rights reserved DISTRIBUTED SYSTEMS.
1 Distributed Processing Chapter 1 : Introduction.
第 1 讲 分布式系统概述 §1.1 分布式系统的定义 §1.2 分布式系统分类 §1.3 分布式系统体系结构.
TEXT: Distributed Operating systems A. S. Tanenbaum Papers oriented on: 1.OS Structures 2.Shared Memory Systems 3.Advanced Topics in Communications 4.Distributed.
Primitive Concepts of Distributed Systems Chapter 1.
Distributed Systems Architecure. Architectures Architectural Styles Software Architectures Architectures versus Middleware Self-management in distributed.
Introduction Chapter 1. Definition of a Distributed System (1) A distributed system is: A collection of independent computers that appears to its users.
Definition of Distributed System
Advanced Operating Systems
Introduction To Distributed Systems
DISTRIBUTED SYSTEMS Principles and Paradigms Second Edition ANDREW S
Presentation transcript:

EECE 411: Design of Distributed Software Applications 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) a collection of independent computers that appears to its users as a single coherent system

EECE 411: Design of Distributed Software Applications Independent hardware installations Uniform software layer (middleware) Note: the middleware layer extends over multiple machines 1.1

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 Transparency in a Distributed System TransparencyDescription AccessHide differences in data representation and resource access LocationHide where a resource is located MigrationHide that a resource may move to another location RelocationHide that a resource may migrate while in use ReplicationHide that a resource may have multiple copies Concurrency Hide that a resource may be shared by several competing users FailureHide the failure and recovery of a resource 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: Users may be located in different continents; distribution is apparent and not something you want to hide Completely hiding failures of networks and nodes is (theoretically and practically) impossible – You cannot distinguish a slow computer from a failing one – You can never be sure that a server actually performed an operation before a crash Full transparency will cost performance, exposing the fact that the system is distributed – Keeping Web caches exactly up-to-date with the master copy – Immediately flushing write operations to disk for fault tolerance Sometimes full transparency is not desirable from an application perspective

EECE 411: Design of Distributed Software Applications Openness Goal: Open distributed system -- able to interact with services from other open systems, irrespective of the underlying environment: Standard rules (protocols/interfaces) to describe services/components Interface definitions should be: Complete Neutral These help making system/services interoperable & portable Achieving openness: At least make the distributed system independent from heterogeneity of the underlying environment: Hardware Platforms Languages

EECE 411: Design of Distributed Software Applications Separating policy and mechanism To achieve flexibility: split the systems in smaller components. Components controlled 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? Implementing 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 Scalability Example Centralized servicesA single server for all users Centralized dataA single on-line telephone book Centralized algorithmsDoing routing based on complete information Observation: Many developers of existing distributed systems easily use the adjective “scalable” without making clear why their 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 latencies 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 synchronization on 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 (II): object based Idea: Organize into logically different components, and subsequently distribute those components over the various machines. object-based style

EECE 411: Design of Distributed Software Applications Architectural styles (III) Alternatives: Decouple processes in space (“anonymous”) and/or time (“asynchronous”) Event-basedData-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 Layered Protocols Layers, interfaces, and protocols in the OSI model. 2-1

EECE 411: Design of Distributed Software Applications Layered Protocols (2) A typical message as it appears on the network. 2-2

EECE 411: Design of Distributed Software Applications Low-level layers Physical layer: contains the specification and implementation of bits, and their transmission between sender and receiver Data link layer: prescribes the transmission of a series of bits into a frame to allow for error and flow control Network layer: describes how packets in a network of computers are to be routed. Note: for many distributed systems, the lowest level interface is that of the network layer.

EECE 411: Design of Distributed Software Applications Transport Layer The transport layer provides the actual communication facilities for most distributed systems. Standard Internet protocols TCP: connection-oriented, reliable, stream-oriented communication UDP: unreliable (best-effort) datagram communication

EECE 411: Design of Distributed Software Applications TCP for client server a) Normal operation of TCP. b) Transactional TCP. 2-4

EECE 411: Design of Distributed Software Applications Middleware Protocols Middleware provides common services and protocols that can be used by many different applications: (Un)marshaling of data, necessary for integrating systems Naming protocols so that different applications can easily share resources Security protocols to allow different applications to communicate in a secure way Scaling mechanisms such as support for replication and caching

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, …