Выбор ответа Senior System design на фронте обновлено

Совместное редактирование

Вопрос

Совместный текстовый редактор должен работать офлайн и сливать правки без центрального сервера-арбитра. Какой подход подходит лучше всего?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: CRDT (например, Yjs или Automerge). CRDT это структуры данных, правки которых сходятся к одному состоянию в любом порядке применения, без центрального арбитра, поэтому они хорошо работают офлайн и в p2p.

Варианты ответа

  1. Last write wins по времени сохранения документа
  2. Блокировка документа одним пользователем
  3. CRDT (например, Yjs или Automerge)правильный ответ
  4. Отправка всего документа при каждом изменении

Разбор

CRDT это структуры данных, правки которых сходятся к одному состоянию в любом порядке применения, без центрального арбитра, поэтому они хорошо работают офлайн и в p2p. OT (operational transformation) тоже решает задачу, но обычно требует центрального сервера для упорядочивания. Last write wins теряет чужие правки. Блокировка ломает совместность. Отправка всего документа порождает конфликты и огромный трафик.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.