mongodb - 减轻 Web 应用服务器负载的缓存策略

标签 mongodb caching iis coldfusion memcached

什么是在网络服务器应用服务器之间应用缓存层的好工具。

基本要求:

  1. 应用程序服务器需要一种方法来从缓存中删除项目并将项目放入缓存中并指定到期日期。
  2. 网络服务器需要一种方法以非常轻量级、快速的方式从缓存中提取项目,而无需在应用程序服务器上分配线程。
  3. 它不一定需要是分布式缓存(可从多台机器访问),但不会有什么坏处。

我考虑过的策略:

  1. 静态文件缓存。请求进入,被散列,如果文件存在我们提供它,如果不存在我们将请求路由到应用程序服务器。是高 I/O 问题还是并发导致的文件锁定问题?由于内存中的内核级缓存,文件系统实际上非常快是否准确。
  2. 使用像 mongodb 或 redis 这样的键值数据库。这会将完成的 HTML/JSON 片段存储在 db 中。网络服务器将配备从数据库读取并在需要时路由到应用程序服务器。应用程序服务器将配备插入/删除数据库。
  3. 像 memcached 或 Varnish 这样的内存缓存(对 Varnish 了解不多)。我对 memcached 的唯一担心是我想在任何给定时间缓存 3 - 10 GB 的数据,这超出了我可以在内存中安全分配的数量。 memcached 是否有溢出到文件系统的方法?

在尝试这种类型的缓存层时,对某些技术和陷阱有什么想法吗?

最佳答案

您还可以在内存数据网格中使用 GigaSpaces XAP 来缓存甚至托管您的 Web 应用程序。您可以只选择缓存选项,也可以结合两者的力量,获得对您的环境和其他事物的单一管理。

与您建议的键值对方法不同,使用 GigaSpaces XAP 您将能够进行复杂的查询,例如 SQL、基于对象的寺庙等等。在您的缓存方案中,您应该更具体地检查与本地缓存相关的功能。

Local Cache

Web Container

免责声明,我是 GigaSpaces 的开发人员。

艾坦

关于mongodb - 减轻 Web 应用服务器负载的缓存策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13284429/

相关文章:

java - 刷新浏览器时缓存不起作用

c# - 如何在 IIS 中托管 WCF 应用程序?

php - Symfony(PHP 框架)和 MongoDB(或任何基于 json 的数据库)

ruby - 是否有任何 mongodb ORM 允许您为字段起别名?

c++ - 优化:昂贵的分支与便宜的比较

asp.net-mvc-3 - 通过 SharePoint 2010 上的虚拟文件夹映射的 ASP.NET 4.0 应用程序

php - 跨子域和主机的 Cookie

java - 数据从mongoDB到java

node.js - Mongoose 中 $setOnInsert 的等效解决方法是什么

php - 在浏览器中加载时如何清除每个 php 页面上的缓存?