Distributed Computing and Object Systems

This talk is based, in part, on:

1 Computing

1.1 Why Distributed Computing

Arguments for: Arguments against:

1.2 Interprocess Communications

  1. Send:
  2. Receive:
  3. Connect: for connection-oriented systems, TCP requires connection. UDP does not.
  4. Disconnect:

1.3 Synchronization Techniques

1.4 Distributed Computing Paradigms

Note:

Message-passing is the simplest of all models as it is essentially just a socket abstraction. Client-server models are by far the most popular application model due in large part to the fact that most applications seem well suited to the restrictions of this model. That is, it is often the case that a service needs to be provided by one machine to other machines because the machine in question either has a lot more CPU power than the rest, or a lot more hard drive space, or access to some special data, etc. Client-server is also easier to implement since all we need to do is make the server do a synchronous receive. The idea of making these services location-independent has been floating around for decades and implemented in various systems, most notably Jini. It is not easy to achieve location independence, especially in the presence of faults (lost messages, broken servers, etc.), so every implementation needs to make certain concessions on how often the service search will work versus how long and how many resources it will take.

Peer-to-peer systems hold the most promise for the development of robust and agile distributed systems. However, we do not yet have algorithms that will support their growth. The problem lies in open p2p systems where all the peers are selfish agents. These systems require mechanisms that can align the individual selfishness of the peers with the global needs of the system. These algorithms are being developed by researchers in multiagent systems.

Message-oriented middleware adds some often-needed functionality to the basic message-passing paradigm. These systems are usually small utility libraries. RPC was the first departure from message passing. It was the first step in integrating distributed computation into the programming language. Unfortunately, the libraries that exist mostly don't work well with each other so you can only RPC to a similar host.

The idea of shared tuple spaces was popularized by the Linda language. Implementing these spaces presents several problems. The tuple-space needs to be physically distributed and yet available in its entirety to all the agents, even in the presence of failures. The searches for a particular tuple need to be performed by some agent, but we also do not want to overload any one agent. Finally, read-write permissions might need to be implemented in these objects. The Linda papers explain how these were implemented in their systems, but there exist many algorithms for achieving these goals, all of them, of course, have different strengths and weaknesses.

Mobile agents have been characterized as a solution looking for a problem. They do, however, have a place in systems were communication costs are very high and a lot of computation is required using the local data. Unfortunately, these type of constraints do not seem to appear often (or, at all?) in the real world, so mobile agent systems are still only studied by academic researchers.

2 Distributed Objects

2.1 Isn't this easy to do?

Our goal is something like:
//w resides on some other machine
Widget w = new Widget();

//this function is executed on that other machine.
w.calculate();

2.2 Using the ClassLoader

2.3 Object References

Client   m.sc.edu (Server)
Object Machine Obj ID Obj ID Object
o m.sc.edu 101 —new o()→
←m.sc.edu:01—
—101:calc()→
101 o

2.4 Methods and Arguments

Client   m.sc.edu (Server)
Object Machine Obj ID Obj ID Object
o m.sc.edu 101 —101:calc(F f)→ 101 o

2.5 General Features of DOS

General Architecture

2.6 Runtime Transactions

Runtime Transactions

2.7 Example

//This is a pretend example
interface Widgets {
  double getStrenth();
  void tickle(int times);
  String getWisdom();
}

2.8 Object Manager

2.9 Naming Services

2.10 Security

URLs

  1. Java Distributed Computing, http://www.oreilly.com/catalog/javadc/chapter/ch03.html
  2. Grid Computing, http://www-106.ibm.com/developerworks/grid/library/gr-heritage/?ca=dgr-lnxw01GridNextGen
  3. Globus toolkit, http://www.globus.org/
  4. Jini, http://wwws.sun.com/software/jini/
  5. JXTA, http://www.jxta.org
  6. Jabber, http://www.jabber.org
  7. DCE RPC, http://www.opengroup.org/publications/catalog/c706.htm
  8. Linda, http://www.cs.yale.edu/Linda/linda.html
  9. JavaSpaces, http://java.sun.com/developer/Books/JavaSpaces/introduction.html
  10. Tracy, http://mobile-agents.org/

This talk available at http://jmvidal.cse.sc.edu/talks/distobjects/
Copyright © 2009 José M. Vidal . All rights reserved.

12 February 2004, 11:47AM