替换EnterPrise Library 4.0 缓存应用程序块的CacheManager

缓存是用来提高应用程序性能的常见技术,其实现方式是将常用数据从慢数据源复制到更快的数据源。对于数据驱动的应用程序来说,该技术通常需要将从数据库或 Web 服务检索到的数据缓存到本地计算机的内存中。

当缓存特定于每个应用程序时最容易实现缓存技术,但是如果多个应用程序需要使用一个公共缓存,那么问题将变得更具挑战性。例如,大型网站通常使用服务器场,其中包含多个提供相同内容的计算机。当每个请求到达时,它会被分配给场中的其中一台计算机。然而,如果信息缓存到场中的一台计算机内存中,其他计算机中的缓存就无法访问它,因此降低了缓存的效率。该问题的一种解决方案是将缓存移到集中式的数据存储(如数据库),或将场中的其中一台服务器指定为缓存服务器,只用来存储缓存的唯一副本。使用集中式缓存存储存在一个问题,那就是它们引入了单点故障,且会成为瓶颈。

要克服单一、集中式缓存存储的局限性,请考虑使用 Alachisoft 开发的 NCache 3.2。NCache 是一个群集缓存框架,能够无缝管理分布在多台计算机上的缓存。管理员首先通过 NCacheManager 工具指定群集拓扑和缓存策略。管理员可以指定多种设置,包括是将缓存存储在内存还是磁盘中、逐出策略和最大缓存大小等;这些设置和拓扑均可在运行时修改。此外,NCacheManager 还提供一系列统计数据,它们不但可用于监控缓存的运行状况,还可作为微调缓存设置以获得最优性能的指标。

在定义缓存群集时,您可以指定是应复制群集内的缓存还是应对其进行分区。复制的缓存群集所拥有的缓存内容与群集中每台机器上的内容均相同。因为没有单点故障,所以复制的缓存可提高可靠性;但是对群集的任何更新都必须复制到所有的群集。因此,对以读取为主的缓存或小群集来说,复制的群集是理想选择。另一方面,分区缓存在群集内的各个计算机之间划分缓存内容,并为更新和大型群集实现了更好的性能。

NCache 还提供了集成到 Microsoft 缓存应用程序块 (CAB) 的提供程序。Alachisoft 公司发布了一个NCache Express版本,这个版本是可以免费使用的,但是有如下限制:

支持两台服务器环境
客户端缓存不论是本地还是来自另外一台服务器
缓存复制拓扑(没有镜像,分区,分区的副本,或者客户端缓存)
最大的缓存尺寸是500M
不支持分布式ASP.NET Session State Cache
不支持分布式ASP.NET Output Cache
只支持32位(没有64位版本)
支持1.1/2.0/3.0/3.5客户端
NCache企业版特性如下:

缓存拓扑

本地缓存。
复制缓存。
分区缓存(自动分区)。
分区缓存(紧密定位)。
Client Cache 客户端缓存。
本地 .NET 客户端 (InProc & OutProc)。
本地 Java 客户端 (OutProc)。
远程 .NET & Java 客户端。
Partitioned Cache with with Replicas 复制分区缓存。
动态聚类
在运行时添加或删除节点。
串变化时进行事件通知。
ASP.NET 会话聚类
基于 .NET 1.1 的 HttpModule (没有改变代码)。
基于 .NET 2.0 的 Session Store Provider (没有改变代码)。
三方整合
NHibernate Level-2 Cache Provider.
Caching Application Block (CAB).
TierDeveloper.
数据到期
绝对的时间到期。
空闲时间到期。
缓存依赖关系
基于关键字的依赖。
基于文件的依赖。
基于多缓存关键字的依赖。
缓存与数据库同步
基于 SQL Server 2005 的 SqlDependency.
基于投票式的 DbDependency, 适用于SQL 2000, Oracle & OLEDB.
Clustered-Wide 事件通知
更新和删除所选择的关键字的事件。
插入,更新和删除任意关键字的事件。
自定义事件通知。
Object Query Language (OQL)
OQL 适用于基于属性的查询。
为查询创建属性的索引。
回收
固定的和可变大小的缓存。
Least Recently Used (LRU).
Least Frequently Used (LFU).
优先级的 FIFO.
存储选项
.NET Heap.
内存映射文件。
主要缓存及溢出缓存。
NCache 管理器
远程图形化 Cluster 配置。
远程 Cluster 监视器。
InProc 缓存实例监视器。
杂项
连读,连写,延迟写。
异步操作(添加,插入,删除)。
紧凑串行化。
大量操作 (添加,插入,删除,获取数据)。
数据组。
多缓存连接。
64 位版本。
安全。

本文来自云栖社区合作伙伴“doNET跨平台”,了解相关信息可以关注“opendotnet”微信公众号

上一篇:[好文要转要收藏] UML类图几种关系的总结


下一篇:ssis的script task作业失败(调用外部dll)