Recent Changes - Search:

Distributed Computing

This website demonstrates using wikis as teaching and learning tool.

The course instructor is also happy to share the teaching materials here with those who find it readable.

Distributed Computing Paradigms

A Distributed Computing Lecture by Steven Choy


Introduction

Two characteristics of distributed applications:

  • Interprocess communication - a distributed application requires the participation of two or more independent processes. The processes must have the ability to exchange data among themselves.
  • Event synchronization - the sending and receiving of data among the participants of a distributed application must be synchronized.

Levles of distributed application paradigms

  • Message passing
  • Client-server
  • Messaging System
  • Remote procedure call, remote method invocation
  • Object space

The Message Passing Paradigm

  • The most fundamental paradigm for distributed applications.
  • Abstraction: the interconnected processes perform input and output to each other.
  • Example: the socket application programming interface.
  • A process sends a message representing a request.
  • The message is delivered to a receiver, which processes the request, and sends a message in response.
  • The basic operations are send and receive
  • For connection-oriented communication (e.g. TCP), the operations connect and disconnect are also required.

Client-Server Paradigm

  • Based on IPC, the client-server model assigns asymmetric roles to two collaborating processes.
  • The server process plays the role of a service provider which waits passively for the arrival of requests.
  • The client process issues specific requests to the server and awaits its response.
  • The client-server model provides a simple abstraction for the delivery of network services.
  • Advantage: event synchronization is simplified; the server waits for requests, and the client in turn waits for responses.
  • Disadvantages: single point of failure, strong expensive server, not well scalable (more users, more servers)
  • Basic operations for server: listen and accept requests.
  • Basic operations for client: issue requests and accept responses.
  • Many Internet services are based on the client-server model. (Can you give some examples?)

Peer-to-peer Paradigm

  • The Peer-to-peer model structures distributed applications such that the individual processes have symmetric roles.
  • That is, all the processes play symmetric roles as both clients and servers.

Some Variations of Client-Server Model

Source: Chapter 2: System Models in 'Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edition 4 (the website for the book is http://www.cdk4.net/). Please refer to this chapter of the textbook.

  • Services provided by multiple servers
Services may be implemented by several server processes — in separate machines that interact as necessary — to provide an integrated service to clients. This model is usually used to provide complicated services such as fault tolerance or security issues.
  • Proxy servers and caches
A proxy server to provide a shared cache for clients at a site or across several sites. The cache is a fast secondary storage device that records the most recently used data objects. When a client requests an object, the caching service first checks the cache and supplies the object from the cache if it is available. If not, a search is required through the Web servers. The cache will be updated when the object has been found — this most recently sought object will be added into the cache memory.

Messaging System Paradigm

  • A messaging system serves as an intermediary among separate, independent processes.
  • Use the messaging system to exchange messages across the network
  • Enable processes exchange messages asynchronously
    • A sender deposits a message, the message will be forwarded to a message queue associated with each receiver.
    • Once a message is sent, the sender is free to move on to other tasks.
  • The most ubiquitous messaging system today is email, which facilitates communication among people.
  • The messaging paradigm is concerned with messaging systems that allow different software applications to communicate with each other.
  • These application-to-application messaging systems, when used in business systems, are generically referred to as enterprise messaging systems.
  • The Publish/Subscribe Message Model:
Each message is associated with a specific topic or event. Applications interested in the occurrence of a specific event may subscribe to messages for that event. When the awaited event occurs, the process publishes a message announcing the event or topic. The middleware message system distributes the message to all its subscribers.
The publish/subscribe model offers an abstraction for multicasting or group communication. The publish operation allows a process to multicast to a group of processes, and the subscribe operation allows a process to listen for such multicast.
The Java Message Service (JMS) API is a messaging standard that allows application components based on the Java 2 Platform, Enterprise Edition (J2EE) to create, send, receive, and read messages. It enables distributed communication that is loosely coupled, reliable, and asynchronous.
Enterprise messaging provides a reliable, flexible service for the asynchronous exchange of critical business data and events throughout an enterprise. The JMS API adds to this a common API and provider framework that enables the development of portable, message based applications in the Java programming language.

The Remote Procedure Call Paradigm (RPC)

  • Abstraction: interprocess communications proceed as procedure calls, which are familiar to application programmers
  • The RPC model allows programmers to build network applications using a programming construct similar to the local procedure call.
  • It provides a convenient abstraction for both interprocess communication and event synchronization.
  • The RPC model has been widely in use in network applications.
  • Some illustrations: Diagram 1, Diagram 2, Diagram 3

The Distributed Objects Paradigms

  • Abstraction: applications access objects distributed over a network
  • Objects provide methods, through the invocation of which an application obtains access to services.
  • Some existing object-oriented paradigms:
  • Java Remote method invocation (RMI) - We have a detailed coverage in this lecture.
  • The Object Request Broker Paradigm - We have a detailed coverage in this lecture.
  • Object spaces

The Object Space Paradigm

  • The most high-level abstraction of the object-oriented paradigms
  • It assumes the existence of logical entities known as object spaces.
  • Abstraction: A provider places objects as entries into an object space, and requesters who subscribe to the space access the entries.
  • This abstraction hides the detail involved in resource or object lookup needed in paradigms such as remote method invocation or object request broker.
  • Example: JavaSpaces
  • Reference: Article: Getting Started With JavaSpaces Technology: Beyond Conventional Distributed Programming Paradigms

The Mobile Agent paradigm

  • A mobile agent is a transportable program or object.
  • In this paradigm, a software agent is launched from an originating host.
  • The agent moves from host to host according to an itinerary that it carries.
  • At each stop, the software agent may access the necessary resources or services, and performs the necessary tasks to accomplish its mission.
  • A reading: Internet Evolution - Tom Nolle - Envisioning a Future With Intelligent Software Agents
There are some really promising applications in what are called “mobile ISAs,” especially in the area of collaboration. This involves dispatching mobile agents from one computer and delivering them to a remote computer for execution. A collaboration ISA might create ad hoc online meetings based on specified criteria, pick an optimum meeting host, and then set the meeting up for all invited users.

The Web Services and Service Oriented Architecture (SOA)

The Grid Computing Paradigm

Reference: IBM developerWorks : New to grid computing

  • What is grid computing?
Grid computing allows you to unite pools of servers, storage systems, and networks into a single large system so you can deliver the power of multiple-systems resources to a single user point for a specific purpose. To a user, data file, or an application, the system appears to be a single enormous virtual computing system.
  • What is the main purpose of a grid?
The major purpose of a grid is to virtualize computing resources to solve problems.
With grid computing, an organization can transform its distributed and difficult-to-manage systems into a large virtual computer that can be set loose on problems and processes too complex for a single computer to handle efficiently.
  • What are not grids?
Clusters, Network-attached storage devices, Scientific instruments, Networks
  • Why is grid computing important?
Virtualization of the computing environment allows organizations to:
Use otherwise idle computer resources to accelerate business processes.
Speed applications so that processing time decreases, driving faster time to market.
Enable the development of new and more productive applications.
Drive down the costs of developing new applications.
Increase collaboration and productivity capabilities.
Maximize the resources available to users.
Increase the resiliency and utilization of the IT environment.

Thanks for Reading

If you would rather like to have this lecture note in printed format, please click the print action link in the top right corner.

You are welcome to make contribution to this lecture note. You can suggest links to useful resources or draw illustration to aid understanding of some topics.

If you find any problem in this lecture note, please feel free to tell Steven via the following email address.

Edit - History - Print - Recent Changes - Search
Page last modified on March 13, 2008, at 05:29 AM