使用微軟分佈式緩存服務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存儲等。另外能夠訪問以下站點得到一些資源:
團隊博客: [url]http://blogs.msdn.com/velocity/[/url] 
示例代碼: [url]http://code.msdn.microsoft.com/velocity[/url]
安裝完成後,請在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的編程模型和配置模型。

0javascript

收藏css

lihuijun

203篇文章,74W+人氣,0粉絲

Ctrl+Enter 發佈html

發佈java

取消mysql

1條評論jquery

按時間倒序 按時間正序

推薦專欄更多

帶你玩轉高可用

前百度高級工程師的架構高可用實戰

共15章 | 曹林華

¥51.00 510人訂閱
負載均衡高手煉成記

高併發架構之路

共15章 | sery

¥51.00 579人訂閱
VMware vSAN中小企業應用案例

掌握VMware超融合技術

共41章 | 王春海

¥51.00 438人訂閱
基於Kubernetes企業級容器雲平臺落地與實踐

容器私有云平臺實踐之路

共15章 | 李振良OK

¥51.00 700人訂閱
網工2.0晉級攻略 ——零基礎入門Python/Ansible

網絡工程師2.0進階指南

共30章 | 薑汁啤酒

¥51.00 1956人訂閱

掃一掃,領取大禮包git

0web

1
分享
lihuijun
相關文章
相關標籤/搜索