Шаблон / алгоритм синхронизации клиент-сервер?
У меня есть ощущение, что там должны быть шаблоны синхронизации клиент-сервер. Но я совершенно не смог погуглить.
Ситуация довольно проста - сервер является центральным узлом, к которому несколько клиентов подключаются и манипулируют одними и теми же данными. Данные могут быть разделены на атомы, в случае конфликта, что бы ни находилось на сервере, имеет приоритет (чтобы избежать вовлечения пользователя в решение конфликта). Частичная синхронизация предпочтительна из-за потенциально больших объемов данных.
Существуют ли какие-либо модели / передовые практики для такой ситуации, или если вы не знаете о них - каков будет ваш подход?
Ниже я расскажу, как решить эту проблему: параллельно с данными будет вестись журнал изменений с отметкой времени всех транзакций. Когда клиент подключается, он получает все изменения со времени последней проверки в консолидированной форме (сервер просматривает списки и удаляет добавления, за которыми следуют удаления, объединяет обновления для каждого атома и т. Д.). И вуаля, мы в курсе.
Альтернативой будет сохранение даты изменения для каждой записи, и вместо того, чтобы выполнять удаление данных, просто пометьте их как удаленные.
Какие-нибудь мысли?