• 通用分布式缓存介绍


    许多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

  • 相关阅读:
    POJ 2187 Beauty Contest(凸包+旋转卡壳)
    POJ 3845 Fractal(计算几何の旋转缩放)
    POJ 1755 Triathlon(线性规划の半平面交)
    POJ 2540 Hotter Colder(半平面交)
    POJ 3525/UVA 1396 Most Distant Point from the Sea(二分+半平面交)
    POJ 3348 Cows(凸包+多边形面积)
    POJ 1228 Grandpa's Estate(凸包唯一性判断)
    POJ 2826 An Easy Problem?!(线段交点+简单计算)
    如何在ARC代码中混编非ARC代码
    给view 添加事件
  • 原文地址:https://www.cnblogs.com/lexus/p/1643972.html
Copyright © 2020-2023  润新知