智能缓存之路

为什么不自己构建缓存?

许多应用程序开发人员不缓存任何数据或最多缓存一些只读静态数据。 一些开发人员更进一步,在用户请求之间将数据缓存在“会话状态”中。 然而,所有这些方法都忽略了缓存的基本好处,即缓存数据并与应用程序的所有用户共享数据。 而且,这种类型的缓存必须非常智能,以避免缓存中的数据完整性问题(通过陈旧数据)。

如果您真的想通过智能缓存来提高应用程序的性能,您就会面临购买与构建的明显问题。 构建自己的缓存解决方案有很多缺点。

首先也是最重要的是,您正在将重要的开发资源从开发应用程序的业务目标中移走,并将其用于开发您可以轻松购买的基础架构。 其次,开发正确且智能的缓存解决方案需要付出大量努力,而且您的团队中可能没有合适的专业知识来设计和开发能够处理复杂的并发和同步场景的高性能缓存。 最后,即使您拥有专业知识,您也会将大量精力投入到让您偏离业务重点的事情上。

即使您最终决定购买商业缓存解决方案,您也必须确保它提供您的应用程序所需的所有必需的缓存和集群功能。 即使您今天开始使用单服务器配置,您也会需要一个可以随着您的应用程序成长为分布式和集群环境的缓存解决方案。

提升应用程序性能

使用缓存最明显的好处是显着提高应用程序性能。 缓存是将数据(只读数据和事务数据)存储在靠近经常使用的应用程序的过程。 通常,此数据存储在内存中(作为对象),因为从内存中检索数据比从其他位置(例如数据库)检索数据要高效得多。

无需昂贵的硬件升级即可扩展数据库服务器

大多数应用程序执行的读取操作比写入操作多得多(通常为 70:30 或 80:20 比率)。 而且,在应用程序服务器层中缓存数据允许应用程序减少读取操作的数据库访问。 这极大地减少了数据库服务器上的负载。

这有两个明显的好处。 首先是数据库服务器现在可以更快地执行写入操作。 其次,数据库服务器现在可以处理更多的客户端,而无需昂贵的硬件升级。 数据库服务器通常是大多数 N 层应用程序部署中最昂贵的硬件,因此这里的硬件升级节省通常非常高。

缓存交易数据

传统上,Web 应用程序或 Web 服务要么不缓存任何数据,要么使用“会话状态”等原始机制来缓存只读数据。 这种方法有两个问题。 首先,关键任务应用程序使用的大部分数据不是只读的,而是事务性的,因此缓存只读数据不足以提高应用程序性能。 其次,即使这种只读数据也不会在用户之间共享,在现实生活中的应用程序可能会达到数千或数万。 因此,大多数这些应用程序最终会转到数据库服务器以获取它们所需的大部分数据,从而导致性能问题。

另一方面, NCache 让应用程序将静态数据和事务数据都保存在缓存中。 而且,此缓存数据可供服务器集群中的所有用户使用。 NCache 然后提供多种机制来确保缓存数据不会过时,并且在应用程序更新数据库中的数据时始终更新。 NCache 还允许您处理必须从应用程序外部更新数据的情况。 这是通过“依赖关系”的概念实现的。

管理关系

大多数现实生活中的应用程序处理复杂的数据,这些数据不仅是事务性的,而且包含多层关系。 这意味着如果您缓存任何数据,您还必须处理它的关系。 缓存必须了解这些关系,以便在加载、插入、更新或删除操作时管理它们。

NCache 管理对象之间的关系,因此对一个对象的更改可以触发对所有相关对象的更改或失效。 同样,即使您的应用程序先加载一个对象并将其放入缓存中,然后再加载其相关对象,它也可以告诉 NCache 关于这些关系和 NCache 可以管理它们。

您不仅可以管理缓存对象之间的关系,还可以管理缓存对象与外部资源之间的关系。 NCache 为此提供基于密钥和文件的依赖项。 而且,可以使用 .NET Remoting 远程调用这些依赖项。 这有助于让您的缓存始终保持新鲜。

同步集群中的数据变化

许多 Web 应用程序和 Web 服务在服务器集群/服务器场配置中运行,以处理大量用户。 在这些环境中,如果您的缓存未集群化,那么从一台服务器对其进行的任何更新都将无法用于其他服务器。 结果,您的缓存数据将变得不一致和陈旧,从而导致数据完整性问题。

NCache 是一个强大的集群缓存,可以同步整个集群的所有数据变化。 它提供了一组丰富的集群拓扑来帮助您满足您的特定需求。 您可以在集群中选择镜像缓存、复制缓存、分区缓存和分区副本缓存拓扑。 这些在更详细的讨论 NCache 集群拓扑。

NCache 确保以串行方式处理对缓存的并发更新,以防止数据完整性问题。 此外,它确保对缓存的所有更改立即可用于集群中的所有节点。 这允许您的应用程序处理 NCache 作为整个集群中的一个逻辑缓存。

联系我们

联系电话
©版权所有 Alachisoft 2002 - 版权所有。 NCache 是 Diyatech Corp. 的注册商标。