Windows Azure Cloud Service (42) 使用Azure In-Role Cache緩存(1)Co-located Role

  《Windows Azure Platform 系列文章目錄html

 

  Update 2016-01-12web

  https://azure.microsoft.com/zh-cn/documentation/articles/cache-dotnet-how-to-use-in-role/windows

  微軟宣佈Azure Managed Cache Service和Azure In-Role Cache會在2016年11月30日下線,建議全部的用戶採用Redis Cache。session

  有關Redis Cache的內容,請參考:架構

  http://www.cnblogs.com/threestone/category/741409.htmlasp.net

 

 

  筆者很早之前就想寫這篇文章了,昨天晚上項目正好遇到,今天記錄下來。post

 

  爲何要使用In-Role Cache?url

  咱們在開發PaaS Cloud Service的時候,PaaS VM都是無狀態的。並且默認的Load Balancer是5要素(source IP, source port, destination IP, destination port, protocol type)spa

  http://azure.microsoft.com/blog/2014/04/08/microsoft-azure-load-balancing-services/.net

  若是遇到須要保留Session,使用Cache的時候,就會遇到一些問題。這時候,咱們就可使用In-Role Cache了。

 

  In-Role Cache介紹

  In-Role Cache分爲兩種方式:

  -  Co-located Role(共享模式)。在共享模式中,Caching是保存在多個Web Role Instance的內存中。

  -  Dedicated Role(專用模式)。在專用模式中,用戶須要在工程文件中新建額外的Cache Worker Role,Caching不保存在Web Role VM的內存中,而是保存在新建的Cache Worker Role中。

    由於使用Dedicated Role,須要增長額外的Cache Worker Role,會增長計算成本

 

  如何使用In-Role Cache?  

  1.In-Role Cache不能在Virtual Machine虛擬機中使用,只能在PaaS Cloud Service使用。

  2.In-Role Cache不是經過Azure Management Portal建立的,而是安裝完Azure SDK後,在Cloud Project中配置的。

 

  注意:本章介紹的是Co-located Role(共享模式)。

  Co-located Role的架構圖,請參考http://weblogs.asp.net/scottgu/meet-the-new-windows-azure 

  

  

  1.使用管理員身份,運行Visual Studio 2013,建立一個新的Cloud Project,命名爲LeiColocatedRole。圖略。

  2.在New Windows Azure Cloud Service中,只須要添加ASP.NET Web Role。以下圖:

  

  3.咱們在項目文件中,選擇WebRole1,右鍵,屬性

  

  4.在Configuration欄目中,將Instance Count設置爲2,設置2個Web Role Instance作高可用,以下圖:

  

  

  5.在Caching欄目,修改如下紅色部分

  

  (1)勾選Enable Caching,啓用In-Role Caching  

  (2)點擊Co-located Role,而且在Cache Size中,設置內存比,即PaaS Web Role Instance的30%內存用來保存Caching信息

  (3)設置Storage Account,由於Cache Cluster(PaaS Web Role Instance)會將Runtime的信息保存在Storage,因此這裏必定要設置正確

  (4)Named Cache默認是default,咱們能夠經過Add Named Cache,增長新的Cache Name。

  另外,筆者在步驟4設置了Instance Count=2,因此咱們能夠勾選High Availability,保證高可用。這樣不會由於某臺Web Role Instance由於故障宕機致使Caching丟失

  (若是Instance Count=1的話,是沒法勾選High Availability)

  

 

  6.而後咱們點擊WebRole1,右鍵,Manage NuGet Packages

  

  

  7.查找關鍵字Windows Azure Cache,查詢到結果後,點擊下圖的Install進行安裝

  

 

  8.安裝完NuGet以後,會發現WebRole1項目下,增長了如下的引用:

  

  若是你使用ASP.NET,還會增長引用:Microsoft.Web.DistributedCache.dll

 

  9.咱們修改WebRole1下的Web.config,找到autoDiscover節點,以下圖:

  

  將上圖中的[Cache role name or Service Endpoint]中的節點,修改成項目文件的RoleName,在筆者的Sample Code中,咱們設置爲WebRole1

  設置完畢後的結果以下圖:

  

 

  10.將ASP.NET的Session指向Cache

  最後咱們在Web.Config節點中,將sessionState節點的註釋去掉。以下圖:

  

  注意:若是在步驟5中,修改了默認的Named Cache "default",咱們須要在上面的XML節點中,將dataCacheClientName的節點,修改成咱們自定義的Cache Name。如上圖紅色部分:

 

 

  11.使用In-Role Cache

  在C#代碼中,增長using語句:

using Microsoft.ApplicationServer.Caching;

  聲明DataCache

 static DataCache myCache;

  實例化

 myCache = new DataCache("default");

  寫Cache

myCache.Put("MyKey", TextBox1.Text);

  讀Cache

string outputFromCache = myCache.Get("MyKey") as string;

 

 

  參考資料:http://blog.sanc.idv.tw/2012/06/windows-azure-windows-azure-co-located.html

相關文章
相關標籤/搜索