История и особенности Казанского кладбища в Санкт-Петербурге

Требования

▍ Функциональные

  • Совместная работа над документом: система должна обеспечивать возможность одновременного просмотра или редактирования документов множеством пользователей.
  • Разрешение конфликтов: система должна интерактивно транслировать вносимые в документ правки по всем пользователям, которые над этим документом работают. При этом она также должна разрешать конфликты, возникающие между пользователями при редактировании одной и той же части документа.
  • Автодополнение: пользователю должны предлагаться варианты автозавершения часто используемых слов и фраз, а также исправление грамматических ошибок.
  • Число просмотров: редакторам должна быть доступна информация о количестве просмотров документа.
  • История: программа должна отображать историю совместной работы над документом.

▍ Нефункциональные

  • Задержка: во время работы над одним документом к системе может быть подключено множество пользователей. И если они будут географически распределены по удалённым локациям, то обеспечение устойчиво низкой задержки окажется непростой задачей.
  • Согласованность: система должна разрешать конфликты, возникающие при одновременном редактировании одних и тех же частей документа разными пользователями, обеспечивая его согласованное представление. В то же время пользователи из разных регионов должны наблюдать обновлённую версию документа. Поддержание согласованности является важным аспектом для всех пользователей, независимо от того, находятся они в одном регионе или в разных.
  • Доступность: сервис должен быть доступен всегда и являться устойчивым к сбоям.
  • Масштабируемость: на случай роста числа одновременных пользователей в архитектуру сервиса должна быть заложена возможность увеличения мощности.

Техники разрешения конфликтов

▍ Операционная трансформация (OT)

Рис. 5 Пример операционной трансформации

  • Сохранение последовательности: если операция произошла до операции , она выполняется до неё.
  • Конвергентность: все копии документа, находящиеся на разных клиентах, в конечном итоге оказываются одинаковыми.
  • Любая операция с символами может привести к изменению позиционного индекса, а значит порядок их выполнения имеет значение.
  • Её сложно разрабатывать и реализовывать.

▍ Бесконфликтный реплицируемый тип данных (CRDT)

  • Глобально уникального идентификатора.
  • Глобального упорядочивания.

Рис. 6 Упрощённая структура данных CRDT

  • других символов не изменялся вследствие каких-либо операций.
  • Исключить зависимость от порядка выполнения операций разными пользователями.

Рис. 7 Устранение зависимости от порядка выполнения операций

Понравилась статья? Поделиться с друзьями: