![内存缓存服务器](https://linux22.com/image/501790/%E5%86%85%E5%AD%98%E7%BC%93%E5%AD%98%E6%9C%8D%E5%8A%A1%E5%99%A8.png)
这里有一个简单的问题,我知道这些大型网站,例如 digg 等,都有一堵 memcache 服务器墙,可以在到达其实际的主/从数据库之前处理请求。
这些服务器会是什么样子的,它们会只是具有 32GB 内存的裸机 Linux 服务器吗?
是否有任何需要解决的安全问题?我只是在想,如果有人能以某种方式从 memcache 中获取对象,那么你很可能存储一个包含用户名/密码的 User 对象!
答案1
您可以使用多种方式设置 memcached 服务器,具体取决于您的应用程序的工作方式。对于可以进行大量缓存的大型高流量网站,您的情况可能很好。在我们的例子中,我们实际上使用 memcache 集群中的前端 Web。
至于安全性,由于 memcached 没有安全措施,因此您需要确保对其使用的端口的访问经过了适当的防火墙保护。您也可以使用自己的端口,而不是默认端口。这样一来,有人访问您的对象的唯一方法就是破坏您访问 memecached 的服务器,在这种情况下,您可能会遇到更大的问题。
答案2
Memcache 不会直接回答 HTTP 请求,它没有能力这样做;我设置的方法是使用 nginx 的 memcache 模块直接从缓存中检索页面(如果可用),并与私有网络上的 memcache 实例进行通信。
我通常不使用专用机器来运行 memcache,而是查看现有服务器的资源使用情况,并将 memcached 实例放在有空闲内存容量的地方。例如,文件存储服务器通常需要大量磁盘 IO,但通常不会使用所有 RAM(一旦您的 RAM 中装满了活动文件集,就会浪费更多用于磁盘缓存的内存),而 memcached 使用 RAM 但不使用磁盘 IO——这是一组完美的互补用例。但是,随着站点规模的扩大,运行大量 RAM、小型 CPU 且可能采用 PXE 启动(因此没有本地 HDD,您可以在几乎零时间内配置新 HDD)的专用机器作为 memcached 服务器是合理的。