Как справиться с ситуациями, когда прочитанная модель не синхронизировалась с журналами событий? - PullRequest
9 голосов
/ 21 ноября 2010

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

В случае, если мне нужно добавить новую модель чтения (т.е. новый вид отчета), я могу сделать то же самое снова - я воспроизведу свои события.

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

Как вы решаете эту проблему? Спасибо.

1 Ответ

7 голосов
/ 23 ноября 2010

В чем причина сбоя в обработчике событий? Как долго длится вечность?

Чтение обновлений модели редко дает сбой (в отличие от командных обработчиков), поскольку внутренняя логика чрезвычайно проста. Сбои могут быть вызваны временными проблемами (IO / перебои в сети) и будут автоматически обрабатываться шиной сообщений.

Однако, если модель чтения по какой-то причине испортилась, то самый простой способ ее сбросить и пропустить через нее события. Даже миллионы событий заняли бы достаточно мало времени. Кроме того, вы всегда можете использовать подход Map-Reduce.

Я бы не рекомендовал делать снимки для чтения моделей. Я думаю, что это только усложняет архитектуру без каких-либо существенных преимуществ.

...