Azure: это будет работать для моего приложения?
Вопрос
Я создаю приложение, которое хочу поместить в облако. Это приложение имеет одну основную функцию. Р>
Он размещает сеансы 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.