2

我正在开发一个实时应用程序并在 Azure 上构建它。

这个想法是每个用户都报告自己的一些事情,所有其他用户都应该立即看到它(他们每隔几秒钟左右轮询一次服务以获取新信息)

我现在的方法是为 WCF REST 服务使用 Web 角色,我在没有 Worker 角色的情况下对数据库(SQL Azure)进行所有写入,以便立即写入。

我开始认为,也许使用 Worker Role 和 Queue 进行写入可能更具可扩展性,但可能会干扰服务的实时性。(工作者角色可能不会立即从队列中获取作业)

这是真的吗?我应该如何处理这个问题?

谢谢

4

2 回答 2

1

虽然队列确实会增加一点延迟,但您将能够扩展 Worker Role 实例的数量来处理大量消息。

您还可以通过一次获取多条消息来优化队列阅读。由于单个队列的可扩展性目标为 500 TPS,因此您可以在读取时远远超过每秒 500 条消息。

您可能会查看缓存以缓冲最新的用户更新,因此当轮询发生时,您的服务会从缓存而不是 SQL Azure 中读取。随着信息量的增加,这可能会有所帮助。

于 2011-12-13T10:16:28.457 回答
0

你可以看看 SignalR,它不支持开箱即用的农场场景,但应该能够使用内部端点调用来更新每个实例,使用 Azure 服务总线,或者使用AppFabric 缓存。这样,您将获得 Push 场景而不是 Pull 场景,因此您不必轮询端点以获取潜在更新。

于 2011-12-14T00:27:53.030 回答