什么是在网络服务器和应用服务器之间应用缓存层的好工具。
基本要求:
- 应用程序服务器需要一种方法来从缓存中删除项目并将项目放入缓存中并指定到期日期。
- 网络服务器需要一种方法以非常轻量级、快速的方式从缓存中提取项目,而无需在应用程序服务器上分配线程。
- 它不一定需要是分布式缓存(可从多台机器访问),但不会有什么坏处。
我考虑过的策略:
- 静态文件缓存。请求进入,被散列,如果文件存在我们提供它,如果不存在我们将请求路由到应用程序服务器。是高 I/O 问题还是并发导致的文件锁定问题?由于内存中的内核级缓存,文件系统实际上非常快是否准确。
- 使用像 mongodb 或 redis 这样的键值数据库。这会将完成的 HTML/JSON 片段存储在 db 中。网络服务器将配备从数据库读取并在需要时路由到应用程序服务器。应用程序服务器将配备插入/删除数据库。
- 像 memcached 或 Varnish 这样的内存缓存(对 Varnish 了解不多)。我对 memcached 的唯一担心是我想在任何给定时间缓存 3 - 10 GB 的数据,这超出了我可以在内存中安全分配的数量。 memcached 是否有溢出到文件系统的方法?
在尝试这种类型的缓存层时,对某些技术和陷阱有什么想法吗?
最佳答案
您还可以在内存数据网格中使用 GigaSpaces XAP 来缓存甚至托管您的 Web 应用程序。您可以只选择缓存选项,也可以结合两者的力量,获得对您的环境和其他事物的单一管理。
与您建议的键值对方法不同,使用 GigaSpaces XAP 您将能够进行复杂的查询,例如 SQL、基于对象的寺庙等等。在您的缓存方案中,您应该更具体地检查与本地缓存相关的功能。
免责声明,我是 GigaSpaces 的开发人员。
艾坦
关于mongodb - 减轻 Web 应用服务器负载的缓存策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13284429/