2

Возьмите пример использования многопользовательской сетевой игры. Мгновенно возникает проблема репликации и согласования общего состояния по сети.Есть ли связь между CRDT и протоколом RAFT - или они ортогональны?

Там, как представляется, кратна инструментов, направленных на аспекте этой проблемы, и два, в частности, кажется, пересекаются:

  1. Conflict-free Replicated Data Types (CRDTs) - используется для
  2. RAFT consensus algorithm - для выбора транзакционного лидер в распределенной сети, чтобы помочь достичь консенсуса.

Мой вопрос: Есть ли связь между CRDT и протоколом RAFT - или они ортогональны?

ответ

3

В терминах распределенных систем они отличаются друг от друга и служат очень различным вариантам использования. Хотя оба они нацелены на достижение сильной согласованности, CRDT делают это, как правило, без ущерба для доступности, а Raft делает это за счет доступности. Перед сетевым разделом CRDT останутся доступными, но кластер Raft может стать частично или полностью недоступным. Плот - это консенсусный алгоритм, который опирается на то, что большая часть кластера взаимодействует друг с другом для прогресса.

Существуют также различия в типе состояния, которым могут управлять каждый. CRDT работают для представления ограниченного и четко определенного набора типов данных, в то время как Raft и другие консенсусные алгоритмы могут использоваться для моделирования гораздо более широкого спектра потенциальных структур данных и алгоритмов. Плот обычно используется для моделирования реплицированного конечного автомата. Команды на конечный автомат регистрируются и реплицируются через алгоритм Плота и применяются к конечной машине. Государственные машины могут использоваться для моделирования структур данных, таких как карты и наборы, или контроля параллелизма путем моделирования таких вещей, как блокировки, выборы лидеров и семафоры.

Вы также должны смотреть на свою систему с точки зрения масштабируемости, а также Raft и CRTD отличаются здесь значительными. Плот - это система, основанная на лидерах. Плот выбирает единственный узел в качестве лидера, и все изменения состояния в реплицированном государственном аппарате Raft проходят через этого единственного лидера и синхронно реплицируются большинству последователей перед их применением к конечным автоматам. В качестве альтернативы CRDT значительно более масштабируемы, поскольку они не ограничены одним узлом.

В конечном счете, разница между Raft и CRDT - это разница между консистенцией и производительностью. Плот предназначен для создания последовательного представления единой системы с уделением особого внимания безопасности по сравнению с производительностью. Как правило, консенсусные алгоритмы, такие как Raft, используются для таких функций, как управление конфигурацией и обнаружение служб. CRDT спроектированы так, чтобы быть быстрыми и максимально последовательными, не жертвуя доступностью. Как правило, CRDT используются для хранения в системах с большей доступностью и менее критичными.