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
使用該管理工具還能夠建立、移除命名緩存等,這裏再也不敘述。
通過前面一大堆的理論介紹,如今來看一個最簡單的示例。首先要把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所示:
圖 7
本文簡單介紹了微軟的分佈式緩存解決方案Velocity的一些概念以及開發了一個簡單的示例,但願對你們有用。在下篇文章中,咱們將會更深刻學習緩存複雜數據類型以及Velocity的編程模型和配置模型。