Короткий ответ
Eventual consistency — модель, при которой после изменения данных все читатели со временем увидят новое значение, но не гарантируется, что это произойдёт немедленно.
Как это работает подробнее
Обновление сначала применяется в одном узле/реплике, а затем асинхронно распространяется на остальные; в промежутке разные читатели могут видеть разные версии данных.
Пример кода
Схема
t0: пользователь обновляет имя профиля в Service A
t0+200ms: Service B (кеш профиля) ещё отдаёт старое имя
t0+2s: Service B получает событие обновления и синхронизируетсяЧто использовать на практике
- Практика. Допустимо для данных, где кратковременная несвежесть не критична (счётчик лайков, список комментариев); требует продуманного UX, чтобы пользователь не был сбит с толку расхождениями.
Подводные камни
- Риск. Применять eventual consistency там, где бизнес требует немедленной точности (остаток на счёте при переводе денег), без явного решения о допустимости такого риска.