Cacheonix can be defined as a reliable distributed shared associative memory. Each cache managed by Cacheonix carries a high-speed coherent local front cache, a partition and one or more replicas. Cacheonix provides continuous access to stored data even in presence of server failures and unpredictable network conditions by building on top of a highly-optimized cluster management protocol that ensures reliability and consistency of data access:
Data in Cacheonix is addressed using a key. Each key has a value associated with it. In Java the associative memory is represented by java.util.Map. Cacheonix API extends java.util.Map.
The associative memory provided by Cacheonix is shared between a group of computers connected by a high-speed local network, or a cluster. All members of the cluster can read and write to Cacheonix.
The content of the associative memory is evenly distributed (partitioned) among the members of the cluster. Cacheonix cluster is symmetrical. There is no primary node in the cluster. All nodes in the cluster are equal. Cacheonix automatically repartitions the data when a new node joins to the cluster.
Each Cacheonix node maintains a coherent local cache that greatly speeds up access to the frequently used data.
Cacheonix ensures that all nodes have a coherent view of the distributed shared memory while maintaining fast access to the cached data.
Cacheonix supports creating one or more backup replicas of the data. A single replica guarantees continuous availability of data in presence of permanent failure of a single node. A non-replicated configuration will suffer loss of the data belonged to the partition of the failed node.
Cacheonix uses multicast and point-to-point communications for cluster membership management and TCP sockets for the inter-node communications. Cacheonix fully supports clusters running on non-multicast networks by executing a proprietary TCP-based inter-node protocol.