Microsoft 群集服務 (MSCS),簡介,三種群集技術,通過 Microsoft 群集服務實現故障轉移,群集服務結構,不識別群集的應用程式,高可用性記事本,結論,骨髓間充質幹細胞,開採沉陷預計系統,移動交換中心伺服器,背景,功能,
Microsoft 群集服務 (MSCS)
簡介
在任何情況下,僅僅交付一個具有豐富功能集的高質量應用程式是不夠的,在越來越多的時候,它還必須滿足高可用性標準。您是否因為
群集技術看起來過於高深、難於理解和使用而沒有使應用程式再提高一個層次? 隨著 Microsoft 的群集服務在 Windows NT™ 4 中引入以及在 Windows Server 2003 系列中正式提供,開發人員可使用一些簡單工具在群集環境中部署應用程式。這些工具能夠將群集中的應用程式登記為一般應用程式,並且能夠通過編寫 Windows
腳本的方式來控制應用程式的配置。
群集將兩個或多個伺服器連線在一起,使其對
客戶端呈現為單個計算機。在一個群集中連線伺服器可以分擔工作負載、實現單點操作/管理,並為滿足增長的需求進行相應的調整提供了一種途徑。因此,通過群集可以產生具有高可用性的應用程式。
本文著重介紹三種支持群集的 Microsoft 伺服器技術之一:群集服務。我們將說明如何在群集環境中對應用程式輕鬆執行性能檢查,而無需更改應用程式代碼。
三種群集技術
Microsoft 伺服器提供了三種支持群集的技術:
網路負載平衡 (NLB)、組件負載平衡 (CLB) 和 Microsoft 群集服務 (MSCS)。
網路負載平衡充當前端群集,用於在整個
伺服器群集中分配傳入的 IP 流量,是為電子商務 Web 站點實現增量可伸縮性和出色可用性的理想選擇。 最多可以將 32 個運行 Windows Server 2003 系列產品的計算機連線在一起共享一個虛擬 IP 地址。NLB 通過在群集內的多個伺服器之間分配其客戶端請求來增強可伸縮性。隨著流量的增加,可以向群集添加更多的伺服器,任何一個群集最多可容納 32 個伺服器。NLB 在為用戶提供連續服務的同時還提供了高可用性,即自動檢測伺服器故障,並在 10 秒內在其餘伺服器中重新分配客戶端流量。
組件負載平衡可以在多個運行站點業務邏輯的伺服器之間分配負載。它在最多包含八個等同伺服器的伺服器群集中實現了 COM+ 組件的動態平衡。在 CLB 中,COM+ 組件位於單獨的 COM+ 群集中的伺服器上。激活 COM+ 組件的調用是平衡到 COM+ 群集中的不同伺服器的負載。CLB 通過作用於多層群集網路的中間層與 NLB 和群集服務配合工作。 CLB 是作為 Application Center 2000 的特性提供的,可與 Microsoft 群集服務在同一組計算機上運行。
群集服務
群集服務充當後端群集,可為資料庫、訊息傳遞以及檔案和列印服務等應用程式提供高可用性。當任一節點(群集中的伺服器)發生故障或脫機時,MSCS 將嘗試最大程度地減少故障對系統的影響。
通過 Microsoft 群集服務實現故障轉移
MSCS 故障轉移功能是通過群集中連線的多個計算機中的
冗餘實現的,每台計算機都具有獨立的故障狀態。為了實現
冗餘,需要在群集中的多個伺服器上安裝應用程式。但在任一時刻,應用程式只在一個節點上處於在線上狀態。當該應用程式出現故障或該伺服器停機時,此應用程式將在另一個節點上重新啟動。 Windows Server 2003
數據中心版支持在一個群集中最多包含 8 個節點。
每個節點都具有自己的記憶體、系統磁碟、作業系統和群集資源的子集。如果某一節點出現故障,另一個節點將接管故障節點的資源(此過程稱為“故障轉移”)。然後,Microsoft 群集服務將在新節點上註冊資源的網路地址,以便將客戶端流量路由至當前擁有該資源的可用系統。當故障資源恢復在線上狀態時,MSCS 可配置為適當地重新分配資源和客戶端請求(此過程稱為“故障恢復”)。要使應用程式恢復到發生故障轉移時的那一點,節點必須能夠訪問保持應用程式狀態的共享存儲區。
請注意,Microsoft 群集服務旨在提供高可用性,而不是真正的容錯功能。“容錯”一詞通常用於描述提供更高級別恢復功能的技術。容錯伺服器通常使用結合了特定軟體的高級硬體或
數據冗餘,提供從單個硬體或軟體故障近乎瞬時的恢復。這類解決方案的成本遠遠高於群集解決方案,因為您必須購買
冗餘硬體,而冗餘硬體只不過閒置在那裡用於故障恢復。Microsoft 群集服務使用價格適宜的標準硬體提供出色的高可用性解決方案,同時最大程度地利用計算資源。
Microsoft 群集服務基於無共享的群集模型。無共享模型規定,雖然群集中有多個
節點可以訪問設備或資源,但該資源在一個時刻只能由一個系統占有和管理。(在 MSCS 群集中,資源是指任何可以在線上或脫機、可在群集中進行管理、一個時刻只能以一個
節點作為宿主並可以在節點之間移動的物理組件或邏輯組件。
群集服務結構
Microsoft 群集服務由三個主要組件構成:群集服務、資源監視器和資源 DLL。此外,還可以利用群集管理器創建提供管理功能的擴展 DLL。
群集服務
群集服務是核心組件,並作為高優先權的
系統服務運行。群集服務控制群集活動並執行如下任務:協調事件通知、加速群集組件之間的通信、處理
故障轉移操作和管理配置。 每個群集節點都運行自己的群集服務。
資源監視器
資源監視器是群集服務和群集資源之間的接口,並作為獨立進程運行。群集服務使用資源監視器與資源 DLL 進行通信。DLL 處理所有與資源的通信,因此 DLL 以資源監視器為宿主可以保護群集服務免受運行不正常或停止工作的資源造成的影響。資源監視器的多個副本可以在單個節點上運行,從而可以將無法預測的資源與其他資源隔離開。
群集服務在需要對資源執行操作時,向分配給該資源的資源監視器傳送請求。如果資源監視器的進程中沒有可以處理該類型資源的 DLL,則使用註冊信息載入與該資源類型相關聯的 DLL。然後,將群集服務的請求傳遞至其中一個 DLL 的
入口點函式。資源 DLL 將處理操作的細節,以滿足資源的特定需要。
資源 DLL
第三個關鍵的 Microsoft 群集服務組件是資源 DLL。資源監視器和資源 DLL 使用資源 API 進行通信。資源 API 是用於管理資源的
入口點、
回調函式和相關結構及宏的集合。
對於群集服務而言,資源是任何可進行管理的物理組件或邏輯組件,例如
磁碟、網路名、IP 地址、資料庫、Web 站點、應用程式以及任何其他可以在線上和脫機的實體。資源可按類型進行組織。資源類型包括物理硬體(例如
磁碟驅動器)和邏輯項(例如 IP 地址、檔案共享和一般應用程式)。
每個資源都使用資源 DLL,它主要是資源監視器和資源之間的被動轉換層。資源監視器調用資源 DLL 的
入口點函式來查看資源的狀態,使資源在線上和脫機。資源 DLL 負責通過任何方便的 IPC 機制與其資源進行通信,以實現這些方法。
實現其自身資源 DLL 與群集服務通信的應用程式以及使用群集 API 請求和更新群集信息的應用程式都被定義為識別群集的應用程式。不使用群集或資源 API 以及群集控制代碼函式的應用程式和服務都不識別群集,也不知道群集服務在運行。這些不識別群集的應用程式通常作為一般應用程式或服務進行管理。
識別群集的應用程式和不識別群集的應用程式都可以在群集節點上運行,並且都可以作為群集資源進行管理。但是,只有識別群集的應用程式可以利用群集服務通過群集 API 提供的功能。開發識別群集的應用程式需要建立
自定義資源類型。通過
自定義資源類型,開發人員可以使其應用程式在群集內發生各種事件(例如,節點即將脫機,因此會關閉資料庫連線)時,作出回響並採取必要的措施。
對於大多數需要在群集中運行的應用程式,最好投入一些時間和資源開發
自定義資源類型。不過,可以先在群集環境中對應用程式進行測試,而不必修改應用程式的代碼或創建新的資源類型。在 Windows Server 2003 系列中,未經修改的應用程式可以作為“不識別群集的”應用程式以基本級別運行。群集服務專為此用途提供了一般應用程式資源類型。
群集管理器擴展 DLL
群集管理器擴展 DLL 在群集管理器內提供特定於應用程式的管理功能,允許用戶以同樣的方式管理他們的應用程式,無論該應用程式是在群集內部運行還是在群集外部運行。開發人員可以在群集管理器的
框架內提供應用程式管理功能,或只是將這些功能連結到現有的管理工具。
開發人員可以通過編寫擴展 DLL 來擴展群集管理器的功能。群集管理器應用程式通過一組已定義的 COM 接口與擴展 DLL 進行通信。擴展 DLL 必須實現一組特定的接口並且在群集的每個
節點上都進行註冊。
不識別群集的應用程式
不提供其自身資源 DLL 的應用程式或服務仍可以在群集環境中進行配置。Windows Server 2003 系列中的群集服務包括僅用於此目的的一般資源 DLL:一般應用程式資源 DLL 和一般服務資源 DLL。群集服務將這些應用程式或服務看作是不識別群集的一般應用程式或服務。
一般資源 DLL 只提供最基本的控制。例如,一般應用程式資源 DLL 通過確定應用程式的進程是否仍然存在來檢查應用程式是否發生故障,並通過終止進程使應用程式脫機。但它並不依賴於其他資源,而是提供一個在群集環境中測試應用程式的簡單方法。
高可用性記事本
並非所有應用程式都能在群集中高效地工作。最有效的評估方式就是在群集中實際部署應用程式。執行初次測試的最簡單機制是使用內置的一般應用程式資源類型將應用程式登記到群集中。“Generic Application”(一般應用程式)資源類型作為 Windows Server 2003 系列中群集服務的一部分提供,可以通過查看 “Cluster Administrator”(群集管理器)工具中 “Cluster Configuration”(群集配置)下的 “Resource Types”(資源類型)節點查看該類型以及其他內置資源類型。
群集管理器具有互動式嚮導,使您能夠為列出的任何資源類型創建資源。群集服務還提供了 COM 接口,您可以用編程的方式創建和管理資源。
注最新的群集管理器工具及相關的開發資源可以從 Platform SDK 獲得。
群集自動化伺服器提供一組自動化對象,用於向
腳本語言公開一個完整的群集管理接口,使您能夠開發基於 Web 的遠程管理工具。群集自動化伺服器能夠簡化和增強創建群集管理應用程式的過程。
群集自動化伺服器的本質是面向對象的,這意味著幾乎所有群集編程任務都會涉及以下步驟:
確定需要執行的群集操作。
確定如何獲取步驟 2 中的對象。MSDN® 中提供的對象層次結構可用於此目的。
獲取對象並調用屬性或方法。
為了進行說明,我們將使用 Windows Scripting Host 和 Microsoft VBScript 以編程方式創建一般應用程式資源。
群集對象
群集對象是頂層對象,允許創建新實例。群集對象的 ProgID 是 “MSCLUSTER.CLUSTER”:
Set oCluster = CreateObject( "MSCluster.Cluster" ) 打開群集
在使用群集上的任何方法之前,必須先打開到該群集的連線。Open 方法可打開到群集的連線。將空字元串 ("") 作為
參數傳遞給 Open 方法,即可打開到 localhost 上的群集的連線。腳本將在
本地主機伺服器上運行:
oCluster.Open( "" ) 創建組
群集組是群集資源的容器。當組中的一個資源發生故障且必須將該資源轉移到其他節點時,該組中的所有資源都將被移動。組還定義了依賴關係邊界。某個資源只能建立與另一個資源的依賴關係,前提是,該資源在同一個組中。為了進行測試,我們將創建一個獨特的組,名為 “High Availability Notepad”(高可用性記事本):
Set oGroup = oCluster.ResourceGroups.CreateItem( "High Availability Notepad" ) 創建資源
每個組都包含資源集合。CreateItem 方法創建一個新資源,並將其添加到組的集合中。在本示例中,我們將創建一個名為 “Notepad” 的資源,資源類型為 “Generic Application”:
Set oResource = oGroupResources.CreateItem( "Notepad", "Generic Application", 0 ) 設定資源屬性
每個一般應用程式資源都具有兩個可使資源在線上的基本屬性: CommandLine 和 CurrentDirectory。CommandLine 包含資源在線上時要執行的命令,而 CurrentDirectory 則指定從中執行命令的檔案系統目錄。當此
腳本執行語句使資源在線上時,將啟動 Notepad。要查看 Notepad,我們還需要將 InteractWithDesktop 屬性設定為 1。
Set oProperties = oResource.PrivateProperties ' Set the properties of the Generic Application oProperties.Item("CommandLine") = "notepad" oProperties.Item("CurrentDirectory") = "c:\" oProperties.Item("InteractWithDesktop") = 1 oProperties.SaveChanges 使資源在線上
Online 方法使資源在線上。Online 是一種狀態,用於描述資源對群集可用。對於一般應用程式,使資源在線上就意味著啟動 Notepad。
oResource.Online 10
完整的腳本清單Option Explicit Main '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Main subroutine. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Sub Main Dim oGroup Dim oCluster Dim oResource ' Create the Cluster object. Set oCluster = CreateObject( "MSCluster.Cluster" ) ' Open the cluster. Empty string means open the local cluster. oCluster.Open( "" ) ' Create or open the group. AddGroup oCluster, oGroup ' Create or open the resource. AddResource oGroup, oResource ' Bring the resource online and wait for up to 10 seconds ' for it to come online. oResource.Online 10 End Sub ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' This subroutine will create or open the group. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Sub AddGroup( oCluster, oGroup ) Set oGroup = oCluster.ResourceGroups.CreateItem( "High Availability Notepad" ) End Sub ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' This subroutine will add the resource to the group. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Sub AddResource( oGroup, oResource ) Dim oGroupResources Dim oProperties Dim oCLProperty Dim oCDPropery Set oGroupResources = oGroup.Resources Set oResource = oGroupResources.CreateItem( "Notepad", "Generic Application", 0 ) 'CLUSTER_RESOURCE_DEFAULT_MONITOR Set oProperties = oResource.PrivateProperties ' Set the properties of the Generic Application oProperties.Item("CommandLine") = "notepad" oProperties.Item("CurrentDirectory") = "c:\" oProperties.Item("InteractWithDesktop") = 1 oProperties.SaveChanges End Sub ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' Wait for a specified number of time. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Sub Sleep( PauseTime ) Dim Start Start = Timer Do While Timer < Start + PauseTime Loop End Sub 通過運行這個簡單的腳本,將創建新的 “Notepad” 資源,並將其放入自身的組(“High Availability Notepad”)中。
驗證結果
我們可以使用群集管理器來驗證結果。通過查看“群集管理器”中 Notepad 資源的屬性,可以看到已經正確設定了參數。
查看 “Advanced”(高級)選項卡,您將看到默認屬性,指示發生故障時應用程式至多重新啟動 3 次。LooksAlive 和 IsAlive 輪詢間隔默認為資源類型中的值,但也可以通過指定其他值將其改寫。由於此應用程式沒有特殊代碼使其成為識別群集的應用程式,因此僅通過在系統中運行的進程存在與否確定它是否處於活動狀態。
測試應用程式
Notepad 資源在線上後將在伺服器上啟動。如果 Notepad 進程被終止,它將立即再次啟動。這是因為群集服務在發揮作用,試圖使應用程式保持打開和運行狀態。作為一般應用程式資源,無論什麼時候,只要應用程式進程不再運行,群集服務就能夠立即注意到,並根據策略採取糾正措施。
如果應用程式發生的故障不會導致進程終止(例如,網路故障、掛起或後台執行緒終止),結果會怎樣呢?遺憾的是,對於一般應用程式資源類型,您只能進行一般
故障檢測。大多數編寫在群集環境中運行的應用程式的開發人員都傾向於生成
自定義資源 DLL,來處理與應用程式有關的問題。要不是作為在群集中評估應用程式的快捷方法,一般應用程式資源類型不會得到套用。
結論
Microsoft 群集服務使用價格適宜的標準硬體提供高可用性,同時最大程度地利用計算資源。Windows Server 2003 系列中的群集服務提供了強大的工具,使您的應用程式具有較高的可用性。對於某些開發人員而言,編寫識別群集的應用程式可能要付出很大的代價,且難度較大。為了使開發人員能夠以較低的投入來使用
集群,群集服務提供了一般應用程式資源類型,允許在群集內對應用程式進行簡單配置。雖然一般應用程式資源類型可能不會提供生產型應用程式所需的複雜性,但它提供了一種測試方法,可以查看應用程式在群集內的執行情況。
骨髓間充質幹細胞
MSCs(mesenchyal stem cells):骨髓間充質幹細胞,骨髓原始間充質幹細胞是骨髓基質幹細胞,對骨髓中的造血幹細胞(HSC)不僅有機械支持作用,還能分泌多種生長因子(如IL-6,IL-11,LIF,M-CSF及SCF等)來支持造血。
骨髓幹細胞主要包括造血幹細胞和間充質幹細胞(mesenchymal stem cells,MSCs)兩大類型。近來Sato等 將人的骨髓細胞分為MSCs、CD34 細胞和非MSCs/CD34一細胞,分別移植至烯丙基乙醇致肝損傷的大鼠肝臟後發現,人骨髓MSCs是肝細胞的主要細胞來源,未發現細胞融合證據。骨髓MSCs因具有某些不可替代的優點,而受到越來越多的關註:(1)易於獲得,體外培養、傳代、擴增容易,並能夠持久保持分化能力;(2)無明顯免疫排斥反應;(3)無倫理學問題 。目前MSCs在很多領域,包括藥物性肝損害和腦膠質瘤的動物實驗模型中均顯示出了一定的治療效果 ,但MSCs能否套用於原發性肝癌的治療,目前缺乏相關研究。
目前常用的分離MSC的方法主要有全骨髓法和密度梯度離心法,全骨髓法即根據幹細胞在低血清培養基種有貼壁優勢特性,定期換液除去不貼壁細胞,從而達到純化及擴增MSC的目的。密度梯度離心法即根據骨髓中各細胞成分比重的不同,分離單核細胞進行貼壁培養。二者本質上無多大區別。隨著對MSC表面抗原認識的深入,又有人利用免疫方法如流式細胞儀法、免疫磁珠法等對其進行分離純化,但經過流式或磁珠分選後的細胞出現了增殖緩慢等一些問題,加之成本較高和技術的難度,在某種程度上限制了這些方法的廣泛套用。
開採沉陷預計系統
開採沉陷學是一個交叉學科,
計算機技術在其中發揮了重要作用。為了讓資料處理自動化,數據可視化,不少研究人員開發了開採沉陷預計系統。通過對比和測試發現本系統(Mining Subsidence Calculation System,簡稱MSCS,由
蔡來良博士開發)具有以下幾點優勢:
(1)採用最新的
軟體開發平台開發,系統兼容性好,經過測試,本軟體能支持目前所有的WINDOWS作業系統。
(2)軟體整合度高,功能集成度高,只需要使用本軟體即可完成數據運算,工程圖生成等功能,不需要藉助別的平台來後處理預計數據。
(3)軟體
運算速度高。結合目前的計算機
多核CPU硬體技術的發展,本軟體的預計計算採用了
並行算法,極大地利用了計算機資源,提高了計算速度。
(4)數據可視化程度高。本系統結合開採沉陷預計理論和等高線的自動生成原理,以及計算機圖形學技術,集成了地表變形等值線的自動生成功能。本系統輸出的等值線格式支持目前所有版本的CAD軟體和GIS軟體,極大地方便了預計結果在多個學科中的運用,並且預計和出圖一體化,使用方便。同時考慮到面積統計的工作量較大,利用地籍測量學中的解析法求面積原理,逐一自動統計出不同變形指標下的土地破壞面積,提高了統計分析工作效率。本系統還開發了下沉盆地的三維可視化功能,界面友好,數據可分析程度高。
(5)集成了土地破壞分區功能,目前國內的其他軟體的土地剖壞分區都是在預計結果的基礎上,結合CAD軟體手動分區。本系統結合地表變形場的基本規律,開發了自動分區功能,為用戶節約了大量時間,並提高了分析精度。
(6)數據兼容性好,本軟體能處理任意多變形(凸多邊形,凹多邊形)的開採區域的地表變形預計,任意煤層傾角影響下的開採沉陷預計,以及山區地表移動預計,功能強大,適用範圍廣。
結合作者多年來對開採沉陷預計的研究和國內外預計技術的發展,本軟體必將繼續完善,更好地為礦區服務。
移動交換中心伺服器
背景
在移動通信技術已經廣泛地滲入人們日常生活的今天,我們想要打通一個電話再普通不過。您只需要一張插入了SIM(Subscriber Identity Module,用戶識別模組)卡的手機,開機後輸入需要撥打的電話號碼,一段短暫的時間過後,被叫用戶選擇接通,整個呼叫就雙向暢通了。可是我們可曾想過,在這個呼叫被神奇般接通的全過程里,到底有哪些網路設備協同工作,它們又是怎樣相互傳遞信息,使得移動通話如此便捷,而且費用又很低廉呢?
圖1是一個WCDMA(Wideband Code Division Multiple Access,寬頻碼分多址)系統R4階段的網路體系結構圖。
首先,請不要被網路中如此眾多的實體和接口嚇倒,初看上去,這個體系結構圖真的非常複雜,當然移動通信網的原理本來也不像切塊蛋糕那樣容易。不過如果你能夠一步步的弄明白每個網路實體的功能,網元間的連線和協作關係,實體間的協定類型和訊息互動的順序,那么弄懂一個呼叫的過程其實也不是很難。
功能
下面進入正題,在一個呼叫過程中,最為重要且控制這個呼叫是否能夠成功接續的網路實體,稱為MSCS,含義為MSC Server,英文全稱Mobile Switching Center Server,中文為移動交換中心伺服器。
當移動網用戶發起一個呼叫請求時,2G/3G用戶分別通過BSC(Base Station Controller,基站控制器)或RNC(Radio Network Controller,無線網路控制器),向其所連線的MSCS發起業務請求,而MSCS的作用則是提供它所控制區域範圍內所有終端用戶的各項CS域業務功能,包括移動性管理功能、基本呼叫功能、SMS業務功能、切換功能、呼叫路由功能等。
具體來說,各個業務的大致描述為:
行動網路與傳統電話網路最大的不同之處在於用戶的移動性。一個移動網用戶,可能早上還在北京,中午就達到了上海,那么網路是如何知道一個用戶當前具體的位置信息呢?移動性管理即提供了手機與網路之間上報位置信息的功能,即每隔一段時間,網路會要求手機報告其所在的位置信息,MSCS會將其記錄下來,如果一個用戶移動到某個MSCS控制範圍之外的區域,它還會跟相鄰的MSCS進行信息互動,類似一個用戶交接的過程,最終由用戶實際位置所在的MSCS為其提供各項網路服務。
即簡訊功能,它允許用戶傳送一段文字信息給另一個移動網用戶,MSCS需要負責為用戶尋找適當的路由並將訊息轉發出去。通常一條簡訊限定70個漢字,為什麼會有這種限制呢?原來跟網路中特定協定規定的每個數據包的長度有關。
通信網路中每個MSCS服務的範圍是它管理的所有基站覆蓋的區域,當用戶位於一個MSCS服務的邊緣時,無線信號會比較弱,而來自相鄰MSCS覆蓋區域的信號會比較強,較典型的場景為用戶坐在一輛高速行駛的列車上時,就會出現從一個MSCS服務的區域不斷切換到其他MSCS覆蓋區域的過程,因為有切換過程,才使得用戶在通話過程中,移動出一個MSCS控制範圍時不會通話中斷。