一、 IceGrid功能
1. 定位服務(wù)(Location service )
作為一個ICE定位服務(wù),IceGrid的實施使客戶能夠間接地綁定到他們的服務(wù)器,提高應(yīng)用程序的靈活性和適應(yīng)不斷變化的需求。
2. 按需激活(On-demand server activation )
分布式部署的節(jié)點服務(wù)器,不需要立即啟動,在客戶端向服務(wù)器發(fā)送一個服務(wù)請求時,icegrid檢查到該服務(wù)所在的服務(wù)器存在但是沒有激活,則icegrid會激活這個服務(wù)器,這一過程對于客戶端來說是透明的。
3. 應(yīng)用程序部署(Application distribution )
IceGrid提供了一種很方便的方式來部署應(yīng)用到一組計算機中,不在需要一個文件共享系統(tǒng)或者是復(fù)雜的部署腳本,簡單的使用IcePath2的配置服務(wù),就能夠保持必要的程序和文件的同步。
4. 復(fù)制和負(fù)載均衡(Replication and load balancing )
IceGrid的支持復(fù)制功能,將幾臺服務(wù)器中的是對象適配器復(fù)制成一個單一的虛擬對象適配器。在客戶端和服務(wù)器間接綁定期間,客戶端能夠連接到任意一個對象適配器的端點,而且,IceGrid監(jiān)聽每一臺服務(wù)器的負(fù)載情況,當(dāng)客戶端請求服務(wù)時,IceGrid使用這些監(jiān)聽信息來決定分配哪個端點來處理客戶端的請求。
5. 會話和資源分配(Sessions and resource allocation )
客戶端可以建立一個會話(session)來獨占某個對象或者代理甚至服務(wù)器。IceGrid會阻止其他的客戶端使用這個分配的資源,直到客戶端釋放它或者session過期。IceGrid的session服務(wù)增強了安全性,通過使用集成了一個Glacier2路由器的認(rèn)證機制。
6. 自動容錯(Automatic failover )
ice支持在任何一個包含多個端點的代理中自動重試和容錯功能。當(dāng)結(jié)合IceGrid的復(fù)制和負(fù)載均衡的支持時,自動故障轉(zhuǎn)移意味著客戶端發(fā)送一個請求,服務(wù)器處理請求失敗時,IceGrid會選擇一個最低負(fù)載的端點重新處理請求。
7. 動態(tài)查詢(Dynamic queries )
在客戶端通過查找的方式,查找出所有的代理端口信息,并由客戶端決定使用哪個代理。
8. 狀態(tài)監(jiān)測(Status monitoring )
IceGrid提供Slice接口,允許應(yīng)用程序監(jiān)控其各項活動和收到有關(guān)重大事項的通知,可以使用監(jiān)控接口來整合現(xiàn)有的監(jiān)控系統(tǒng)。
9. 管理(Administration )
IceGrid包括命令行和圖形化的管理工具。它們支持所有的平臺,并允許啟動,停止,監(jiān)控,和重新配置任何服務(wù)器。
10. 部署(Deployment )
使用XML文件,通過描述符部署服務(wù)器到每臺計算機,使用模板描述符可以簡化相同服務(wù)器的部署。
11. 數(shù)據(jù)庫獨立(Database Independence)
默認(rèn)情況下,IceGrid的使用Freeze數(shù)據(jù)庫以保存其狀態(tài)。然而,您可以配置IceGrid使用不同的數(shù)據(jù)庫,如MySQL。
二、 IceGrid架構(gòu)
一個 IceGrid域由一個注冊表(Registry)和任何數(shù)目的節(jié)點(Node)構(gòu)成。注冊表和節(jié)點一起合作管理一些信息以及包含一些應(yīng)用(Application)的服務(wù)進程。每個應(yīng)用程序分配到特定節(jié)點的服務(wù)器。這個注冊表維護了這些信息,注冊表中的信息記錄被持久化到數(shù)據(jù)庫中,而節(jié)點負(fù)責(zé)啟動和監(jiān)測其指定的服務(wù)器進程。
對于一個典型的配置,一個節(jié)點運行在一臺計算機(稱之為Ice服務(wù)器主機)。注冊表并不消耗很多處理器時間,所以它常常是和一個節(jié)點運行在同一臺計算機上的,事實上,注冊表和一個節(jié)點可以運行在同一進程中。
如果要想容錯機制達到理想的狀態(tài),注冊表也支持復(fù)制(Replication)功能使用主從式的設(shè)計。
下圖顯示一個很簡單的IceGrid應(yīng)用,它運行在一個有三臺計算機的網(wǎng)絡(luò)上。該IceGrid Registry 是PC1主機中唯一的一個進程中,而IceGrid Node運行在PC2和PC3主機上。此示例中,一個服務(wù)已經(jīng)被分配給每個節(jié)點,客戶端安裝在一臺獨立的PC4上。

從客戶端應(yīng)用程序的角度來看,注冊表的主要責(zé)任,是解決作為Ice定位服務(wù)的間接代理問題。因此,這方面的作用是非常明顯的:當(dāng)客戶端第一次嘗試使用一種間接代理,客戶端的Ice run time連接注冊表,并且將代理的符號信息轉(zhuǎn)化為端點,使用這個端點允許客戶端建立一個連接。
盡管注冊還提供了一些其他的功能,不僅僅是一個簡單的查詢表,一個定位請求可能提示一個節(jié)點自動啟動目標(biāo)服務(wù),或注冊表可能會根據(jù)每臺電腦的負(fù)荷統(tǒng)計選擇適當(dāng)?shù)亩它c。
間接代理的好處:位置服務(wù)可以提供很大的功能,而客戶端不需要任何額外的特定的操作,這點和直接代理不同,客戶端并不需要更多的服務(wù)器的地址和端口信息。只是間接代理在客戶的第一次使用代理時增加了一些延遲,不過,以后所有的相互作用直接發(fā)生在客戶端和服務(wù)器之間,所以成本是微不足道的。此外,間接代理的方式允許已經(jīng)部署的服務(wù)器遷移到不同的計算機上,而不需要更新客戶端所持有的代理。
參考《Distributed Programming with Ice》,IceGrid學(xué)習(xí)筆記(待續(xù)),無處不在 第39章IceGrid 第3節(jié)IceGrid構(gòu)架(翻譯)