替换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 位版本。
  • 安全。

具体看参看:http://www.alachisoft.com/ncache/index.html

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java后端技术栈

【动画】当我们在读写Socket时,我们究竟在读写什么?

套接字socket是大多数程序员都非常熟悉的概念,它是计算机网络编程的基础,TCP/UDP收发消息都靠它。我们熟悉的web服务器底层依赖它,我们用到的MySQL...

1192
来自专栏前端杂货铺

Nodejs cluster模块深入探究

由表及里 HTTP服务器用于响应来自客户端的请求,当客户端请求数逐渐增大时服务端的处理机制有多种,如tomcat的多线程、nginx的事件循环等。而对于nod...

55010
来自专栏Java帮帮-微信公众号-技术文章全总结

POI导入导出【面试+工作】

POI导入导出【面试+工作】 1.场景一 近期项目中的excel导入导出功能需求频繁的出现,趁此机会,今天笔者对POI的Excel数据的导入导出做一...

4104
来自专栏静默虚空的博客

Eclipse 实用技巧

代码智能提示 Java智能提示 Window -> Preferences -> Java -> Editor -> Content Assist -> Aut...

2127
来自专栏码农阿宇

在.Net Core中使用MongoDB的入门教程(一)

首先,我们在MongoDB的官方文档中看到,MongoDb的2.4以上的For .Net的驱动是支持.Net Core 2.0的。 ? 所以,在我们安装好了Ma...

3654
来自专栏何俊林

Android Multimedia框架总结(十二)CodeC部分之OMXCodec与OMX事件回调流程

前言:上篇文中分析到AwesomePlayer到OMX服务,曾介绍到,OMX服务主要完成三个任务: NodeInstance列表的管理,NodeInstance...

32910
来自专栏Java技术栈

分布式 | Dubbo 架构设计详解

Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)。从服务模型的角度...

1612
来自专栏Java架构

阿里分布式服务框架Dubbo的架构总结总体架构参考补充

1924
来自专栏大内老A

关于WCF的一个非常“无语”的BUG!

这确实是一个让人觉得“无语”的BUG,甚至让我觉得微软在故意和我们开玩笑。这个问题在我刚刚接触WCF的时候就遇到过,换言之,这个问题一直存在于.NET 3.0、...

2007
来自专栏阿杜的世界

【转】Dubbo架构设计详解总体架构核心要点参考资料

Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)。从服务模型的角度...

1145

扫码关注云+社区

领取腾讯云代金券