Distributed Systems


Our conceptual design envisions a collection of independently executing programs, potentially widely distributed on the network, but working together to produce solutions that appear integrated to the user.

Our current systems consist of a collection of Web servers running on various machines, plus our locally developed client-server protocol for the various Lisp-based servers. These protocols use the Lisp language for communication among various processes. For example, the knowledge-base clients can express queries of the form:
(kb-get-children "Aorta" "part of"),
rather than the underlying SQL.

This approach allows us to provide a high level query language that is more tuned to the domain than the database or knowledge base query language. It also allows us to swap clients and backend databases without changing the middle layer.

This mechanism has worked well for the applications we have developed to date. However, it does not provide high levels of network security, and it only allows text-based communication. As we develop highly interconnected systems we will want to refine these methods, for example, by looking at some of the distributed object approaches that are available.

In the long run we envision may of the structural objects in the body (the heart, the liver, etc) running as independent distributed objects that communicate via messages. Thus, this kind of application should lead to interesting research in the area of distributed systems.