gpt4 book ai didi

mysql - 如何在nodejs中跨服务器共享 session ?

转载 作者:行者123 更新时间:2023-11-29 07:15:51 31 4
gpt4 key购买 nike

我想创建一个无状态服务器,这样如果任何服务器出现故障,负载均衡器可以将请求重定向到其他服务器。但是,如果 session 是在一台服务器上创建的,并且它出现故障,那么如何保存它。我正在使用 mysqlstore 将我的 session 保存在数据库中,但是对于每台服务器,它都会在数据库中创建一条新记录,因此 session id 不会跨服务器共享不同的服务器。因此,需要一种使服务器无状态的机制。

最佳答案

我猜你正在使用 express-session因为没有另外指出。

您的 mysqlstore 走在正确的轨道上。解决 Node 的单线程问题的方法是放弃 express-session而是加密 session 数据并将其放入客户端 cookie 中。然后,您可以解密 GET 请求上的 session 数据,并使用 cookie 中的隔离 key 在数据库中验证它(如果不存在,则创建一个新的 session /cookie 对)。

最流行的 Node.js 中间件是 cookie-session.那里也有很棒的文档。

https://github.com/expressjs/cookie-session

顺便说一句,由于听起来您现在处于一个具有多个服务器的可扩展位置,因此值得放弃 express-session无论如何。 express-session使用 MemoryStore,它存在一个已知的内存泄漏问题。适合较小的项目使用,但对于较大的项目可能应该重新考虑。

关于mysql - 如何在nodejs中跨服务器共享 session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37998873/

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