Service resilience,
that is the continued availability of a service despite failures
and other negative changes in its environment, is vital in
the Service-Oriented Architecture (SOA). A typical way of increasing
service resilience is to replicate it. Service replication means
deployment of a service on several server machines, each of which
may fail independently, and coordination of client interactions with
replicas using group communication.
What is RESTGroups?
RESTGroups is a RESTful group communication service
which is based on Spread -- a popular
group communication toolkit. Spread provides various primitives for:
- detection of malfunctioning/crashed processes,
- reliable point-to-point transfer of messages,
- formation of processes into groups, the structure of which can
change at runtime,
- reliable message multicasting with a wide range of guarantees
concerning delivery of messages to group members (e.g. causally-,
fifo- and totally- ordered message delivery).
RESTGroups functions as an architecture- and language-independent
front-end for Spread. Contrary to Spread and many other such systems,
RESTGroups represents group communication abstractions as resources
on the Web, addressed by URIs. RESTGroups uses methods GET, PUT, POST,
and DELETE of HTTP in the RESTful style:
- GET is used to retrieve data (for example, a message) or perform
a query on a resource; the data returned from the RESTGroups
service is a representation of the requested resource;
- POST is used to create a new resource (for example, to extend
a process group with a new process or to send/broadcast a new message);
the RESTGroups service may respond with data or a status indicating
success or failure.
- PUT is used to update existing resources or data;
- DELETE is used to remove a resource or data (for example, to remove
a process from a process group). (In some cases, the update and delete
actions may be performed with POST operations as well.)
This gives us a uniform, simple way of using group communication
abstractions for developing resilient Web applications, fulfilling
the SOA requirements, such as: language/platform independence and
easy software integration. Since the Web is ubiquitous and the HTTP
ports are usually not blocked, the group communication services can run
truly globally.
See a short demo movie
explaining the main concepts of group communication and RESTGroups's API to Spread using a small example program.
Distribution
A tarball file with source files is available here:
To deploy demonstration programs you will need the Spread 4.1, available from
http://www.spread.org/.
API documentation in HTML format
Team
Papers
The ITSOA Project 2008-2009
Last modified: Fri Jun 18 15:18:28 CEST 2010