Вопрос

Я создаю приложение, которое хочу поместить в облако. Это приложение имеет одну основную функцию.

Он размещает сеансы CLIENT для сокетов от имени других пользователей (вспомним Beejive IM для iPhone, где он размещает сеансы IM для клиентов, чтобы поддерживать состояние в этих сетях IM, позволяя клиенту подключаться / отключаться по желанию, не нарушая Подключение к сети чата).

Теперь, как я и планировал, так это то, что один «рабочий экземпляр» может обрабатывать только конечное число клиентских сессий (скажем, 50 000 для аргументации). Эти сессии будут очень долгоживущими рабочими задачами.

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

Сейчас я рассматриваю GoGrid в качестве своего провайдера и решаю эту проблему с помощью программного обеспечения Apache Active Messaging Queue. Мое веб-приложение ставит в очередь задачи «отключить», которые назначены определенному идентификатору экземпляра. Поэтому каждому клиентскому сеансу присваивается определенный идентификатор экземпляра. В этом случае экземпляр удаляет только те задачи «отключить», которые ему назначены.

Мне интересно, возможно ли сделать что-то подобное в Azure, и как я обычно это делаю. Мне нравится идея не настраивать много разных виртуальных машин для масштабирования, а просто развертывать один пакет. Кроме того, было бы неплохо использовать очереди Azure вместо интеграции стороннего продукта, такого как Apache ActiveMQ или даже MSMQ.

Это было полезно?

Решение

Я буду очень обеспокоен созданием производственного приложения в Azure до тех пор, пока не будут окончательно определены набор функций, цены и условия лицензирования. Для начала, вы даже не можете сделать сравнение затрат между ним и, например, GoGrid или EC2 или Моссо. Так что я не понимаю, как это могло бы закончиться лидером. Кроме того, мы знаем, что все эти системы будут иметь глюки по мере взросления. Сервисы Amazon используются гораздо шире, чем любые другие, и были общедоступными в течение многих лет. ИМХО выбор Azure - это рецепт боли, когда они стабилизируются.

Рассматривали ли вы сервис простой очереди Amazon для организации очередей?

Другие советы

Я думаю, что вы можете использовать Windows Azure для этого. Я рекомендую создать очередь для каждого отслеживаемого сеанса. Затем поместите сообщение о разъединении (например) в очередь для этого сеанса. Рабочий экземпляр, который обрабатывает это соединение, должен быть единственным опросом в очереди, поэтому он должен обрабатывать выполнение задачи для этого соединения.

Что касается приложения, в котором размещаются соединения с сокетами для подключения клиентов, я бы дважды проверил, что разрешено, так как я думаю, что с помощью Azure разрешено устанавливать только соединения HTTP и HTTPS.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top