Chapter 1 Characterization of Distributed Systems Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edition 4, © Pearson Education 2005
Distributed Computing zA distributed system is defined as one in which components at networked computers communicate and coordinate their actions only by passing messages. zThis definition allows for concurrent execution of programs, but prevents the possibility of a global clock and means that components can fail independently of one another.
Internet and Internet zThe Internet is a very large distributed system that allows users throughout the world to make use of its services. zAn intranet is a part of the Internet that is separately administered and uses a firewall to enforce its own local security policies. Users in an intranet share data by means of file services.
A typical portion of the Internet
A typical intranet
Portable and handheld devices in a distributed system Distributed systems techniques are equally applicable to mobile computing (involving laptops, PDAs and wearable computing devices)
Client-Server Model zShared resources are managed by server processes, which provide client processes with access to those resources via a well-defined set of operations. zIn a distributed system written in an object-oriented language, resources may be encapsulated as objects whose methods are invoked by client objects.
Web servers and web browsers Internet Browsers Web servers Protocols Activity.html File system of
Computers in the Internet Date Computers Web servers 1979, Dec , July130, , July56,218,0005,560, , Jan.171,638,29735,424,956
Computers vs. Web servers in the Internet DateComputersWeb serversPercentage 1993, July 1,776, , July6,642,00023, , July19,540,0001,203, , July56,218,0006,598, , July125,888,19731,299, ,298,371
Challenges zHeterogeneity zOpenness zDiscovery zScalability yThe Web (hierarchic naming, partitioned data, caching and replication). zfailure handling zConcurrency ztransparency
Transparencies 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.