2

我有 3 个在 Windows Azure 上运行的 Node.js 辅助角色实例。我正在尝试维护所有实例之间的会话。

Azure 队列似乎是推荐的方法,但我如何确保所有实例都接收会话,因为一旦单个实例出队,队列就会删除会话?

Azure 表并不真正适合我的应用程序,因为会话过于频繁并且不需要存储超过 10 秒。

4

1 回答 1

1

队列不是会话状态的好机制;它用于消息传递。一旦一个实例读取队列消息,当特定角色实例正在处理该消息时,它就不再可见。另外:处理完消息后你会怎么处理?更新它然后让它再次可见?问题是您无法选择要阅读的“会话”。这是一个几乎先进先出的队列(未正确处理的消息可能会重新出现)。它不像键/值存储。

要创建可访问的会话存储库,您可以利用 Azure 的角色内(或专用角色)缓存,它是跨角色实例的分布式缓存。您也可以使用表存储 - 只是简单的键/值类型的读/写。表存储包含在 node.js Azure SDK 中。

那就是说:让我们走这里的缓存路线。由于您的会话是短暂的,并且(我猜)不会占用太多内存,您可以从角色内缓存开始(缓存与您的节点代码共享工作角色 RAM,占记忆)。缓存也是 memcache 兼容的,很容易从节点应用程序访问。

如果您看一下这个答案,我会显示访问缓存的位置。您需要以这种方式设置缓存,还需要通过添加一个名为memcache_default. 然后,将您的 memcache 客户端类指向内部端点。完毕。

完整的说明(以及有关 memcache 网关与客户端 shim 的详细信息,您在设置专用缓存角色时会使用)在这里。如果使用专用缓存,您会看到说明略有不同,因为建议您在节点应用程序的工作角色中使用客户端 shim。

于 2013-05-04T11:45:46.823 回答