2016-07-18 7 views
0

У меня есть приложение, то есть чтение событий из Amazon SQS. Проблема в том, что при развертывании новой версии приложения она подключается к одной очереди, поэтому есть два стека - старые и новые однопользовательские сообщения.Балансировка трафика SQS

Я бы хотел, чтобы старый стек потреблял 95% сообщений, а новый только 5%, поэтому я могу провести живой тест. Когда я уверен, новая версия в порядке, я закрыл старый стек и сделал новый, чтобы использовать 100% событий.

Единственное решение, которое я вижу сейчас, это реализовать на стороне приложения некоторую функцию, например некоторую конечную точку REST, чтобы контролировать, сколько сообщений SQS должно пытаться читать. Однако, возможно, есть некоторые другие решения/инструменты для этой проблемы. (на самом деле, есть несколько приложений, поэтому, если я могу решить эту проблему, не касаясь их всех, было бы замечательно)

Как вы относитесь к развертыванию новой версии и чтению из SQS?

благодаря

ответ

0

Скажем, есть два приложения стеки: S1, который нужно обработать 90% сообщений, и S2 10%.

Это то, что они могут сделать:

  • Они имеют две конфигурации: n_messages_to_get и n_messages_to_process. Для S1 значения будут соответственно 10 и 9. Для S2, 10 и 1 соответственно.
  • Каждый из них получит n_messages_to_get из SQS, но только из них n_messages_to_process.

Вы также можете подумать о том, чтобы иметь такую ​​конфигурацию в базе данных, например DynamoDB, так что вам не нужно развернуть свой код, если вам нужно набрать номер вверх или вниз.

Принятые допущения:

  • Оба S1 и S2 займет примерно то же самое время, чтобы обработать сообщение.
  • Вы можете переносить некоторое отклонение в количестве сообщений, обрабатываемых обоими. Например, вы будете в порядке, если S1 обрабатывает 87% сообщений и S2 13%.