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.
4/27/2015Slide 1 Rethinking the design of the Internet: The end to end arguments vs. the brave new world Marjory S. Blumenthal Computer Science and Telecomms.
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
REK’s adaptation of Prof. Claypool’s adaptation of
Based on last years lecture notes, used by Juha Takkinen.
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
Distributed Information Systems - The Client server model
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.
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.
.NET Mobile Application Development Introduction to Mobile and Distributed Applications.
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.
Tanenbaum & Van Steen, Distributed Systems: Principles and Paradigms, 2e, (c) 2007 Prentice-Hall, Inc. All rights reserved DISTRIBUTED SYSTEMS.
Introduction Chapter 1. Definition of a Distributed System A distributed system [Tannenbaum & Steen] can be defined as a collection of independent computers.
Tanenbaum & Van Steen, Distributed Systems: Principles and Paradigms, 2e, (c) 2007 Prentice-Hall, Inc. All rights reserved DISTRIBUTED SYSTEMS.
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.
SAMANVITHA RAMAYANAM 18 TH FEBRUARY 2010 CPE 691 LAYERED APPLICATION.
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.
Architectures of distributed systems Fundamental Models
Distributed Software Engineering Lecture 1 Introduction Sam Malek SWE 622, Fall 2012 George Mason University.
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!!
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.
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.
Tanenbaum & Van Steen, Distributed Systems: Principles and Paradigms, 2e, (c) 2007 Prentice-Hall, Inc. All rights reserved DISTRIBUTED SYSTEMS.
Distributed Systems Architecure. Architectures Architectural Styles Software Architectures Architectures versus Middleware Self-management in distributed.
Definition of Distributed System
#01 Client/Server Computing
Advanced Operating Systems
Distributed Systems Bina Ramamurthy 11/30/2018 B.Ramamurthy.
Distributed Systems Bina Ramamurthy 12/2/2018 B.Ramamurthy.
Distributed Systems Bina Ramamurthy 4/22/2019 B.Ramamurthy.
Introduction To Distributed Systems
DISTRIBUTED SYSTEMS Principles and Paradigms Second Edition ANDREW S
#01 Client/Server Computing
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)

The network is reliable Latency is zero [verizon monitoring data]data Bandwidth is infinite Transport cost is zero The network is secure The topology does not change There is one administrator The network is homogeneous [aka Peter Deutsch’s “8 fallacies”] [link]link Developing distributed systems: Pitfalls Your network link: 10Gbps, 50ms Transport protocol: TCP How long it will take to send a 100KB message?

EECE 411: Design of Distributed Software Applications Independent hardware installations Uniform software layer (middleware) 1.1 What is a Distributed System? A collection of independent computers that appears to its users as a single coherent system

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 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: 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 failed 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/components from other open systems, irrespective of the underlying environment Achieving openness: Standard rules (protocols/interfaces) to describe services/components Interface definitions should be: Complete and neutral 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 Managing complexity: split the systems in smaller components. Components controlled by policies specified by applications/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 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): Offload work to clients 1.4 Technique: Offload work to clients

EECE 411: Design of Distributed Software Applications Scaling Techniques (2): Hide communication latency 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): Divide the problem space. 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 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 Independent hardware installations Uniform software layer (middleware) 1.1 Last time: What is a Distributed System? Distributed System: A collection of independent computers that appears to its users as a single coherent system Key goals Connect users and resources Distribution transparency Openness Scalability

Last time: Pitfalls when developing distributed systems The network is reliable Latency is zero Bandwidth is infinite Transport cost is zero The network is secure The topology does not change There is one administrator The network is homogeneous [aka Peter Deutsch’s “8 fallacies”] [link]link

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 different components, 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-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, Architectural styles One time-tested design guideline: end-to-end argument …

Design principle for the Internet The end-to-end argument The lower layers of the network are not the right place to implement application-specific functions. Lower layers of the network should implement basic and general functions, the applications should be built “above” these functions, at the edges. Caveat: unless performance critical Consequence: move functions “up and out”. the result is function migration to the end-node. The network should be “as transparent as technology permits”

A simple view of the Internet User Router “The Internet”

A more complex view of the Internet Backbone (big ISP) Backbone (big ISP) Backbone (big ISP) Little ISP User Little ISP Corp Campus Little ISP User By the end to end argument, applications live at the edge. The ISP lives here. And below. The ISP does not live at the end-points. (They can try…)

Example: RELIABLE file transfer for the User Router “The Internet”

Which one?  Solution I: hop-by-hop reliable transfer  Solution II: end-to-end check and retry User Router “The Internet”

30 What belongs IN (the network), what OUT? Questions: Does routing belong in the “dumb, minimal” net? How about: Secure (encrypted) transmission Duplication suppression What if the application creates duplicates? In-order delivery Do we need hop-by-hop ordering? Multicast (i.e., one-to-many communication)? Compare to telephone network! Is the E2E principle constraining innovation? User Router “The Internet”

End to end argument operates at two levels At the “network” level: Avoid putting constraining per-application functions into the core of the network. Build general purpose network services. At the “application” level: Build applications in a way that makes them robust, easy to use, reliable, etc. Simple approach: push software to the edge. Perhaps more realistic: reason carefully about role of servers, trusted third parties, etc.

Net Neutrality

Tussle Who’s battling? What’s at issue? Backbone (big ISP) Backbone (big ISP) Backbone (big ISP) Little ISP User Little ISP Corp Campus Little ISP User App Provider User

Discrimination? Harmful? Examples? Beneficial? Examples? Unpredictable? Examples? How to differentiate… Tests? Who should differentiate? Market Regulators Backbone (big ISP) Backbone (big ISP) Backbone (big ISP) Little ISP User Little ISP Corp Campus Little ISP User App Provider User

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, architectural styles Key requirement: Components need to communicate  Shared memory  Message exchange  need to agree on many things  Protocols: data formats, exception handling, naming, …