學習中,順便翻譯,有不正確的地方歡迎指正,轉載請註明出處http://cnblogs.com/xuf22
一、Velocity是什麼
官方地址:http://www.microsoft.com/download/en/details.aspx?id=2517
“Velocity”是適用與所有資料來源的一個高速、“scalable in-memory ”的緩衝,通過使用該緩衝,可以減少不必要的資料來源訪問請求,極大的提高應用程式的效能。通過使用分布試的緩衝應用,可以滿足輸送量不斷增長的應用程式請求。“Velocity”分布在快取群集中,不需要大量人為幹涉,從而減少了負載平衡的複雜度。後期發布更名為【AppFabric】
二、緩衝概念
1.基本概念
1.1 物理概念
“Velocity”是一個由多個可以相互連信,統一的應用程式快取服務的群集。物理模型的主要組件包括快取服務器,緩衝主機Windows服務,快取叢集,基於PowerShell的緩衝管理工具,叢集組態儲存位置和快取用戶端。
緩衝主機(cache host):
“Velocity”以服務形式運行在一個或多Windows服務上,這些服務即為緩衝主服務,運行主快取服務的主機稱作快取服務器。你仍然可以在安裝過“Velocity”的主機上運行其它程式,如:Web服務。但一個主機只能安裝一個“Velocity”執行個體。
快取服務主機與資料來源主機最好是在同一個域下,緩衝主機服運行在Network Service賬戶下,緩衝主服務上的各種操範圍下的快取認證憑據。“Velocity”使用許可權較低的網路服務帳戶,可以有效減少被惡意攻擊造成的損害。
快取叢集(cache cluster ):
快取叢集是指一個或多個緩衝主服務的組成的一個環形的、共同儲存分發資料的解決方案。將資料存放區在記憶體中,以減少請求資料的回應時間。群集的操作和控制由"cluster management role”管理,它包括以下三點:
1.讓快取叢集一直處於運行狀態
2.監測快取叢集中的所有緩衝主機
3.協助緩衝主機加入快取叢集
群集配置儲存區(Cluster Configuration Storage Location)
叢集每次啟動時,必須從群集配置中的儲存位置檢索配置資訊。下表顯示了兩種可能的方式
基於PowerShell的管理工具(PowerShell-Based Cache Administration Tool)
快取用戶端(Cache Client)
“Velocity”分布式緩衝叢集是設計用於應用伺服器在企業資料中心,並部署在企業防火牆的內。任何使用伺服器上啟動並執行快取的應用程式統稱為快取用戶端。
1.2 邏輯模型
邏輯概念上將Velocity分為:(named caches)緩衝命名(這個真不知道怎麼翻譯),(regions)緩衝域和(cached objects)緩衝對象。
named caches:
是一個通過配置在記憶體中形成的分布式緩衝儲存單元。你可以在一個應用程度中配置一個或多個name caches,每個name caches不會受其它配置的影響,這樣你可根據程式的需要,配置多個name cache,並且每個name caches使用不同的緩衝策略。
如所示:name caches跨越分布在每個緩衝主機上,如果你不為緩衝指定名稱,你的資料將被儲存在預設的“default”緩衝命名下。
所有緩衝都有群集配置來定義。使用PowerShell的緩衝管理工具來建立或重新設定緩衝。某些設定只能第一次建立緩衝時配置。例如,您使用New-Cache命令啟用高可用性或通知功能。其他設定可以以後改變,但可能需要重新啟動整個緩衝叢集。
regions:
regions是一個邏輯上的緩衝儲存域(感覺可以理解為一個命名空間吧)。regions是一個可選項,不是通過配置建立的,你必需在代碼中用CreateRegion函數建立。可以通過regions尋找該region下的所有cache objects。為了提供這種附加的搜尋功能,在一個地區內的對象僅限於一個單一的緩衝主機。因此,使用該資料的應用程式無法實現分布式緩衝的可擴充性優勢。相反,如果你不指定一個地區,緩衝的對象,否則可以Server Load Balancer叢集中的所有緩衝主機。
caches objects:
從緩衝中取出的資料都是System.Object類型,需要通過類型轉換得到它的原始類型。當一個對象存在與Caches時,Caches將關聯該對象的版本,鍵,標籤等。
1.3 編程概念(Programming )
當資料不存在於你的用戶端緩衝中時,需要重新從Caches Host中載入。用戶端使用DataCache類來添加用戶端cache。
緩衝策略(Caching Strategy)
應用程式就設計成在沒有緩衝存在時仍然可以正常運行,因為緩衝並不是絕對持久有效,它總有失效或不存在的可能性。Velocity的高可用性可以有效防止群集中的個別主機故障帶來的問題,但是如果群集中有太多的主機掛了,那Velocity還是會掛(相當與disk raid吧,壞了個別還可以跑)。
還有許多其他的原因會導致程式找不到緩衝:緩衝可能已經到期或者被移除,可能已重新啟動快取服務器,緩衝主機服務可能已重新啟動,或快取叢集可能已被意外重新啟動。所以務必確保在沒有緩衝的情況下,應用程式仍然可以訪問到正資料並正常運行。
快取用戶端(Cache Clients)
為了儲存在緩衝中的資料,可以使用GetCache方法用於返回一個DataCache對象, DataCache對象執行個體化後的執行個體被稱為快取用戶端。有許多選項可用來配置快取用戶端的行為,編程方式或使用應用程式設定檔,或同時使用這兩種方法。
以下代碼示範DataCache讀寫緩衝
DataCache Demo//Each application has a similar GetCache method callDataCacheFactory myCacheFactory = new DataCacheFactory();DataCache catalog = myCacheFactory.GetCache("catalog");//One cache client saves an object to the catalog named "toy101"catalog.Put("toy101", new ToyObject("toy101", "Playschool"));//The same or different cache client retrieves the objectToyObject toy = (ToyObject)catalog.Get("toy101");//The same or a different cache client removes the objectcatalog.Remove("toy101");
1.4 配置概念(Configuration Model )
Velocity支援許多緩衝配置。配置可分為3個層級:用程式級,緩衝主機級,快取叢集級。 Velocity還提供了用於指定和儲存的緩衝叢集和用戶端應用程式使用的配置。
應用程式級配置(Application Configuration)
每個Velocity的快取用戶端都必需有快取用戶端配置。可以在代碼中指定配置也可以在應用程式的.config檔案中配置。如果兩種方式同時指定,代碼中的配置將覆蓋設定檔的配置。
應用程式設定包涵了可以與cache hosts通訊的唯一配置,同時需要指定本機快取配置。
緩衝主機配置(Cache Host Configuration)
每個緩衝主機通過DistributedCache.exe.config檔案配置,DistributedCache.exe.config在安裝Velocity時自動建立,該配置是快取服務運行必需要的,通常情況下你不需要修改該配置。
群集配置(Cluster Configuration)
所有在叢集服務中的緩衝主機都必需指定與群集通訊許可權的配置。群集配置指定了cache hosts和named caches的配置。叢集服務配置在第一個群集中緩衝主機安裝時被指定的,之後的緩衝主機安裝時將自動從此主機同步。
群集配置有兩個可用選項。
| Storage type |
Storage location |
Cluster management |
SQL Server Compact data file |
shared network folder |
lead hosts |
SQL Server database |
SQL Server |
SQL Server (default) or lead hosts |
Technorati 標籤: 分類式緩衝-Velocity