負載均衡與緩存


最近買了一本《實用負載均衡技術》的書籍,利用空余時間進行閱讀,希望能用到工作中,提升自己的能力

首先

一,什么是負載均衡

  通俗一點來講:在高並發,大數據環境下給服務器減壓的,分為硬件和軟件。其中:

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

  

 

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM