Нужен совет по архитектуре для приложения GPS на базе Azure - PullRequest
0 голосов
/ 22 марта 2012

Привет, я работаю над приложением GPS-регистратора на основе Azure.

Функциональность включает в себя прямое обновление местоположения на картах Google в веб-браузере и генерацию отчетов

Я решил, что WorkerRole должен извлекать входящие данные TCP GPS и помещать их в таблицу (для будущего создания отчетов) и в очередь (для отображения карты с последними координатами через WebRole).

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

Я ожидаю, что данные будут поступать каждые 10 секунд, только несколько часов в день, случайным образом.

Есть ли альтернатива для проверки ввода данных и запуска рабочей роли? Или возможно какое-то планирование?

Как оптимизировать приложение.

С уважением, Анил

Ответы [ 3 ]

0 голосов
/ 22 марта 2012

Лучший способ, которым я мог бы подумать, - это запустить процесс мониторинга на месте, а при обнаружении данных он может развернуть ваше приложение в Azure для его обработки.И когда это будет сделано, удалите приложение.Для этого вы можете использовать командлеты Azure Powershell, взгляните на:

http://wappowershell.codeplex.com/

0 голосов
/ 23 марта 2012

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

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

0 голосов
/ 22 марта 2012

Мне нужно больше узнать о вашем приложении;но есть несколько вещей, которые я мог бы выкинуть туда с самого начала, чтобы вы начали.

Насколько «в реальном времени» вам нужна обработка, чтобы быть?

1) вы могли бы запуститьЭкземпляр XS, который ничего не делал, но разбудил большие рабочие роли.по-прежнему работает, когда ему потенциально не нужно, но XS стоит почти ничего.

2) проверить очередь с поиском из локальной среды и развернуть рабочую роль.но для развертывания роли каждый раз требуется 15 минут.поскольку с вас взимается плата за час, снимать ее через 15 минут только для ее восстановления было бы бессмысленно через 15 минут, вы также можете оставить ее на полный час.

3) локальное запланированное заданиечтобы развертывать вашу рабочую роль каждую ночь, читайте сообщения из очереди, которая создавалась за день, выполняйте работу, завершайте развертывание.

Я бы сказал, что решение 3 будет вашим лучшим решением, если обработкане нужно быть "в реальном времени"

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

Найдите меня в Twitter, LinkedIn и т. д.

...