Re: Something about the insides of Javaspace?

Dan Creswell <[email protected]> Thu, 21 Sep 2006 14:29:29 +0100
Newsgroups gmane.comp.java.sun.javaspaces
Message-ID <[email protected]>
Hi,

Christian Hager wrote:
> Hello all,
>
> I'm new to Javaspaces and would be interested in about some details of
> the insides of Javaspace. For example such as if the Javaspace is
> located only on one machine or if it is spread over the network. What
> about if the machine with the Javaspace fails? Is there any way to reach
> redundancy or will the whole distrbuted application crash if the
> Javaspace crashes?

You seem to be confining your "reliable solution" to something that the
JavaSpaces implementation provides you - why?

There are, in fact, two basic ways to go about creating a "reliable
solution" using JavaSpaces/Jini.  One is relying on the JavaSpace itself
to handle all possible forms of failure such that it always provides
service.  Many are tempted by this route but I can assure you (because I
am the implementer of Blitz JavaSpaces) that there are a number of
circumstances under which this approach is not viable or doesn't work.

The alternative, as exemplified by google systems design is to build
reliable systems out of multiple simple pieces each of which is deployed
multiple times to achieve resilience.

This second approach has all sorts of advantages in terms of simplicity
of management, predictable failure response and so on.

An interesting line of thinking comes from considering the following:

Assume the JavaSpace never fails and then consider:

(1)     What happens if the network between client and JavaSpace fails in
some fashion e.g. dropped packets.

(2)     What if the network between components of the resilient JavaSpace
fails e.g. dropped packets.

Note I deliberately didn't pick the straightforward case of complete
network failure but you might wish to consider that aspect too.

Realize also, that according to recent google papers, in spite of
failures such as the above, they can continue to process information.
But of course, they don't attempt to build the equivalent of a resilient
JavaSpace.

It's worth mentioning that many JavaSpaces applications can be made
relatively straightforwardly resilient by having appropriate algorithms
implemented in the clients - something that Google know/do well.  I can
imagine that you don't want to consider this option as it's "too
complex" and you'd like the convenience of having it all dealt with
magically within the JavaSpace - that's okay but not the silver bullet
you might imagine (though many will tell you it is).

Hope that helps,

Dan.

===========================================================================
To unsubscribe, send email to [email protected] and include in the body
of the message "signoff JAVASPACES-USERS".  For general help, send email to
[email protected] and include in the body of the message "help".

To view past JAVASPACES-USERS postings, please see:
http://archives.java.sun.com/archives/javaspaces-users.html