寻找有关如何存储高流量站点会话的详细信息


Looking for elaboration on how sessions are stored for high-traffic sites?

我一直在试图了解PHP(或其他语言,真的,我想原理是一样的)在哪里保存会话数据服务器端。

我读了这个问题和这个问题,它们似乎都表明它默认只在/tmp 文件夹中创建普通文件,这些文件的名称与存储在客户端 cookie 中的会话 ID 匹配。

但这对我来说似乎有点奇怪.....拥有数百万并发用户的高流量网站呢?他们真的只有一个装满会话文件的巨大文件夹吗?不涉及数据库?

即使在较小的站点上,我也不知道有多少人将文件放在会话存储目录中。 它很慢,会话数据可能是您需要快速且频繁访问的内容,具体取决于站点。

通常,将使用像 Redis 这样的内存中数据存储。 其中许多类型的数据库支持跨多个主机的基本分片,以及简单的复制形式,以支持会话存储的扩展。

当您达到数百万并发用户的规模时,您的特定需求会变得更加放大。 您需要在会话中存储多少数据? 这些数据可以尽最大努力复制到其他人身上,还是必须是原子的? 在这一点上,每个人的做法都有点不同,但原理是相同的。 随时随地访问快速数据。 尽可能少地存储。

默认会话在文件系统中,但您可以将应用程序配置为将会话存储在内存缓存中,如 Memcached 或 Redis。因此,您可以为会话设置许多Web服务器和许多缓存服务器。