
		   Elements of group communication
		   ===============================


Group membership
----------------

Is the list of members maintained by each member or is there a global
group membership service ? The first does probably not scale too well...


Multiple Groups
---------------

Can objects be members of multiple groups ?



Receiver
--------

Are group messages sent to a group object or to an object within a
group ? That is, do we want to use groups rather for administrative
purposes or should they be first-class citizens ?

Amoeba sends messages never to the group, but always to individual
members, resulting in a group message.



Roles
-----

Should a receiver be able to re-cast the message just received ? In
large multicadt trees this would scale well, a receiver would assume
resposibility for a part of the mcast tree



Homogeneous vs. heterogeneous groups
------------------------------------

Must all members of a group be of the same class (or subclass), must
all implement the same interface ? Or can the members be heterogeneous ?


Intended usage
--------------

Relicated & reliable service

Load balancing

Push technology (server to client)


Building blocks
---------------

- Reply to Request correlator: configurable with Policy object. This
  allows to return just the first response received, the majority, or
  according to some user policy. Also, such a correlator allows
  synchronous access to an asynchronous request-response model. If
  users want to handle correaltion themselves, this object need not be
  used.

- Request and Reply (or list of Replies)

- Failure Detection service



Applications
------------

Distributed event notification service (CORBA's Event Service /
Notification Service)

Video distribution service

Replicated servers for - failure safety
                       - load balancing
		       - high availability

Replicated stock feed on:
  - Cluster computers
  - LAN
  - WAN
What are the issues when we switch from LAN to WAN ? Can we just
replace one or more components (Transport, GroupService etc) ?


Replicated, high-availability web servers (using servlets)




References
----------

Maffeis' dissertation: how are groups implemented in CORBA ?

EPFL (Gueraoui, Schiper): groups as service concept

Amoeba: group primitives

Transis

