对于在极端事务负载期间需要快速性能的任何应用程序来说,分布式缓存都是必不可少的。 内存中分布式缓存的性能优于数据库。 而且,它可以在处理更大的事务负载时提供线性可伸缩性,因为它可以轻松地让您将更多服务器添加到数据库服务器无法做到的缓存集群中。
尽管有所有这些好处,但仍然存在一个问题。 在大多数情况下,分布式缓存托管在网络上的一组专用缓存服务器上,因此您的应用程序必须进行网络访问才能获取任何数据。 而且,这不如在本地访问数据那么快,尤其是从应用程序进程中访问数据。 这是客户端缓存派上用场的地方。
In NCache,以 客户端缓存 保持与分布式缓存集群的连接打开并接收 事件通知 每当客户端缓存数据发生变化时,从缓存集群中获取。 分布式缓存集群知道数据项在客户端缓存中的位置,因此事件通知仅发送到相关的客户端缓存,而不是将它们广播到所有客户端缓存。
客户端缓存如何工作?
客户端缓存只不过是您的 Web/应用程序服务器上的本地缓存,但它知道分布式缓存以及与它的连接。 此外,客户端缓存可以是进程内的(客户端缓存存在于您的应用程序中)或进程外。 这允许客户端缓存提供比分布式缓存更快的读取性能,同时确保客户端缓存数据始终与分布式缓存保持同步。
但是,分布式缓存在成功更新分布式缓存集群中的数据后,会异步通知客户端缓存。 从技术上讲,这意味着有一小段时间(以毫秒为单位),在此期间客户端缓存中的某些数据比分布式缓存更旧。 现在,在大多数情况下,这对于应用程序来说是完全可以接受的。 但是,在某些情况下,应用程序需要 100% 的数据准确性。
所以,为了处理这种情况, NCache 也为客户端缓存提供了一个悲观同步模型。 在此模型中,每次应用程序尝试从客户端缓存中获取任何内容时,客户端缓存首先检查分布式缓存是否具有相同缓存项的更新版本。 如果是,则客户端缓存从分布式缓存中获取更新的版本。 现在,这种分布式缓存之旅是有代价的,但它仍然比完全从分布式缓存中获取缓存项要快。
何时使用客户端缓存?
读完这篇博客后,想到的主要问题是什么时候使用客户端缓存,什么时候不使用它。 嗯,答案很简单。 如果您的应用程序执行的读取多于写入,请使用客户端缓存,尤其是在一遍又一遍地重复相同的项目时。
如果您的应用程序执行许多更新(或至少与读取一样多),请不要使用客户端缓存,因为客户端缓存的更新速度较慢。 发生这种情况是因为您现在要更新两个不同的缓存,即客户端缓存和分布式缓存。
结论
所以, NCache 允许您利用分布式缓存的客户端缓存。 下载完整的 60 天试用版 NCache Enterprise 并亲自尝试一下。
你有非常有趣的博客,继续发布这些信息丰富的帖子!