使用微軟分佈式緩存服務Velocity Part 1

 

概述

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

簡介

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

TerryLee_0212

圖 1

物理模型

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

TerryLee_0213 

圖 2

邏輯模型

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

TerryLee_0216  

圖 3

安裝

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

TerryLee_0214

圖 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所示,可以看到宿主對應的服務名以及服務狀態等:

TerryLee_0217

圖 5

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

TerryLee_0218

圖 6

使用該管理工具還可以創建、移除命名緩存等,這裏不再敘述。

簡單示例

經過前面一大堆的理論介紹,現在來看一個最簡單的示例。首先要把CacheBaseLibrary和ClientLibrary這兩個程序集添加到應用程中,在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對象,其它的使用就非常方便了,如我們可以使用Add、Put、Remove、Get等方法來對緩存項進行操作,

添加緩存項:

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所示:

TerryLee_0219

圖 7

總結

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

發佈了86 篇原創文章 · 獲贊 4 · 訪問量 18萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章