Microsoft Azure 上的实时应用程序
Posted
技术标签:
【中文标题】Microsoft Azure 上的实时应用程序【英文标题】:Real time application on Microsoft Azure 【发布时间】:2012-01-19 04:14:36 【问题描述】:我正在开发一个实时应用程序并在 Azure 上构建它。
这个想法是每个用户都报告自己的一些事情,所有其他用户都应该立即看到它(他们每隔几秒钟左右轮询一次服务以获取新信息)
我现在的方法是为 WCF REST 服务使用 Web 角色,我在没有 Worker 角色的情况下对数据库 (SQL Azure) 进行所有写入,以便立即写入。
我开始认为,也许使用 Worker Role 和 Queue 进行写入可能更具可扩展性,但可能会干扰服务的实时性。 (worker 角色可能不会立即从队列中获取任务)
这是真的吗?我该如何处理这个问题?
谢谢
【问题讨论】:
【参考方案1】:您可以看看 SignalR,它不支持开箱即用的农场场景,但应该能够使用任一内部端点调用来更新每个实例,使用 Azure 服务总线,或使用 AppFabric 缓存。这样,您将获得 Push 场景而不是 Pull 场景,因此您不必轮询端点以获取潜在更新。
【讨论】:
【参考方案2】:虽然队列确实会增加一点延迟,但您可以扩展 Worker Role 实例的数量来处理大量消息。
您还可以通过一次接收多条消息来优化队列阅读。由于单个队列的可扩展性目标为 500 TPS,因此您可以在读取时远远超过每秒 500 条消息。
您可能会查看缓存以缓冲最新的用户更新,因此当轮询发生时,您的服务会从缓存而不是 SQL Azure 中读取。随着信息量的增加,这可能会有所帮助。
【讨论】:
以上是关于Microsoft Azure 上的实时应用程序的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Google FCM 和 Microsoft azure 作为托管服务器从 chrome for android 上的 PWA 发送推送通知
将 Azure 托管的机器人添加到 Microsoft Teams 开发门户
在 Azure 上的资源组之间移动后删除 microsoft.web/certificates