gpt4 book ai didi

node.js - 在 Azure 上的多个实例之间维护 Node.js session

转载 作者:太空宇宙 更新时间:2023-11-03 22:18:06 27 4
gpt4 key购买 nike

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

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

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

最佳答案

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

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

也就是说:让我们在这里使用缓存路由。由于您的 session 是短暂的,并且(我猜)不会占用太多内存,因此您可以从角色内缓存开始(缓存与您的 Node 代码共享辅助角色 RAM,占用一定比例的内存)内存)。缓存还与 memcache 兼容,可以轻松从 Node 应用程序访问。

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

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

关于node.js - 在 Azure 上的多个实例之间维护 Node.js session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16371525/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com