通用分布式缓存介绍

许多Web应用都将数据保存到RDBMS中,应用服务器从中读取数据并在浏览器中显示。但随着数据量的增大、访问的集中,就会出现RDBMS的负担加重、数据库响应恶化、网站显示延迟等重大影响。

这时就该memcached大显身手了。memcached是高性能的分布式内存缓存服务器。一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。

    但是随着网站规模的进一步的增大,完全基于Memcache的单层分布式Cache,方案亦会暴露出其瓶颈。主要是由于频繁的进行远程调用,对网络IO,反序列化都需要较多的时间和资源。

    为了解决这个问题,可以将缓存的内容存放在本地进程内Cache中,这样避免了网络的IO,同时也减少了反序列化对象所需要的资源和时间,但同时引入了一个问题,当对某一应用服务器缓存中的数据进行更新时,无法及时通知其它服务器上的旧有缓存失效。缓存框架对此问题提供了解决方案,此外还提供了以下的功能:

  • 统一接口,自由切换本地cache和Memcache,对本地Cache提供分布式同步通知机制
  • 根据业务敏感度缓存划分不同过期策略的缓存区域
  • 使用配置文件配置缓存类型,过期策略,代码中只有简单的Get,Set,

示例代码:

IObjectFactory container=new ObjectFactory()

var product=container.Resolve<ICache>("ProductCacheRegion");

product.Set("分类树",object)

product.Set("分类树",new_object)

var comment=product.Get("用户评论");

if(comment!=null)

{

//Render Data

}

else{

//从数据库取出comment_data

product.Set("用户评论",comment_data)

}

    当前缓存框架处在alpha阶段,本周将完成其beta版的工作,下一阶段将根据特定的业务场景,设计缓存策略,搭建测试环境,对缓存框架进行更进一步的测试和改进。

以上

2009-11-17

Wiki document

http://code.google.com/p/cntheone/wiki/dotnet_distribute_cache

原文地址:https://www.cnblogs.com/lexus/p/1643972.html