Hi Jeff,
I like this idea. I actually once had a similar idea. I have already
thought a bit about what issues one might have to take care about...
Infinispan does not have user events like JavaSpaces where your listener
gets notified upon a write. It has internal events for its internal
organisation. But they cannot be listened to by the user application. At
least this was true for JBossCache and I guess that Infinispan behaves
in the same way. So you would have to add your own facade in front of
Infinispan where upon an add to the cache tree the respective
user-defined listener is notified.
Then you have to think about how clients exchange messages with the
server-side Infinispan cache. One idea would be to use JMS. Something
similar already exists named ActiveSpaces:
http://www.theserverside.com/discussions/thread.tss?thread_id=27274 One
issue that strucks my mind is that the JMS transaction boundary ends
where the Inifinispan transaction boundary starts. Let's say the sending
client expects a return receipt, the Inifispan transaction finished
successfully, but sending the receipt back to the client through JMS
failed. Now the client things that the transmission was unsuccessful,
although the Infinispan transaction was successful. Maybe I'm not right
here. I don't know enough about JMS to know for sure. But this makes me
think.
A JavaSpaces implementation has already been implemented on top of
Terracotta: http://www.semispace.org Now Terracotta is owned by Software
AG and you now have to pay for a license if you want to run your
application on an server array... Something like this could also happen
with Infinispan.
Developing another JavaSpaces implementation would be a great "research
vehicle" to learn a lot of things. What makes me think is whether to
extend the JavaSpaces approach in some way that not only distributed
systems can be build with clients that work together in a coordinated
way as with JavaSpaces, but also processing large amounts of data can be
done (MapReduce, Hadoop, etc.). But I know whether these are different
things that should be handled by a different kind of systems ...
Just a quick writeup of some things that crossed my mind when I read
Jeff's proposal...
Cheers, Oliver
On 01.07.2011 20:32, Jeff Ramsdale wrote:
Infinispan ( http://infinispan.org ) is a clustered cache technology,
similar to Coherence that scales up and down dynamically and has a
Map/Reduce capability. I've thought a JavaSpaces implementation built
on top of it would be pretty compelling.
-jeff