Replication in computer science refers to the creation and the use of redundant resources, such as software or hardware components, to improve availability, reliability, fault tolerance, or performance. Replication typically involves replication in space, in which the same application or data is stored on multiple file systems or the same computing task is executed on multiple devices, or replication in time, in which a computing task is executed repeatedly on a single device.
One can distinguish roughly between two types of replication
- Active Replication all replicas work productively, each replica plays the same role and is active in every operation
- Passive Replication only one replica works productively (the primary), the other replicas become active only if the primary fails
Strong usage of active replication increases of course the redundancy among the active components of the systems, and leads therefore to a higher probability of inconsistencies and consistency problems. Optimistic replication tries to achieve a trade-off between high consistency and low latency by assuming that problems and conflicts during updates will occur rarely, if at all.
Optimistic replication, Yasushi Saito and Marc Shapiro, ACM Computing Surveys (CSUR), Volume 37, Issue 1 (March 2005)