Должны ли мои микросервисы использовать одну и ту же базу данных или общаться через службу обмена сообщениями - PullRequest
0 голосов
/ 20 мая 2019

Я ищу общее руководство по проектированию моей системы.

В настоящее время у меня есть две службы:

  • Служба поставщиков, подключенная к базе данных Mongo, которая содержит определенные данные поставщиков и включающая их твиттеры
  • Служба Twitter, для которой нетподключается к БД, но слушает живые твиттеры конкретных поставщиков.Как только появляется новый твит, служба Twitter обрабатывает твит и отправляет его обратно в службу поставщика для хранения через очередь сообщений.

Проблема: служба Twitter при запуске не знает, каких поставщиковслушать, потому что он не имеет доступа к базе данных поставщиков.

Мое решение: После запуска служба Twitter отправляет в службу поставщика сообщение с запросом списка всех идентификаторов поставщика в Twitter для прослушивания.После получения сообщения служба Vendor получает все идентификаторы Twitter поставщика из базы данных и отправляет список обратно в службу Twitter через очередь сообщений.Затем служба Twitter начинает прислушиваться к каналам этих поставщиков.

Мой вопрос в том, является ли мое решение правильным или просто для службы Twitter будет проще подключиться к базе данных mongo.Я думаю, что один плюс в моем решении состоит в том, что, если я хочу увеличить сервис Twitter, сервис Vendor может управлять тем, какие идентификаторы Vendor отправляются в сервис Twitter для прослушивания.Я просто не совсем уверен, что любое второе мнение будет оценено.

1 Ответ

0 голосов
/ 21 мая 2019

Мое мнение, стоит того, что вы за него платите, это то, что вы на правильном пути.

С помощью сервиса Twitter, запрашивающего у поставщика, вы получаете следующие преимущества:

  • Вы можете применить любой контроль доступа, который вам может понадобиться на границе запроса на обслуживание
  • Вы можете изменить базу данных (или что-либо еще) на стороне службы поставщика, не нарушая службу Twitter.
  • Вы все еще можете отправить запрос, если Vendor Service еще не запущен (устранить проблемы в зависимости от порядка запуска).

Звучит так, как будто у тебя все хорошо ... продолжай.

...