Является ли рабочая роль Azure методом, выполняющим тяжелую работу, с балансировкой нагрузки?

Ваша помощь поможет мне лучше понять Windows Azure. Заранее спасибо.

Я понимаю рабочую роль как метод (метод Run () в рабочей роли), который выполняет некоторые трудоемкие операции. Это позволяет мне иметь несколько экземпляров этой рабочей роли, чтобы ускорить работу в случае скачков трафика.

1) могу ли я иметь рабочую роль, которая делает больше, чем что-либо вроде: - метод, создающий PDF; - метод построения диаграммы; -метод, который разбирает сом HTML; -метод, обрабатывающий изображение

Я мог бы легко сделать все это с 4 рабочими ролями (один метод RUN () для каждой функции, указанной выше), но это очень дорого. Могу ли я разместить эти 4 вещи как методы в одной и той же рабочей роли?

2) В чем недостатки размещения службы WCF в рабочей роли?

3) В чем заключается недостаток общения между экземплярами в одном решении Azure через WCF с гарантированными очередями? Это медленнее?


person Ryan    schedule 24.12.2010    source источник


Ответы (2)


Интерфейс рабочей роли прост ... вы реализуете метод Run (), который никогда не возвращается, и мы вызываем его. То, что вы делаете, может быть чем угодно ... вы можете запускать 100 потоков, выполняющих разные действия, вы можете использовать Process.Start () для запуска отдельных процессов, вы можете запускать веб-сервер и т. Д.

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

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

person user94559    schedule 24.12.2010

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

person Doobi    schedule 30.12.2010