У меня такое ощущение, что вы используете хранилище событий как канал связи, а не как базу данных.Если вы хотите, чтобы микро-сервис 2 передавал данные из микро-сервиса 1 , вам следует общаться с сервисами REST.
Конечно, использование сервисов REST может сделать вас менее устойчивымк отключениям.В этом случае использование технологии, предназначенной для общения, будет правильным решением.(Я думаю, MQ / Темы, такие как RabbitMQ, Kafka и т. Д.)
Затем, когда ваши службы общаются друг с другом, вам все равно нужно будет сохранять свои данные ... но только на одно местоположение.Следовательно, вам нужно определить , где вы хотите сохранить данные.
Задайте себе вопрос:
Кто будет управлять сохранением данных?
- Это Microservice1?Если это так, то каждый раз, когда Microservice2 нужно будет читать данные, он будет вызывать REST для Microservice1.
Это наоборот?Microservice2 управляет данными, а Microservice1 использует их?
Это может быть третий микросервис, который вы еще даже не создали.Это зависит от того, как вы применили разделение интересов.
Давайте рассмотрим пример:
- Microservice1 отвечает за обработку наших данных для их экспорта в PDF и другие.форматы
- Обязанностью Microservice2 является предоставление услуги устаревшему партнеру, который требует, чтобы наши данные возвращались в собственном представлении.
кто будет хранить данные, здесь?
- Microservice1 не должен быть единственным, чтобы сохранять данные: его работа заключается только в преобразовании данных в другие форматы,Если для этого требуются некоторые данные, он будет получать их от того, кто управляет данными.
- Микросервис2 не должен быть тем, чтобы сохранять данные.В конце концов, может быть, у нас есть ряд других микросервисов, похожих на этот, но для других партнеров, с другими проприетарными форматами.
- Если есть служба, где вы можете выполнять операции CRUD, то это ваш парень.Если у вас нет такой службы, возможно, вы найдете существующий микросервис, у которого не будет конфликтующих обязанностей.
Например: если у меня есть микросервис3, который всегда проверяет мой ObjectX
изменено, он отправит PDF-представление его на какой-либо адрес и уведомит всех моих партнеров, что данные устарели.В этом сценарии этот микросервис выглядит хорошим кандидатом на то, чтобы стать «регулятором данных» для этой части домена и быть универсальным средством для записи / чтения в базе данных.