适用于大型网站的AppFabric缓存

Cyb*_*axs 5 architecture caching appfabric

我们的Web应用程序部署在Web场(超过20台服务器)中.该网站拥有巨大的流量(每天数百万的页面浏览量).在第一个版本中,此应用程序使用EntLib的CacheManager(Entreprise应用程序块缓存).我们称之为"本地服务器缓存".有许多好处,但我们仍然有一个主要缺点:每个服务器管理自己的缓存和访问数据库(不分发).

这就是我们尝试实施AppFabric缓存功能以减少数据库往返的原因.我们遇到的主要问题之一是数据同步:

  • 使用GetAndLock/PutAndUnLock(又名分布式锁定)页面响应时间受到很大影响
  • 使用Get/Put +简单的服务器端锁,我们有很多请求使用本地缓存; 没有好处.

那么什么是大型网站的缓存策略呢?

谢谢,

and*_*era 1

正如我在 MSDN 上提到的,即时一致性的成本很高。你必须接受一致性方面的一些权衡,或者投入大量现金来立即保持一致性。使用我们在 MSDN 上讨论的隔离读/写模型以及队列,可能会为您提供最佳的性能/一致性。David 建议的多层缓存也非常好,具体取决于您的整体架构/设计。使用您自己的本地进程内或本地缓存实现也提供了很多价值——我本人并不喜欢 AppFabric 的 OOTB 本地缓存。

--ab