Replication involves sharing data so as to ensure consistency between redundant resources (e.g., hardware and software components), which can improve reliability, fault-tolerance, and accessibility. For example, data replication can occur between memories of server nodes, which can be in a cluster of server nodes. A server cluster includes a series of server nodes that are connected via a network. Some existing types of state replication for clusters of server nodes include: database persistence, synchronous memory replication, and asynchronous memory replication. In database persistence, the memory state is persisted to a database, and if a node fails, then another node can read the memory state from the database and continue the work. In synchronous memory replication, for any update to the memory state, the updated state is written to the memory of the server node. In asynchronous replication, at a given interval, the memory state is replicated.
A mobile agent is a software program that has the capability to migrate from one server node to another server node, within a cluster of server nodes. Mobile agents can directly interact with resources of each server node (e.g., memory) and can migrate from one server node to another server node, carrying along state information and continuing to execute on the new server node.