Можно ли использовать AWS Elastic Beansalk для распределенной обработки сообщений?

Я планирую использовать простое веб-приложение Java для начальной загрузки и загрузки моего клиента Spring JMS, который будет прослушивать сообщения в очереди и обрабатывать входящие сообщения. Мое веб-приложение существует исключительно для загрузки клиента JMS; не будет ни одного пользователя, получающего доступ к этому приложению.

Если бы я развернул это приложение на AWS Beanstalk, будет ли оно масштабироваться автоматически, если очередь заданий загружена сообщениями, а прослушиватель заданий jms в веб-приложении использует все доступные ресурсы — память. нитки и т.п. ? Будет ли AWS запускать новые экземпляры приложения, даже если на балансировщике нагрузки нет трафика.




Ответы (1)


Вы можете настроить Elastic Beanstalk для увеличения и уменьшения масштаба на основе ряда различных показателей. По умолчанию он использует NetworkOut, но у вас есть несколько других вариантов, таких как CpuUtilization и DiskWriteBytes.

В вашем случае вы можете установить триггер масштабирования на CpuUtilization, чтобы, когда ваш JMS-клиент сильно загружен обработкой сообщений, вы могли увеличить количество клиентов. Например, если загрузка ЦП составляет >80% в среднем в течение 5 минут, вы можете увеличить масштаб.

ElasticBeanstalk использует метрики CloudWatch в качестве триггеров масштабирования; это те же показатели, которые вы видите на вкладке «Мониторинг» в Elastic Beanstalk и EC2. В EC2 можно создавать пользовательские метрики, но я не знаю, сможет ли Elastic Beanstalk использовать пользовательские метрики в качестве триггеров автоматического масштабирования.

см. документацию Elastic Beanstalk для получения дополнительной информации о триггерах масштабирования. .

person Ken Liu    schedule 07.10.2012