Azure: это будет работать для моего приложения?
Я создаю приложение, которое хочу поместить в облако. Это приложение имеет одну основную функцию.
Он проводит сеансы CLIENT сокетов от имени других пользователей (например, Beejive IM для iPhone, где он размещает сеансы IM для клиентов, чтобы поддерживать состояние в этих сетях IM, позволяя клиенту подключаться / отключаться по желанию, не прерывая подключение к сети IM).).
Теперь, как я планировал это сейчас, так это то, что один "рабочий экземпляр" может обрабатывать только конечное число клиентских сессий (скажем, 50000 для аргументации). Эти сессии будут очень долгим рабочим заданием.
Проблема, которую я пытаюсь решить, заключается в том, что мне иногда нужно будет выполнять задачи для определенных клиентских сессий (например: если мне нужно отключить клиентскую сессию). Смогу ли я поставить в очередь меньшую задачу с помощью Azure, которую сможет снять в очередь только тот экземпляр, на котором размещен конкретный сеанс клиента?
Сейчас я рассматриваю GoGrid в качестве своего провайдера и решаю эту проблему с помощью программного обеспечения Apache Active Messaging Queue. Мое веб-приложение ставит в очередь задачи "отключить", которые назначены определенному идентификатору экземпляра. Поэтому каждому клиентскому сеансу присваивается определенный идентификатор экземпляра. Экземпляр затем удаляет только те задачи "отключить", которые ему назначены.
Мне интересно, возможно ли сделать что-то похожее на Azure, и как я обычно это делаю. Мне нравится идея не настраивать много разных виртуальных машин для масштабирования, а просто развертывать один пакет. Кроме того, было бы неплохо использовать Очереди Azure вместо интеграции стороннего продукта, такого как Apache ActiveMQ или даже MSMQ.
3 ответа
Я буду очень обеспокоен созданием производственного приложения в Azure, пока не будут окончательно определены набор функций, цены и условия лицензирования. Для начала, вы даже не можете сделать сравнение стоимости между ним и, например, GoGrid или EC2 или Mosso. Так что я не понимаю, как это могло бы закончиться лидером. Кроме того, мы знаем, что все эти системы будут иметь глюки по мере взросления. Сервисы Amazon используются гораздо шире, чем любые другие, и были общедоступными в течение многих лет. ИМХО выбор Azure - это рецепт боли, когда они стабилизируются.
Рассматривали ли вы сервис простой очереди Amazon для очередей?
Что касается приложения, в котором размещаются соединения с сокетами для подключения клиентов, я бы дважды проверил то, что разрешено, поскольку я думаю, что с помощью Azure разрешено устанавливать только соединения HTTP и HTTPS.
Я думаю, что вы можете использовать Windows Azure для этого. Я рекомендую создать очередь для каждого отслеживаемого сеанса. Затем поместите сообщение о разъединении (например) в очередь для этого сеанса. Рабочий экземпляр, который обрабатывает это соединение, должен быть единственным опросом в очереди, поэтому он должен обрабатывать выполнение задачи для этого соединения.