公告資訊

未經授權,禁止轉載網站文章與內容。如有需要可以跟我聯絡,謝謝!!




顯示具有 Windows Server AppFabric 標籤的文章。 顯示所有文章
顯示具有 Windows Server AppFabric 標籤的文章。 顯示所有文章

2011年7月15日 星期五

無痛開發日 - 使用Visual Studio 2010

今天的無痛開發日,早上是由保哥分享Visual Studio 2010的開發經驗,下午由我介紹 IIS 7在目前SOA架構中所扮演的角色,以及Windows Server AppFabric的開發經驗。有興趣的朋友,可以到下面的網址下載我今天上課的講義:

另外,如果你聽完今天的課程,對於WCF與Windows Server AppFabric有興趣的話,在九月份的TechDays 2011大會中,會有專門的主題進行分享。

2010年11月12日 星期五

加入AppFabric Cache Cluster 發生錯誤

當透過AppFabric設定工具,要將目前機器加入已經存在的快取叢集時,若是出現下面的錯誤訊息:

image

錯誤發生的原因,就是在 "C:\Windows\System32\AppFabric\DistributedCacheService.exe.config" 檔案中,<clusterConfig>標籤中沒有正確的資料。解決的方式,可以從任一台叢集中的機器中,開啟這一個檔案之後,再將資料複製到config檔案之後,再重新執行AppFabric設定工具就可以了。

2010年11月11日 星期四

建構私有雲叢集運算核心–Windows HPC Server 2008 R2

雖然最近相當忙,但是發現技術的東西用過之後如果沒有記錄一下,很快就會忘記了。

雲端運算是最近相當熱門的題材,為了讓無法自行建置雲端平台的新興網路產業,以及希望降低公有雲TOC的企業,微軟提供了Windows Azure,讓需要企業可以隨時調配所需要的公有雲架構。然而,在企業當中,還是有需要可以將一些內部的企業級應用程式,建置在企業內私有雲端執行的需求。

Windows High Performance Computing (HPC) Server 2008 R2 是微軟叢集運算的核心,搭配.NET Framework 4.0 所提供的TPL(Task Parallel Library),你就可以將C#或是VB.NET所建立的WCF服務,進行分散式的運算;而像是ETL、Data Mining等需要大量運算資源的Job,也可以透過HPC Cluster的Head Node進行分散式運算,並且還可以監控每台機器的執行狀況,產生報表。再加上Windows Server AppFabric Caching 的分散式快取,其實要建立企業內私有雲平台並不難。下面是Windows HPC Server 2008 R2的叢集運算基本架構:

ClusterComputing

Windows HPC Server 不是新的作業系統,而是架構在Windows Server 2008 R2 64 位元作業系統上面的叢集運算服務,由下面幾個基本的角色構成:

1. Head Node:負責集中管理與分派工作(Job)的節點,透過SQL Server資料庫紀錄工作與執行狀態。

2. WCF Broker Node:負責裝載WCF服務,並且將用戶端要求傳送到叢集中運算,回傳結果。

3. Compute Node:負責運算的節點,可以是Windows Server或是Windows 7的工作站。

設定Job的時候可以指定需要使用多少運算的資源:

image

image

但需要注意的是,若是要發揮叢集運算的最佳效果,程式在撰寫的時候,就必須要把平行運算的設計考量,加入到程式碼當中。關於.NET Framework 4.0的平行運算是一個很大的課題,有時間再慢慢分享。

2010年9月27日 星期一

Windows Server AppFabric Caching (3) - 與資料庫存取在效能方面的比較

在利用Windows Server AppFabric Caching,建立大量資料存取的系統時,Windows Server AppFabric可以大大的減輕系統存取資料庫時所造成的I/O負擔,同時其Key-Value的存取方式也讓程式可以透過Key值直接取得所需要的物件,不需要花時間建立資料連線。下面分享一個實際的測試結果:

在這一個測試當中,我將4000萬筆資料從資料表搬到Cache當中儲存,再與資料庫查詢同一筆資料的結果作比較;資料庫與Cache Server都在美國的Data Center中。在沒有啟用Local Cache功能時,第一次查詢資料的結果為:

image

相同的條件再執行一次,結果為:

image

從結果可以看出,使用資料庫查詢在第一次建立資料連線時,需要耗費相當的時間;而當資料連線建立完成之後,後續的存取時間使用Cache或是使用資料庫其實差異不大。但就如同一開始所說的,使用Cache可以減輕資料庫I/O的負擔,這對於我們一天有幾十GB資料要新增的系統來說,有相當的幫助。

接下來,我們啟用LocalCache之後,再重新測試一次:應用程式第一次查詢資料的結果和之前差不多:

image

(請想想,相對於對第一次資料庫存取而言,為何這一次快了一倍? )

相同的條件再執行一次,結果為:

image

0 毫秒!!

對於大量提供資料的應用程式而言,Windows Server AppFabric Caching 除了可以減輕資料庫的負擔之外,當啟用LocalCache之後,AppFabric Caching會自動將使用過的物件快取在應用程式當中,當下次要再使用相同的物件時,就不需要再從Cache Layer當中去存取物件,因此幾乎是即時就可以取得資料!!

但需要注意的是,雖然Cache可以讓我們在近乎即時的狀況之下使用物件,但是在設計上,Key-Value相對於關聯式資料庫而言,是完全不同的效果,同時資源的消耗上也是完全不同的。下次,再來談設計上的考量…

