Выбор ответа Middle Офлайн и синхронизация обновлено

Last write wins

Вопрос

Чем плоха стратегия разрешения конфликтов «последняя запись побеждает» (last write wins) по времени устройства?

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

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

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

Коротко

Правильный ответ: Часы устройств расходятся, и изменения тихо теряются: побеждает не последнее, а то, у кого часы впереди. LWW проста и годится для многих полей (настройки, статус), но время клиента ненадёжно: пользователь мог перевести часы, а у разных устройств есть дрейф.

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

  1. Часы устройств расходятся, и изменения тихо теряются: побеждает не последнее, а то, у кого часы впередиправильный ответ
  2. Она слишком сложна в реализации: нужен векторный счётчик на каждое устройство и поле
  3. Она требует постоянного соединения, чтобы сверять время каждой записи с сервером
  4. Она работает только для текстовых полей, а числа, списки и вложенные объекты сравнивать по времени изменения нельзя

Разбор

LWW проста и годится для многих полей (настройки, статус), но время клиента ненадёжно: пользователь мог перевести часы, а у разных устройств есть дрейф. К тому же целые объекты перезаписываются, и параллельные изменения разных полей теряются. Улучшения: серверное время или версии (счётчики, ETag), LWW по отдельным полям, а для совместного редактирования CRDT или OT.

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

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