Introduction
From Sovereign Wiki
The goal of Sovereign is to investigate the use of distributed VM approaches in the context of high availability for web applications. The Self-Organizing Systems Group of the TU Munich together with EclipseSource joined forces for this project.
We expect that the results of the Sovereign project will benefit web applications in general that make use of threads on the server side. On one hand threads in web applications can be proactively replicated onto backup nodes. This backup nodes continue operation in case of failure on a master node. On the other hand threads within a load-balancing cluster of VMs can aggregate on fewer machines in times of low load to save power by shutting down unneeded VM instances. Either of these mechanisms is supported at the level of the VM. No interruption of the running web applications is necessary.
Sovereign started in June 2010 and will run until the end of 2011. Funding is provided by the German Federal Ministry of Education and Research (BMBF).
Use Case: RAP
As an example for a web framework that makes use of threads during the lifetime of HTTP sessions, we are investigating the Rich Ajax Platform (RAP). RAP uses the RWT widget toolkit to render user interfaces on websites.
The goal in this example is to enable fail-save operation of RAP user sessions on a cluster of servers. This was not possible when the project started as RAP makes heavy use of server side threads (especially the UIThread and in the job framework). With current Java technologies it is not possible to transfer threads between the different nodes of the cluster.
Sovereign explores two strategies to achieve this goal.
- The Recording Strategy records the widget state created on the primary server and replays that state on the secondary server. This strategy solely operates at the application level.
- The Modified VM Strategy extends the Maxine research VM with support for thread and object replication on the VM level.
| Recording Strategy | Modified VM Strategy | |
|---|---|---|
| application | dynamically modified by byte code weaving | (almost) unmodified application |
| VM | unmodified legacy VM | extended Maxine VM |
| exchange mechanism | Terracotta shared heap | custom protocol and agents implementing object and thread replication |
