zoukankan      html  css  js  c++  java
  • 通用分布式缓存介绍

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

  • 相关阅读:
    第1条:考虑用静态工厂方法代替构造器
    代理模式(Proxy Pattern)
    out 和 ref 参数修饰符
    SQL Server 性能调优(一)——从等待状态判断系统资源瓶颈【转】
    Windows下获取Dump文件以及进程下各线程调用栈的方法总结(转)
    sql server内置函数
    ORA-16019 和 ORA-16018 错误的处理方法(转)
    marge into操作
    LogMiner配置使用手册
    课后作业
  • 原文地址:https://www.cnblogs.com/lexus/p/1643972.html
Copyright © 2011-2022 走看看