Автоматическое масштабирование облачных сервисов, которое работает с некоторыми командами - PullRequest
1 голос
/ 05 марта 2020

У меня есть заказчики в качестве облачных сервисов (classi c) на Azure. Я запланировал автоматическое масштабирование количества экземпляров для рабочих часов (5) и других (20).

Иногда возникает проблема, когда некоторые работники работают с командами, но это начало рабочих часов, поэтому экземпляры "убит" (уменьшать). В результате команды не завершены. Команды - это сообщения из Azure очередей. Так что в основном сообщения возвращаются в очередь. Но другому работнику требуется некоторое время, чтобы снова получить это сообщение.

Итак, вопрос - существует ли автоматический c способ масштабирования работников только после того, как они закончили работать с сообщением / командой?

1 Ответ

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

См. Ответы на Как остановить один экземпляр / ВМ WebRole / WorkerRole .

Короче говоря, вы можете использовать API Delete Role Instances (https://docs.microsoft.com/en-us/previous-versions/azure/reference/dn469418 (v = azure .100) ), чтобы указать, какие экземпляры ролей вы хотите закрыть. Однако это не работает с автомасштабированием, и вам придется написать некоторый код, чтобы определить, какие экземпляры вы хотите отключить.

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

...