Distributed Systems Just what is a Distributed System?
Definitions ● "A Distributed System is one in which components located at networked computers communicate and coordinate their actions only by passing messages". [Coulouris, 2005] ● "A Distributed System is a collection of independent computers that appears to its users as a single coherent system". [Tanenbaum, 2002]
Questions? ● Concurrency - can we concurrently access shared resources safely? ● Timing - no real notion of global time, so, how is coordination achieved? ● Failures - what happens if a component fails?
Why? ● To Share Resources!
Example Distributed Systems ● The Internet ● Intranet ● Networks based on "Mobile Devices"
(Part of) The Internet ☎ intranet ☎ ☎ ISP ☎ backbone satellite link desktop computer: server: network link:
A Typical Intranet Desktop email server computers print and other servers Local area Web server network email server print File server other servers the rest of the Internet router/firewall
Networks based on "Mobile Devices" Internet WAP Host intranet Home intranet Wireless LAN gateway Mobile phone Printer Laptop Host site Camera
Mobile Computing ● Nomadic Computing ● Location Aware or Context-Aware Computing ● Ubiquitous Computing (Computers Everywhere)
Resource Sharing ● It is easy to overlook the significance of: – printer sharing – disk/file sharing – application sharing (search engines)
Important Definition ● "Service" - a distinct part of a computer system that manages a collection of related resources and presents their functionality to users and applications via a set of operations that it exports.
Important Definition ● "Server" - a running program (process) on a networked computer that accepts requests from programs running on other computers to perform a service and respond appropriately
Clients and Servers ● A client invokes an operation upon a server (often referred to as a "remote invocation") ● The terms "client" and "server" apply only to the roles played in a single request ● Many (but not all) distributed systems can be constructed entirely in the form of interacting clients and servers
Extended Example ● The World Wide Web ● "An evolving system for publishing and accessing resources and services across the Internet"
The Web is "Open" ● Can be extended and implemented in new ways without disturbing its existing functionality ● Based on freely published and widely implemented (and adhered to!) communication standards and documents ● The types of resources that can be published and shared is not fixed
Web Server and Web Clients http://www.google.comlsearch?q=kindberg www.google.com Browsers Web servers Internet www.cdk3.net http://www.cdk3.net/ www.w3c.org http://www.w3c.org/Protocols/Activity.html File system of Protocols www.w3c.org Activity.html
Evolving Web ● HTML ● HTTP ● URL ● ... together with ... ● CGI, Server Applications ... ● Web Services and XML
The Web's Successes ● Easy to publish ● Hypertext ● Openness of its system architecture
The Web's Failures ● Design Issues ● Dangling Links ● "Lost in Hyperspace"
The Web's Future? ● The Semantic Web? ● Role of XML? ● Meta-data - “data about data”
Scalability within the Web ● Popular site = many hits = slow! ● Caching and Proxying can help ● Clustering can help, too
The Web's "Reload" Problem ● Stale Data ● There's just no way to keep data that's been read up-to-date ● Web Interface can be too limited
Challenges of Distributed Systems ● Heterogeneity ● Openness ● Security ● Scalability ● Failure Handling ● Concurrency ● Transparency
Heterogeneity ● All types of everything: networks, hardware, software ... ● ... operating systems, programming languages, APIs ... ● ... protocols, byte ordering, standards ... ● One possible (popular) solution: Middleware
Middleware ● A software layer that provides a programming abstraction as well masking the heterogeneity of the underlying technologies (whatever they might be) ● Middleware provides a uniform computational model for use by the programmers of servers and distributed applications
Openness ● This is a characteristic that determines whether the system can be extended and re- implemented in various ways ● Key interfaces are PUBLISHED
The Key Openness Challenge Tackling the complexity of distributed systems consisting of many components engineered by different people
Openness - Key Points ● Key interfaces are published ● Based on the provision of a uniform communication mechanism and published interfaces for access to shared resources ● Open distributed systems can be constructed from heterogeneous hardware and software, from different vendors. But the conformance of each component to the published standard must be tested and verified if systems are to work correctly
Security ● Very important ● Confidentiality ● Integrity ● Availability
Security Challenges ● Sending sensitive information in a message over a network in a secure manner ● Identifying a remote user or agent correctly ● Dealing effectively with Denial-of-Service Attacks ● Securing Mobile Code
Scalability ● A system is scalable if it will remain effective when there is a significant increase in the number of resources and the number of users
Computers on the Internet Computers Date Web servers 188 0 1979, Dec. 1989, July 130,000 0 1999, July 56,218,000 5,560,866 2003, Jan. 171,638,297 35,424,956
Web Servers on the Internet Date Computers Web servers Percentage 1,776,000 130 0.008 1993, July 1995, July 6,642,000 23,500 0.4 1997, July 19,540,000 1,203,096 6 1999, July 56,218,000 6,598,697 12 2001, July 125,888,197 31,299,592 25 42,298,371
Scalability Challenges ● Controlling the cost of physical resources ● Controlling the performance loss ● Preventing software resources running out ● Avoiding performance bottlenecks
Scalability - Bottom Line ● Difficult to achieve ● Help - Replicated Data ● Help - Caching ● Help - Multiple Servers ● Help - Tasks Performed Concurrently
Failure Handling ● Failures are partial - some component(s) fail(s), while others keep operating - how is this managed? ● Detecting failures can be hard ● Masking failures is possible (e.g., retransmission, redundancy) ● Tolerating failures can sometimes be acceptable ● Recovering from failures is often desirable
Failure Handling and Availability The availability of a system is a measure of the proportion of time that it is available for use
Concurrency ● There's always a possibility that several clients will attempt to access a shared resource at the same time ● Services and applications generally allow multiple client requests to be processed concurrently ● For an object to be safe within a concurrent/distributed environment, its operations must be synchronized in such a way that its data remains consistent
Transparency Defined as the concealment from the user and the applications programmer of the separation of components in a distributed system, so that the system is perceived as a whole rather than as a collection of independent components
Types of Transparency ● Access ● Location ● Concurrency ● Replication ● Failure ● Mobility ● Performance ● Scaling
Transparency Types ● Access transparency : enables local and remote resources to be accessed using identical operations. ● Location transparency : enables resources to be accessed without knowledge of their physical or network location (for example, which building or IP address). ● Concurrency transparency : enables several processes to operate concurrently using shared resources without interference between them. ● Replication transparency : enables multiple instances of resources to be used to increase reliability and performance without knowledge of the replicas by users or application programmers. ● Failure transparency : enables the concealment of faults, allowing users and application programs to complete their tasks despite the failure of hardware or software components. ● Mobility transparency : allows the movement of resources and clients within a system without affecting the operation of users or programs. ● Performance transparency : allows the system to be reconfigured to improve performance as loads vary. ● Scaling transparency : allows the system and applications to expand in scale without change to the system structure or the application algorithms.
Distributed Systems Distributed Systems are Everywhere Resource Sharing is the Main Motivation A Number of Challenges Exist
Recommend
More recommend