CRDT

Материал из Викиконспекты
Версия от 20:03, 3 июня 2019; Yeputons (обсуждение | вклад) (Новая страница: «CRDT (Conflict-Free Replicated Data Type) — объект, который можно реплицировать на много узлов и обновля…»)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

CRDT (Conflict-Free Replicated Data Type) — объект, который можно реплицировать на много узлов и обновлять параллельно без координации между узлами.

Репликация на основе состояния

Получив обновление от клиента, реплика сперва обновляет локальное состояние, затем отправляет это состояние другой реплике. Та применяет функцию merge, чтобы объединить свое состояние с полученным и отправляет его еще одной реплике, и т. д..

Достаточные условия согласованности:

1. Множество возможных состояний образует полурешетку, т.е. частично упорядоченное множество с операцией наименьшей верхней грани, причем merge реализует эту операцию;

2. Обновления возрастают.

Репликация на основе операций

Реплика посылает не все состояние, а только обновление всем репликам. Согласованность можно гарантировать, если обновления коммутативны. Кроме того, требуется чтобы каждая операция была доставлена ровно один раз.

todo дельта-CRDT