zoukankan      html  css  js  c++  java
  • 负载均衡与缓存

    最近买了一本《实用负载均衡技术》的书籍,利用空余时间进行阅读,希望能用到工作中,提升自己的能力

    首先

    一,什么是负载均衡

      通俗一点来讲:在高并发,大数据环境下给服务器减压的,分为硬件和软件。其中:

    1,硬件方面:硬件负载均衡就是多台服务器以对称的方式组成服务器集合,把压力平均分配给每台服务器,比如使用DNS负载均衡(后续详解)是最有效最简单的方法!

      其中横向负载均衡和纵向负载均衡,横向扩展通过服务器群集,多台服务器技术来实现,横向扩展的好处是,有了更多的机器,如果某台机器挂掉无法工作了,仍然可以使用其他机器来处理负载;纵向扩展通过扩展服务器硬件资源,例如CPU、内存、硬盘、网卡等,但是纵向扩展一般费用比较昂贵!

    2,软件方面可以利用缓存技术

      首先缓存是什么?缓存的作用?

      缓存是一种以空间换取时间的技术,也就是把你想要得到的数据,存放在内存中一段时间,在你设置的时间之内服务器不会去读取数据库的记录,而是通过缓存直接读取你存放在内存中的数据。

      缓存的优点:缓存是网站性能优化不可缺少的数据处理机制,他能有效缓解数据库压力,就像我们目前正在做的抢购活动,同一时间网站的访问量非常高,如果不使用缓存的数据,客户点击一次就查询一次数据库,这样的设计造成服务器压力可想而知,如果我们使用了缓存技术,设置要缓存的时间,在这段时间内客户点击N次和点击一次是完全一样的,因为都是读取缓存中的数据。

      我们平时开发中用到的缓存技术:页面缓存、数据缓存、控件缓存、配置文件设置缓存,下面来依依介绍:

    •   页面缓存,<%@ OutputCache Duration="10" VaryByParam="none" %> 这条指令标签为该页面添加缓存,Duration这个参数指定页面缓存时间为10秒,VaryByParam这个指定页面参数,如下图:
    • 数据缓存
      Cache["要缓存的值"] = "数据";  Response.Write(Cache["要缓存的值"]);
    • 控件缓存 ,一些常用的数据源控件ObjectDataSource,有一个属性CacheDuration 

      <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" EnableCaching="True" CacheDuration="10" CacheExpirationPolicy="Absolute">         </asp:ObjectDataSource>

      给控件设置缓存:例如给一个TextBox控件设置缓存:如下图

      

    • 配置文件缓存

      webConfig中的配置

    <system.web>
      <caching>
        <outputCacheSettings>
          <outputCacheProfiles>
           <addname="cache" duration="60"/>
         </outputCacheProfiles>
      </outputCacheSettings>
       </caching>
    </system.web>

      

    然后在页面中设置

    <%@ OutputCache CacheProfile="cache" VaryByParam="none" %>


     接下来介绍重量级的缓存技术 memcached

      那什么是memcached呢?

      Memcached是由Danga Interactive开发的,高性能的,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度。

      

      Memcached能缓存什么?
      通过在内存里维护一个统一的巨大的hash表,Memcached能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。

      Memcached的特点
      Memcached的缓存是一种分布式的,可以让不同主机上的多个用户同时访问, 因此解决了共享内存只能单机应用的局限,更不会出现使用数据库做类似事情的时候,磁盘开销和阻塞的发  生。

      Memcached的使用
    一 、Memcached服务器端的安装 (此处将其作为系统服务安装)
      memcached服务器端以及客户端类库(开源软件,下载即可)
      其中,客户端类库包括以下几个DLL:
           Memcached.ClientLibrary.dll
           ICSharpCode.SharpZipLib.dll
           log4net.dll

      下载地址 http://download.csdn.net/detail/dinglang_2009/3733784
           二,安装memcached服务器端
           将memcached.exe复制到任意目录下,如 c:,在命令行输入:memcached.exe -d install  memcached将作为一个服务常驻系统内存了

      三,配置

      

    Memcached Providers更强大,MemcachedProviders是对Enyim.Caching的再次封装,并加入了客户端计数器功能以及Session数据库管理功能。。当然,使用和配置起来也同样简单,方便,只是对于一些负责的操作和处理方面,功能更强大一些。如果只是简单的应用,推荐直接使用enyim.com Memcached Client。除了添加必要的Enyim.Caching.dll引用,还需要修改应用程序的配置文件。

    C#代码

    public void testEnyimCaching()  
    24.        {  
    25.            MemcachedClient client = new MemcachedClient("enyim.com/memcached");  
    26.            //存值  --不带过期时间的存储,Memcached将根据LRU来决定过期策略   
    27.            bool result = client.Store(Enyim.Caching.Memcached.StoreMode.Add, "name", "dinglang");     
    30.            if (result)  
    31.            {  
    32.                Response.Write("成功存入缓存");  
    33.  
    34.                //取值     
    35.                object name = client.Get("name");  
    36.                if (name != null)  
    37.                {  
    38.                    Response.Write("取出的值为:"+name);  
    39.                }  
    40.                else  
    41.                {  
    42.                    Response.Write("取值失败");  
    43.                }  
    44.            }  
    45.            else  
    46.            {  
    47.                Response.Write("存入缓存失败");  
    48.            }  
    49.        }

    配置文件

    <configuration> 
    
       <sectionGroup name="enyim.com">  
    
            <section name="memcached" type="路径" />  
    
         </sectionGroup>  
    
      </configSections>  
    
      <enyim.com protocol="Binary">  
    
    <memcached>  
    
          <servers>  
    
            <add address="127.0.0.1" port="11121"  />  
    
          </servers>  
    
          <socketPool minPoolSize="10" maxPoolSize="100" connectionTimeout="00:00:10" deadTimeout="00:02:00" />  
    
      </memcached>  
    
     </enyim.com> 

    这是我自己摸索到的一些,更深入的待后续学习再继续完善该文章

    memcached缓存书籍,供大家学习 http://pan.baidu.com/s/1dDtfBwt

      

      

     

  • 相关阅读:
    SQL Server索引进阶:第九级,读懂执行计划
    SQL Server索引进阶:第八级,唯一索引
    SQL Server索引进阶:第七级,过滤的索引
    SQL Server索引进阶:第六级,标签
    SQL Server索引进阶:第五级,包含列
    SQL Server索引进阶:第四级,页和区
    SQL Server索引进阶:第三级,聚集索引
    SQL Server索引进阶:第二级,深入非聚集索引
    SQL Server索引进阶:第一级,索引简介
    2018 – 2019 年前端 JavaScript 面试题
  • 原文地址:https://www.cnblogs.com/xiao-yang/p/3818622.html
Copyright © 2011-2022 走看看