Distributed Systems Just what is a Distributed System? Definitions - - PowerPoint PPT Presentation
Distributed Systems Just what is a Distributed System? Definitions - - PowerPoint PPT Presentation
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,
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 desktop computer: backbone satellite link server: ☎ network link: ☎ ☎ ☎
A Typical Intranet
the rest of email server Web server
Desktop computers
File server router/firewall print and other servers
- ther servers
print Local area network email server the Internet
Networks based on "Mobile Devices"
Laptop Mobile Printer Camera Internet Host intranet Home intranet WAP Wireless LAN phone gateway Host site
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
Internet Browsers Web servers www.google.com www.cdk3.net www.w3c.org Protocols Activity.html http://www.w3c.org/Protocols/Activity.html http://www.google.comlsearch?q=kindberg http://www.cdk3.net/ File system of www.w3c.org
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
- f 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
- ver 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
Date Computers Web servers 1979, Dec. 188 1989, July 130,000 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 1993, July 1,776,000 130 0.008 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
- f 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
- perations.
- 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.