Distributed Services

In the design of the MUES Engine, it is desirable to provide scalability and distributability throughout the system, especially in the interaction of the server with the various subsystems we are calling "Sciences". It is still unknown how the server will react to significant numbers of active characters, and so keeping the major parts decoupled enough to tune them individually is a must. Decoupling the main server from its subsystems also makes for a very clean design, as it makes for a system in which the main server does little except shuttle events around from one place to another and maintain the World objects?. This also simplifies the security requirements of the system, as the only things which can penetrate from user-space into the internals are event objects, which are much easier to screen than method invocations. This is desirable simplicity.

After considering the various flavors of inter-process communication (or IPC), a queued message-based system seemed to best fit into the philosophy of the server design. The event-driven nature of the engine lends itself naturally to a message-based distributed services framework, as events (as we've defined them, anyway) are little more than request/response messages which are used to invoke processing within the server. To encapsulate events in a network message packet is fairly trivial. It does necessitate a bigger model for the event class, however, as the event must now carry with it all the information needed to act on it, rather than just carrying references to the pertinent objects. The absence of direct references, however, further simplifies the security concerns.

The model we're considering is the following one:

[This used to have a diagram, but it's been misplaced]

In this model, the ServiceProxy? class is the object which encapsulates the message protocol. It is responsible for communicating its status to any other proxies that are listening, and for negotiating the data channels between service consumers and service suppliers.

GedTheGreysHain - 17 Aug 2000