Как реализовать связь между двумя микро сервисами - PullRequest
0 голосов
/ 07 ноября 2018

У меня была дискуссия с моим коллегой о том, как мы должны реализовать связь между двумя микросервисами. На данный момент у нас есть 2 микросервиса, которые зависят друг от друга, потому что мой коллега хотел избежать дублирования кода, повторно используя объекты DTO, которые использовались для REST API.

В идеальном мире у нас не было бы никакой зависимости между сервисами, но в нашем случае это имеет смысл. На мой взгляд, это сочетает в себе услуги, которые хуже, чем дублирование DTO.

Не могли бы вы продублировать DTO во втором микро-сервисе или есть другие решения?

Ответы [ 3 ]

0 голосов
/ 07 ноября 2018

Для концепции «слабой связи» не рекомендуется проектировать микросервисы, взаимодействующие друг с другом через REST. Вот хороший блог для понимания концепции. https://www.beeworks.be/blog/2017/rest-antipattern.html
Одним из способов является использование посредника сообщений в качестве служебной шины.
Если вы используете брокер сообщений, - вы можете использовать вызовы RPC для запроса одного микросервиса к другому. - или вы можете опубликовать событие (pub / sub)
Вот хороший блог, чтобы понять концепции использования брокера сообщений в микросервисной инфраструктуре.
https://dev.to/matteojoliveau/microservices-communications-why-you-should-switch-to-message-queues--48ia

0 голосов
/ 09 ноября 2018

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

Микро сервисы: общая библиотека против дублирования кода

0 голосов
/ 07 ноября 2018

Я предлагаю вам использовать GRPC (буфер протокола) для связи между микросервисами.

  1. создать проект maven, содержащий файл буферов протокола (это похоже на проект, в котором есть только DTO, которые делятся между другими проектами)
  2. создайте, сколько сервисов вам нравится, и добавьте protobuf в качестве зависимости, это может быть даже проект Android
  3. используйте grpc для связи с вашими отдельными сервисами (в микросервисах вы никогда не должны иметь никаких зависимостей между сервисами)

Раньше я пробовал разные решения для обмена данными между сервисами, включая REST API, но я обнаружил, что GRPC - идеальный мир для этого. Также вы можете иметь свои REST API вместе с GRPC.

...