概述
Velocity是微軟推出的分布式緩衝解決方案,為開發可擴充性,可用的,高效能的應用程提供支援,可以緩衝各種類型的資料,如CLR對象、XML、位元據等,並且支援叢集模式的快取服務器。Velocity也將整合在.NET Framework 4.0中,本文將介紹Velocity的一些預備知識、安裝配置以及開發一個簡單的樣本。
簡介
既然是分布式的緩衝平台,用戶端應用程式能夠與快取服務器叢集中的任何一台伺服器通訊,並且執行快取作業,如新增快取項目,移除快取項目等。在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
安裝
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的編程模型和配置模型。
相關文章:
1. 使用微軟分布式快取服務Velocity Part 2