Я создаю проект с архитектурой микросервисов. И я создал два микросервиса.
Один из них предназначен для объекта продукта, другой для объекта счета. У них есть свои конечные точки, и они соединены вместе с шлюзом (я использую архитектуру микросервисов jhipster).
Счет-мс должен иметь доступ к списку продуктов. Мне интересно, как я могу общаться между этими двумя мс. У меня есть три подхода в моем уме:
-
Отправьте запрос от bill-ms в очередь - например rabbitMQ, чтобы получить эти продукты с этими идентификаторами из product-ms (я не знаю, что является узким местом этого)
-
Отправить запрос на шлюз для обслуживания продукта и получить оттуда продукт (я беспокоюсь о задержке из-за размера данных между ними и таким образом я не касаюсь базы данных напрямую, поэтому я всегда зависят от шлюза)
-
Я могу дублировать репозитории, службы и объекты в bill-ms (это уродливый способ, и я думаю, что это нарушает правило ms-архитектуры, а обслуживание очень сложно)
Если у вас есть другие подходы, я ценю, что вы поделитесь им со мной.
Edit
- Теперь я знаю, что такое узкое место: скажите, что есть 3 экземпляра bill-ms и как rabbitMQ решает, какой экземпляр отвечает? или как мне сказать ленте " дать мне бесплатный экземпляр bill-ms для подписки на запрос от rabbitMQ" для балансировки нагрузки.