2010年6月11日 星期五

Windows Server AppFabric Caching (2) - 存放ASP.NET應用程式的Session資料

除了暫存應用程式可共享的快取資料之外,另一個Windows Server AppFabric Caching 服務重要的功能就是可以做為ASP.NET網際網路應用程式out-of-process session資料的存放空間。操作的方式相當的簡單:

1. 加入組件參考,用戶端應用程式需要用的的組件為Microsoft.ApplicationServer.Caching.Client.dll以及Microsoft.ApplicationServer.Caching.Core.dll。

2. 在Web.config中,加入下面設定:

a. 在<configSections>區段中,加入:

image

b. 接著,在<configuration>中,使用剛剛的宣告建立<dataCacheClient>區段,並設定快取服務的位置:

image

c. 修改<system.web>區段中Session Provoder的宣告:

image

如此一來,ASP.NET也可以使用分散式的in-memory快取叢集。比較需要注意的是,若是要使用High-Availability的快取來存放Session資料的話,所有快取叢集機器的作業系統都必須要是Enterprise或是Datacenter版本,並且要使用Secondaries參數建立具名快取:

New-Cache –CacheName session –Secondaries 1 –TTL 1440

Windows Server AppFabric Caching 的二三事

1. 正式版的改變:

2009年6月的MSDN雜誌的這一篇文章 "Build Better Data-Driven Apps With Distributed Caching" (http://msdn.microsoft.com/zh-tw/magazine/dd861287.aspx) 寫得相當不錯,然而在正式版中有些地方不太一樣,例如:

(1) 參考的組件名稱與位置不同。

(2) CacheFactory –> DataCacheFactory; Cache –> DataCache.

(3) New-Cache 指令的參數名稱不太一樣。

好吧,我就直接告訴你,Beta 2跟正式版之間有許多不一樣的地方,有興趣操作Windows Server AppFabric的朋友可以參考我的前一篇範例操作。

2. 在ASP.NET應用程式中設定Windows Server AppFabric Caching做為Session providers會出現 "無法載入型別 'Microsoft.ApplicationServer.Caching.DataCacheSessionStoreProvider'" 的錯誤:

這是因為在Web.Config中,若是要參考型別定義,要參照GAC的定義就要使用完整名稱:

image

若是要使用簡式名稱的話,就必須先把"Microsoft.ApplicationServer.Caching.Client.dll"組件複製到網站的bin目錄下:

image

簡式名稱設定如下:

image

Windows Server AppFabric Caching (1) - 初體驗

Windows Server AppFabric 是微軟在新一代分散式架構中,相當重量級的一個應用程式平台。而透過Windows Server AppFabric 所提供的資料快取服務,我們可以快速地利用多台機器建立分散式而且In-Memory 的Cache-Tier,不但可以減輕資料庫的負擔,也可以增加資料存取的速度。基本的架構圖如下:

image

(圖片來源:MSDN雜誌 http://msdn.microsoft.com/zh-tw/magazine/dd861287.aspx)

關於Windows Server AppFabric Caching的一些其他的基本資訊與一些基本觀念,各位可以先參考保哥之前整理的文章(http://blog.miniasp.com/post/2009/12/Windows-Server-AppFabric-Caching-Velocity-Notes.aspx),這裡就不再贅述。安裝建置好Windows Server AppFabric Caching的環境之後,可以按照下面的兩個步驟,建立簡單的快取層級環境:

1. 啟動快取叢集(Cache Cluster):

    Windows Server AppFabric Caching最大的特色之一,就是可以利用多台機器的記憶體環境建立快取叢集,用來暫存應用程式間可以共享的物件資料。在PowerShell中使用Start-CacheCluster指令可以啟動多台機器上的Cacheing Service所建立的快取叢集。

image

2. 建立具名快取(Named Cache)

    具名快取是在快取叢集中暫存資料的單元,而每個暫存在具名快取中的物件稱為快取項目(Cache Item)。程式要使用快取叢集之前,必須要先使用New-Cache指令建立可以暫存物件的具名快取。在PowerShell中執行下面指令,可以建立一個名為"catalog"的具名快取:

New-Cache -CacheName catalog -Eviction none -Expirable false

快取層級的環境建好之後,可以透過下面的方法建立簡單的用戶端程式測試:

1. 建立一個新的Console Application.

2. 加入組件參考,用戶端應用程式需要用的的組件為Microsoft.ApplicationServer.Caching.Client.dll以及Microsoft.ApplicationServer.Caching.Core.dll。這兩個組件是安裝在 Windows\System32\AppFabric 目錄底下;若是64位元的開發環境,請先在Windows目錄下建立一個SysNative資料夾,再參考到Windows\SysNative\AppFabric 目錄。

image

3. 加入下面兩個命名空間:

image

4. 宣告要加入快取中的物件類別定義,注意需要支援序列化:

image

5. 最後,透過程式建立要加入快取的物件,並且加入具名快取中。完成之後再取出來:

image

程式完成的結果如下:

image

這次先做到這,有時間再詳細一一介紹這些設定。

最新回應

Loading...

即時與版主對話


(若狀態顯示"忙碌"時,我可能無法馬上回應。你可以留下Email,我會盡快跟你聯絡,謝謝喔!!)