Автономная синхронизация и получение событий

Часть нашего приложения на основе CRUD нуждается в:

  1. Автономная двусторонняя синхронизация
  2. Возможность изменять данные до готовности, а затем "публиковать".
  3. Журнал аудита

Event Sourcing (или "шаблон команды") - это то, на что я смотрю, чтобы выполнить эти пункты. Я чувствую себя комфортно с решением 2 и 3 с этим, но не ясно для первого пункта, синхронизации.

Если для каждой команды используются временные метки (при необходимости), нужно ли применять автономные команды к основной системе, как они были бы в режиме реального времени (объединены), или я могу просто считать, что они применяются в конце любого команда (с более поздней отметкой времени)?

Любое базовое описание алгоритма для командной синхронизации будет полезно.

1 ответ

Вы захотите ознакомиться с мнением Грега Янга о CQRS и иногда подключаемых системах.

Команды должны запускаться в системе записи в момент их получения. Таким образом, ваш автономный клиент может работать с локально кэшированными, устаревшими, копировать записи и ставить в очередь команды. При повторном подключении клиент обновляет свою копию системы записи, согласовывает свои команды в очереди с новым состоянием мира, а затем отправляет новые команды в систему записи.

Доклад Грега обрисовывает в общих чертах, как работало согласование команд (в основном, смотря на события, которые генерируют временные команды, и ища конфликты с событиями, записанными системой записи). Беседа подразумевает, что эксперты в области захотят, чтобы конфликты событий решались особым образом.

Другие вопросы по тегам