architect-handbook

Software Architect Handbook

View on GitHub

BASE

Overview

Eventually-consistent services are often classified as providing BASE semantics (Basically Available, Soft state, Eventual consistency), in contrast to traditional ACID guarantees.

Conflict Resolution

In order to ensure replica convergence, a system must reconcile differences between multiple copies of distributed data. This consists of two parts:

Reconcilliation

The most appropriate approach to reconcilliation depends on the application. A widespread approach is “last writer wins”. Another is to invoke a user-specified conflict handler. Timepstamps and vector clocks are often used to detect concurrency between updates. Some people use “first writer wins”.

Reconcilliation of concurrent writes must occur sometime before the next read, and can be scheduled at different instants: