分佈式緩存: Velocity之安裝應用

概述

Velocity是微軟推出的分佈式緩存解決方案,爲開發可擴展性,可用的,高性能的應用程提供支持,能夠緩存各類類型的數據,如CLR對象、XML、二進制數據等,而且支持集羣模式的緩存服務器。Velocity也將集成在.NET Framework 4.0中,本文將介紹Velocity的一些預備知識、安裝配置以及開發一個簡單的示例。 html

簡介

既然是分佈式的緩存平臺,客戶端應用程序可以與緩存服務器集羣中的任何一臺服務器通訊,而且執行緩存操做,如新增緩存項,移除緩存項等。在Velocity中,提供了一套統一的API,開發者可使用任何一種.NET語言來訪問這些API,如圖1所示: 數據庫

1 編程

物理模型

在整個Velocity分佈式緩存解決方案中,從物理模型上來看,主要涉及到以下幾個元素:緩存宿主,緩存集羣,Velocity提供的基於Windows PowerShell的管理工具,對於服務器集羣配置的存儲。緩存宿主是指一個或者多個以Windows服務形式運行的服務器,每臺服務器均可以運行緩存宿主服務;緩存集羣是一個或者多個緩存宿主實例的集合;當緩存集羣啓動時,它將從集羣配置存儲位置處來獲取配置信息,Velocity提供了多種方式的集羣配置信息存儲,能夠基於XML文件、SQL Server數據庫或者SQL Server CE等;基於PowerShell的管理工具後面會詳細講到。 如圖2所示: 緩存

 

2 服務器

邏輯模型

從邏輯模型上來看,在Velocity中主要有命名緩存,在命名緩存中咱們還能夠繼續分區,命名緩存,能夠理解爲內存中的一個獨立的存儲結構單元,它們之間徹底互相隔離,互不干擾,當有多個應用程序共享同一個緩存集羣時,能夠爲每一個應用程序分別創建命名緩存;在同一個命名緩存中,還能夠對命名緩存進行分區,這樣便可以解決數據衝突的問題,再配合Velocity中的"標籤"功能,能夠極大的提升檢索效率。如圖3所示: 分佈式

  

3 ide

安裝

Velocity當前最新的版本是CTP 2,你們能夠到微軟官方站點下載,因爲Velocity中提供了一套基於Windows PowerShell的管理工具,因此在安裝以前須要首先安裝Windows PowerShell。在安裝過程當中,其中有一步須要進行服務器集羣的配置,如圖4所示: 工具

4 性能

須要設置服務及集羣端口號,集羣配置的存儲位置,集羣配置存儲的Provider,能夠基於XML存儲或者基於SQL Server CE存儲等。另外能夠訪問以下站點得到一些資源: 學習

團隊博客:http://blogs.msdn.com/velocity/ 

示例代碼:http://code.msdn.microsoft.com/velocity

安裝完成後,請在Windows Service中啓動Microsoft project code named "Velocity"服務。

管理工具

Velocity提供了基於Windows PowerShell的管理工具,對於Windows PowerShell不熟悉的能夠參考《迴歸Dos操做的快感,進入PowerShell世界》這篇文章。使用Windows PowerShell能夠很是方便的對Velocity緩存集羣、緩存宿主等進行管理。使用以下命令金額圖對啓動、中止、重啓服務器集羣:

Start-CacheCluster 

Stop-CacheCluster 

Restart-CacheCluster 

使用以下命令能夠啓動、中止緩存宿主、獲取命名緩存、獲取緩存分區等:

Get-CacheHost 

Get-CacheConfig 

Set-CacheConfig 

Start-CacheHost 

Stop-CacheHost 

Get-CacheStatistics 

Get-Cache 

Get-CacheRegion 

如使用Get-CacheHost命令獲取緩存宿主的信息,如圖5所示,能夠看到宿主對應的服務名以及服務狀態等:

5

使用Get-Cache命名查看全部的命名緩存,如圖6所示:

6

使用該管理工具還能夠建立、移除命名緩存等,這裏再也不敘述。

簡單示例

通過前面一大堆的理論介紹,如今來看一個最簡單的示例。首先要把CacheBaseLibraryClientLibrary這兩個程序集添加到應用程中,在Velocity安裝目錄下能夠找到,而且引入命名空間:

using System.Data.Caching; 

在使用Velocity緩存數據時,首先須要建立一個命名緩存,它能夠經過CacheFactory來建立,以下代碼所示:

private Cache GetCurrentCache() 

{ 

 Cache dCache; 

 ServerEndPoint[] servers = new ServerEndPoint[1]; 

 servers[0] = new ServerEndPoint("localhost", 22233, "DistributedCacheService"); 

 bool routingClient = true; 

 bool localCache = false; 

 var factory = new CacheFactory(servers, routingClient, localCache); 

 dCache = factory.GetCache("default"); 

 

 return dCache; 

} 

此處首先指定了全部的服務器信息,固然這些均可以放在應用程序配置文件中,將會在下篇中介紹,有了Cache對象,其它的使用就很是方便了,如咱們可使用AddPutRemoveGet等方法來對緩存項進行操做,

添加緩存項:

Cache dCache = GetCurrentCache(); 

 

String key = keyTextbox.Text; 

String val = valueTxtBox.Text; 

 

if (key == "" || val == "") return; 

 

dCache.Add(key, val); 

statusLabel.Text = 

 String.Format("Successfully added key {0} to cache.", key); 

獲取緩存項:

Cache dCache = GetCurrentCache(); 

String key = keyTextbox.Text; 

 

if (key == "") return; 

 

String val = dCache.Get(key).ToString(); 

valueTxtBox.Text = val; 

statusLabel.Text = 

 String.Format("Successfully did Get of key {0} from cache", key); 

運行程序能夠測試,數據被正確的緩存,如圖7所示:

7

總結

本文簡單介紹了微軟的分佈式緩存解決方案Velocity的一些概念以及開發了一個簡單的示例,但願對你們有用。在下篇文章中,咱們將會更深刻學習緩存複雜數據類型以及Velocity的編程模型和配置模型。

相關文章
相關標籤/搜索