Несколько рабочих ролей дороже? - PullRequest
2 голосов
/ 23 апреля 2011

Какой сценарий дешевле в $$$ при использовании Windows Azure? И лучше ли разделить две задачи. Электронные письма отправляются редко, но сообщения в чате публикуются постоянно.

  1. Наличие одной рабочей роли, обрабатывающей электронные письма, получаемые из очереди Azure каждые 10 секунд, и одна рабочая роль, обрабатывающая отправленные сообщения чата из Azure каждую 1 секунду.
  2. Наличие одной общей рабочей роли, которая обрабатывает как отправку электронной почты, так и сообщения в чате каждую 1 секунду.

Ответы [ 3 ]

4 голосов
/ 26 апреля 2011

Рабочие роли наиболее эффективны, когда они работают на полной или близкой к полной загрузке ЦП - в конце концов, вы платите за них ЦП. Полезный способ добиться этого - объединить рабочие роли таким образом, чтобы все фоновые задания выполнялись в одной роли.

Отличный способ запустить архитектуру с одним типом рабочей роли - это использовать некий общий шаблон рабочей роли - в основном шаблон плагина, при котором рабочая роль читает сообщение из очереди и использует некоторые метаданные, закодированные в сообщении (или имя очереди), чтобы определить тип обработки, которая требуется. Затем он перейдет в хранилище больших двоичных объектов, чтобы извлечь сборку .NET для выполнения этого типа обработки, создать экземпляр этого объекта в новом домене приложения и перенаправить контекст в эту сборку для обработки.

Это рассматривается в сеансе асинхронных рабочих нагрузок в Обучающем комплекте по платформе Windows® . Это также содержит практическую работу, которая проведет вас через пример реализации одного из этих типов подходов.

Ребята из Lokad имеют действительно элегантную реализацию, включающую в себя все полирующие и административные механизмы, которые вам понадобятся, если вы сделаете это правильно. Их реализация получила лицензию New BSD и стала победителем MSFT Azure Partner премии YEar в прошлом году. Это неотъемлемая часть почти каждого проекта Azure, который я создаю. Настоятельно рекомендуется и тривиально интегрировать. http://code.google.com/p/lokad-cloud/

Короче говоря, я предпочитаю обобщенную рабочую роль, реализованную в виде шаблона типа плагина с динамической загрузкой и созданием экземпляров.

1 голос
/ 23 апреля 2011

Все это зависит от вашей стратегии масштабирования и от того, сколько экземпляров вам нужно будет запустить для обработки вашей нагрузки.

Если вы планируете воспользоваться поддерживаемым SLA (время безотказной работы 99,999), вы получитедля каждой роли нужно минимум 2 экземпляра.

Таким образом, если вы разделите их, вам понадобится как минимум 4 экземпляра.Если вы держите их вместе, вам понадобится как минимум 2.

Обработка 1 электронного письма в 10 секунд и 1 сообщения чата в секунду не очень много, и я не думаю, что вам понадобится больше 2случаи, чтобы справиться со всем.

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

0 голосов
/ 26 апреля 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...