One of the problems of highly distributed systems is figuring out how systems
discover each other. After all, the whole point of having systems distributed
is to allow flexible and perhaps even dynamic configurations to maximize
system performance and availability. How do these distributed components of
one system or multiple systems discover each other? And once they're
discovered how do we allow enough flexibility, such as rediscovery, to allow
their fail-safe operation?
Space-based programming may provide us with a good answer to these questions
and more. In this article I'll describe what a space is and how it can be
used to mitigate some of the issues mentioned above. And I've included a
technique to convert an ordinary message queue into a space.
What Is a Space?
Conventional distributed tools rely on passing messages between processes
(asynchronous communicat... (more)
What is a facade? In software engineering it's a design pattern. One possible
definition of a facade is: "A higher-level interface that provides a unified
way of accessing a subsystem and as a result makes the subsystem easier to
use."
Thus, in constrast to most design patterns that help break the system up into
subsystems, the facade design pattern rolls up a complex subsystem into one,
easy-to-use system. A facade can provide a simple default view of the
subsystem that's good enough for most clients. Only clients needing more
customizability will need to look beyond the facade.... (more)