Этот вопрос очень слабо связан с Axon Server / Framework, поскольку я изучаю его специально, изучая и пытаясь научиться создавать микросервисы. Поскольку сложно узнать обо всех архитектурных шаблонах без реального практического опыта (и трудно получить практический опыт без большого приложения, с которым можно на самом деле тестировать / строить), я много теоретизирую здесь (мои вопросы могут просто будь глупым, извини, я еще учусь).
Я скачал сервер Axon, успешно собрал и запустил демонстрационную версию подарочной карты на трех отдельных микросервисах. Это прекрасно работает, я вижу события и все такое на Axon Dashboard, но я не могу не думать о том, что, если я действительно создал очень большое корпоративное приложение.
Учтите это:
Я создаю потоковую платформу, подобную Twitch. Существуют основные c, очевидные услуги, такие как служба поддержки клиентов с данными своего профиля, служба заказов (для подписок, пожертвований) и т. Д. c.
Но есть и другие сервисы, такие как система чата. Гипотетически, я чувствую, что использование системы чата для событий было бы весьма полезно, потому что у вас были бы встроенные временные метки для воспроизведения чата, если зрители смотрят VOD. Однако я также чувствую, что не следует смешивать события для системы чата с хранилищем событий, которое занимается транзакциями; Это две совершенно разные системы, и просто хранить каждое событие из каждой службы в одном хранилище событий ... Monolithi c?
Мне все еще неясно, каковы лучшие практики. Все примеры и примеры из докладов всегда показывают очень простые c системы с типичными агрегатами Customer, Order, Item и не go подробно описывают, как это простое приложение вырастет в крупную службу, такую как Twitch.
Итак, мои вопросы таковы:
1) Должны ли вы использовать источник событий для всего приложения или вы можете выбрать, какие из них будут источником событий, а не?
2) Имеет ли Axon Server поддерживать два разных хранилища событий, например, один для системы чата и один для других служб? Буду ли я в этом случае запускать два разных экземпляра Axon Server? Если у приложения когда-либо будет два разных хранилища событий, или я помещаю каждое событие в одно хранилище событий, независимо от того, отправляет ли что-то вроде системы чата куда больше событий, чем что-либо еще (будет ли хорошая идея получить систему чатов, учитывая сценарий использования, который я указал, где зрители могли бы «воспроизвести» журнал чата?)?
3) Сама идея единого хранилища событий, являющегося единственным источником истины, кажется монолитной c. Я ошибаюсь, думая об этом, и если нет, как можно обойти это, если у меня действительно большое приложение?