Data is partitioned based on application-defined groups of related objects, called conits. Based on the assumption that related objects are more likely to be read and modified within the same period of time, using conits adds flexibility into the system and improves system performance in three important ways:
Ivory automatically replicates and caches data structures on remote nodes. Clients can request data from either the primary node or the replicas and will receive the same information, within some application-appropriate bound for stale data.
We implemented a simplified service cache using Ivory. Service caches are used to scale dynamic services by replicating the Java code and data used to generate dynamic content. These caches should produce correct results, as would be produced by the server--within some application-appropriate margin of error. We want consistent copies of the code and data, while keeping the client-perceived latency low, and we want to minimize the cost of managing state.
For more information about the implemented service cache, please see
Service Cache Using Ivory.
pickles package uses jni code and, therefore, depends on the machine platform.
conits package is the interface between applications and Ivory.
servicecache package is the service caching framework.
The servicecaching framework is made up of three main components--a name cache, a node manager, and a state manager.
The name cache is a table of symbolic names that refer to objects.
The node manager maintains information about peer nodes;
this information is used to send and receive updates.
The most important part of Ivory is the
state manager, which manages the conit state and initiates
receiving and propagating updates.
The state manager can be modified to handle other caching/consistency
For more information, see the
Java Docs or the
Also included in this release are