通用分布式缓存介绍
许多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版的工作,下一阶段将根据特定的业务场景,设计缓存策略,搭建测试环境,对缓存框架进行更进一步的测试和改进。
以上
Wiki document
http://code.google.com/p/cntheone/wiki/dotnet_distribute_cache