Хороший ответ от Gaurav, но я хотел добавить немного больше деталей, так как думаю, что может быть небольшая путаница с веб-ролями и рабочими ролями. Каждая роль - это определение группы виртуальных машин, которые делают то же самое, что и созданы вами (вы не имеете дело с ОС - вы просто запускаете свое приложение, а Azure позаботится о Сама ВМ).
Когда облачная служба запущена, будет как минимум один экземпляр каждого типа ролей. Итак, в вашем случае, выполняя как веб-роль, так и рабочую роль, у вас будет запущено как минимум две виртуальные машины.
Если вы решите масштабировать свою веб-роль, скажем, до трех экземпляров, а затем решите сократить ее до двух экземпляров, вы не сможете выбрать, какой из них закрыть; об этом позаботится структура Azure. Помните, что каждый экземпляр роли выполняет идентичный код, а Azure балансирует нагрузку на ваши экземпляры роли (через внешние конечные точки, которые вы определяете). Единственное, о чем нужно беспокоиться, - это выключение. У вас ок. 5 минут на очистку всех запущенных процессов (и вы можете легко извлечь конкретный экземпляр из подсистемы балансировки нагрузки во время завершения работы, поскольку вы получаете событие Stopping()
).
Вы не можете закрыть всю роль (например, все экземпляры роли) в облачной службе (так что ... вы не можете отключить экземпляры своей рабочей роли, оставив экземпляры своей веб-роли запущенными). Если это необходимо, вы всегда можете рассмотреть возможность запуска своей веб-роли в одной облачной службе и рабочей роли в другой облачной службе. Если они используют очереди для передачи данных, все по-прежнему будет работать, как раньше. Если экземплярам веб-ролей требуется прямой доступ к экземплярам рабочих ролей, вы можете поместить обе облачные службы в виртуальную сеть.
Еще одна вещь, которую следует учитывать: вам не обязательно иметь отдельные роли. Если стоимость является фактором, вы можете запустить весь свой код в своей веб-роли. Требуется немного усилий, чтобы развернуть дополнительные процессы / потоки в вашей веб-роли во время OnStart()
- помните, что экземпляры ролей являются полными виртуальными машинами Windows Server; беги, что хочешь. С одним определением роли масштабирование немного грубо: все масштабируется вместе. С отдельными ролями вы можете точно настроить масштабирование (что гораздо важнее при создании более крупных систем).
person
David Makogon
schedule
15.10.2013