在Azure上的多个实例之间维护Node.js会话

时间:2013-05-04 07:00:45

标签: node.js azure queue

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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

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

如果您查看this answer,我会显示访问缓存的位置。您需要以这种方式设置缓存,还可以通过添加名为memcache_default的内部端点来设置内存缓存服务器网关。然后,将memcache客户端类指向内部端点。完成。

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