您好我正在开发基于Azure的GPS记录器应用程序。
该功能包括在Web浏览器中的Google地图中实时更新位置并生成报告
我决定使用WorkerRole来获取传入的TCP GPS数据并将其放入表格(用于将来的报告生成)和队列(用于通过WebRole显示带有最新坐标的Map)。
但是让工作人员,Web角色一整天都处于活动状态并让它等待数据输入会浪费资源和成本。
我期待数据每10秒进入一次,每天只有几个小时,随机。
有没有其他方法可以检查数据输入并启动辅助角色?或者是某种调度可能吗?
如何优化应用程序。
此致 阿尼尔
答案 0 :(得分:0)
我需要了解更多有关您的申请的信息;但是我可以在一开始就把一些东西扔到那里让你前进。
您需要如何“实时”处理?
1)您可以运行一个XS实例,该实例除了唤醒大型工作者角色外什么也没做。仍然在不需要时运行,但XS几乎没有成本。
2)从内部部署查看队列,并部署辅助角色。但每次部署角色会产生15分钟的滞后时间。因为你每小时收费,15分钟后把它取下来只让它恢复15分钟是没有意义的,你可以把它留下整整一个小时。
3)本地计划任务每晚部署您的辅助角色,从当天建立的队列中读取消息,完成工作,终止部署。
如果处理不需要“实时”,我会说解决方案3将是您最好的解决方案
希望这些帮助。除了我之外,我很乐意参与到更深层次的工作中,或者指向我们的现场团队中的某个人来帮助你。
在Twitter,LinkedIn等上找到我。
答案 1 :(得分:0)
我认为这样做的最佳方式是让监控过程在本地运行,当它检测到数据时,它可以将您的应用程序部署到Azure来处理它。完成后,删除该应用程序。您可以使用Azure Powershell cmdlet执行此操作,请查看:
答案 2 :(得分:0)
我不认为启动和停止服务对于您想要做的事情来说真的很实用。基本上你想让你的服务一直可用,但不想为它们付费。
如果您担心费用,我唯一可以建议的是,如果您的工作人员角色在80以外的端口上运行,请在您的网络角色中运行它。我的意思是将您当前在工作角色的RoleEntryPoint中执行的所有操作都放在Web角色的RoleEntryPoint中。它应该没有任何代码更改。这样,您只需支付一组实例,而不是两组。