2016-11-17 7 views
0

Для моего веб-приложения мне понадобится отдельный экземпляр EC2 для обработки вещей с интенсивным процессором и вещей, которые могут быть поставлены в очередь, чтобы они не обременяли экземпляр веб-службы, например изменение размера изображения, отправка электронной почты ....Пожалуйста, объясните Amazon SQS (и очередь в целом)

При создании экземпляра AWS Elastic Beanstalk предлагается выбрать между «веб» или «рабочей» средой. Насколько я понимаю, в рабочей среде я буду обрабатывать такие задачи.

Какова роль SQS в этом контексте? Я читал, что речь идет только об отправке «сообщений» и подобных материалов, но как я смогу получить изображение с «сообщением»?

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

ответ

0

Служба обслуживания очередей (например, Amazon SQS) используется для хранения сообщений для последующего поиска. Подумайте, как список TODO - вы добавляете элементы в очередь, а затем вы извлекаете элемент из очереди и предпринимаете действия над элементом.

Например, пользователи загружают изображения на веб-сайт, и вы хотите создавать эскизы с этих изображений. Ваш сайт сохранит изображение в Amazon S3, а затем вытащите сообщение в очередь SQS. Сообщение будет включать ссылку на изображение в S3 и сведения о пользователе.

Затем ваш рабочий стол Утешитель beanstalk запросит сообщение из очереди и обработает изображение. Он будет извлекать изображение из S3, изменять его размер, хранить в ведре S3, а затем, возможно, отправить по электронной почте пользователю, чтобы сказать, что задание завершено. Затем работник завершает работу, а Elastic Beanstalk запускает нового рабочего, чтобы прочитать следующее сообщение из очереди и сделать все это снова.

Elastic Beanstalk worker

Так что, да - вы будете создавать код работник. Эластичный Beanstalk вызовет работника с сообщением SQS. Сам SQS ничего не запускает - на самом деле это эластичный beanstalk, который извлекает сообщение и запускает рабочего.

Elastic Beanstalk worker environments

+0

Спасибо, это проясняет все это. Таким образом, на самом деле рабочий запустит новый отдельный экземпляр приложения, просто чтобы выполнить работу в очереди. Это будет вызвано ударом по URL-адресу. Так что все, что нужно сделать на стороне кода, - это определить маршруты и код для обработки очередей. Это оно ? –