[Zope] Groove and ZEO

Alastair Burt burt@dfki.de
23 May 2001 14:29:31 +0200


Chris Withers <chrisw@nipltd.com> writes:

> Nitin Borwankar wrote:
> > 
> > So going with ZEO seems like a step in the opposite direction,
> > philosophically and from the point of view of functionality, since ZEO
> > is a number of *servers* working together rather than a number of
> > clients i.e. it's "server++" not "client++" as in Groove.
> 
> The difference between servers and clients is in the eye of the beholder ;-)

As I understand the ZEO architecture there is one Zope Storage Server (ZSS)
that handles writes and many instantiations of Client Storage (CS) that
can handle reads.  You would have Groove-like (groovy?) functionality if:

   1) The ZODB on one site could consist of CS instantiations for several
      ZSS servers, each one representing a shared workspace.

   2) To be fully buzzword compliant you enabled a peer-to-peer
      architecture. Thus a ZODB knows it wants workspace A; it looks for
      one on the net; if it finds one in makes a local CS for A, if not it
      starts a ZSS. This begs the question: what happens if two ZSS end up
      being started for the same workspace? I guess Groove must have some
      means to stop this happening, or some framework for merging changes.

   3) You encrypted the synchronisation protocol between the CS's and the ZSS.

Thus by adding a Persistent mixin to a Python class and adding a few well
placed calls to "get_transaction().commit()", you would allow it to
synchronise efficiently and securely with any other Python program on the
planet. Such an architecture sounds cool.  It might even be useful.

--- Alastair