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

我有3个在Windows Azure上运行的Node.js工作者angular色的实例。 我试图维护所有实例之间的会话。

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

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

队列不是会话状态的好机制; 这是消息传递。 一旦一个实例读取队列消息,当特定angular色实例正在处理该消息时,该消息不再可见。 另外:如何处理这个消息呢? 更新它,然后再次使其可见? 问题是你不能select要读取哪个“会话”。 这是一个几乎是先进先出的队列(没有正确处理的消息可以重新出现)。 这不像一个关键/价值商店。

要创build可访问的会话存储库,您可以利用Azure的angular色(或专用angular色)caching,这是一个跨angular色实例的分布式caching。 您也可以使用表存储 – 只是简单的键/值types的读取/写入。 Table Storage包含在node.js Azure SDK中。

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

如果你看一下这个答案 ,我会展示访问caching的地方。 您需要这样设置caching,还需要通过添加名为memcache_default的内部端点来设置memcache服务器网关。 然后,将您的memcache客户端类指向内部端点。 完成。

完整的说明(以及有关设置专用cachingangular色时使用的memcache网关与客户端填​​充的详细信息)在这里 。 您将看到,如果使用专用caching,说明会略有不同,因为build议您在节点应用的辅助angular色中使用客户机填充。