Выбор ответа Middle Офлайн и синхронизация обновлено
Last write wins
Вопрос
Чем плоха стратегия разрешения конфликтов «последняя запись побеждает» (last write wins) по времени устройства?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Часы устройств расходятся, и изменения тихо теряются: побеждает не последнее, а то, у кого часы впереди. LWW проста и годится для многих полей (настройки, статус), но время клиента ненадёжно: пользователь мог перевести часы, а у разных устройств есть дрейф.
Варианты ответа
- Часы устройств расходятся, и изменения тихо теряются: побеждает не последнее, а то, у кого часы впередиправильный ответ
- Она слишком сложна в реализации: нужен векторный счётчик на каждое устройство и поле
- Она требует постоянного соединения, чтобы сверять время каждой записи с сервером
- Она работает только для текстовых полей, а числа, списки и вложенные объекты сравнивать по времени изменения нельзя
Разбор
LWW проста и годится для многих полей (настройки, статус), но время клиента ненадёжно: пользователь мог перевести часы, а у разных устройств есть дрейф. К тому же целые объекты перезаписываются, и параллельные изменения разных полей теряются. Улучшения: серверное время или версии (счётчики, ETag), LWW по отдельным полям, а для совместного редактирования CRDT или OT.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.