AWS Beanstalk - уровень общего доступа к базе данных между работником и веб-сервером - PullRequest
3 голосов
/ 22 февраля 2020

Я создаю какое-то веб-приложение, используя NodeJS. Я развернул приложение на веб-сервере AWS beanstalk и отделил некоторые тяжелые задачи и развернул тяжелые задачи для различных AWS рабочих beanstalk. Главный веб-сервер выполняет работника с SQS (aws очередь).

Основной веб-сервер имеет большой слой БД для подключения, получения и сохранения в базе данных. Рабочим нужны некоторые действия с БД, каждому рабочему типу нужны разные действия, которые уже реализованы на уровне БД основного веб-сервера.

Поэтому я пытаюсь найти способ использовать слой БД в Интернете. сервер без дублирования в каждом рабочем типе (это то, что я делаю сейчас).

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

Я прикрепил картинку того, как это выглядит:

  • номер 1 основного сервера (с полным уровнем базы данных)
  • номер 2 очереди
  • номер 3 рабочих. (с дублированными действиями в БД)

Diagram

Есть ли какое-нибудь хорошее решение для этого?

Ответы [ 2 ]

0 голосов
/ 04 марта 2020

Сколько операций сохранения / загрузки вы выполняете с рабочих? Сколько рабочих работает одновременно? Я думаю, что трудно предложить единственное решение, не понимая, сколько работников там и сколько данных нужно сохранить.

В общем, я могу представить несколько решений:

  1. Вы можете открыть API на веб-сервере, поэтому после завершения работы он вызовет веб-сервер. Если у вас много работников, это не сработает, поэтому вам могут понадобиться работники между ними (давайте назовем это «сохранить работника»), так что нынешние работники поставят в очередь «сохранить работу», тогда «спасение работника» вызовет API веб-сервера, это гарантирует, что веб-сервер не перегружен операциями сохранения.

  2. Вы можете создать дубликат экземпляра веб-сервера (назовем его «рабочий веб-сервер») который предназначен для сохранения результатов от рабочих, поэтому рабочие будут отправлять результат в новую SQS, а на этом «рабочем веб-сервере» будут прослушивать запросы на сохранение в SQS. Вы можете контролировать, в каком режиме будет работать веб-сервер, задав, например, переменную среды.

  3. Возможно, вы сможете извлечь слой БД в пакет или библиотеку, которая используется на веб-сервере, плюс рабочие как хорошо, но вы должны быть осторожны, чтобы не открывать много соединений параллельно с базой данных и не выполнять много операций с БД одновременно.

0 голосов
/ 04 марта 2020

Просто используйте встроенную интеграцию RDS с вашей средой Beanstalk: https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.managing.db.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...