IceGrid應用配置手冊


本文轉載於:http://blog.csdn.net/educast/article/details/9414789

目錄

1.  概述... 1

1.1 配置目標... 1

1.2 實驗環境... 1

1.3 局限... 1

2.  配置過程... 1

2.1  服務器端配置... 2

2.1.1  主注冊服務配置... 3

2.1.2  從注冊服務配置... 7

2.1.3  應用部署配置... 12

2.1.4  節點配置... 15

2.2     客戶端配置... 17

3. 結果驗證... 17

3.1  程序方式... 17

3.2  工具方式... 18

1. 高級應用配置... 18

4.1  集成IceBox. 18

4.1.1  IceBox服務程序編寫... 18

4.1.2  IceGrid集成IceBox服務... 20

4.1.3  測試驗證... 26

 

 

1.  概述

1.1 配置目標

本文檔是描述Ice中間件中的IceGrid服務的應用配置,通過使用IceGrid服務來實現:

1.  服務器端服務分布式部署。

2.  服務器端服務按需激活。

3.  服務器端服務多節點負載均衡。

4.  注冊服務主/從熱備(Master/Slaves)

5.  集成IceBox服務

1.2 實驗環境

1.  硬件:hp服務器,3台

2.  操作環境:Red Hat 5

3.  服務器程序:ServerApp.jar

4.  說明:實際應用中,服務器節點可任意擴充、操作系統可被更換、服務器程序可用實際項目的服務程序替換,本文檔所描述的配置方式具有通用性,適用但不局限於當前實驗環境。

1.3 局限

本文檔不詳細描述IceGrid服務的運行機制和實現原理,不詳細介紹服務器端和客戶端程序的實現,主要描述IceGrid服務應用的配置步驟、主要配置項及驗證配置結果等。

2.  配置過程

2.1  服務器端配置

配置步驟:

1.  創建主注冊服務(Master)的配置文件config_master.grid,文件名稱可以任意

2.  創建從注冊服務(Slave)的配置文件 config_slave.grid, 文件名稱可以任意

3.  創建各節點服務的配置文件config.node,文件名稱可以任意

4.  創建分布式應用配置文件app.xml,文件名稱可以任意,但格式最好定義成xml

5.  運行Ice提供的工具,啟動我們的分布式應用,主要有如下兩個工具:icegridnode和icegridadmin。詳細啟動過程如下:

1) icegridnode--Ice.Config=config_master.grid  啟動主注冊服務

2) icegridnode--Ice.Config=config_slave.grid  啟動從注冊服務

3) icegridadmin--Ice.Config= config_master.grid -e "application add app.xml"   部署分布式服務

icegridadmin --Ice.Config= config_master.grid-e "application update app.xml"  重新部署分布式服務

4) icegridnode--Ice.Config=config.node  將各節點注冊到注冊服務的注冊表中

配置文件清單:

假設有n個節點(n > 0), 其中從注冊服務有x個,(x > 0)

   config_master.grid   ---------- 主注冊服務配置文件 ---------  1份

   config_slave.grid   ----------- 從注冊服務配置文件 ---------  x份

   config.node  ----------------- 節點配置文件  --------------  n份

   app.xml ---------------------- 部署配置文件  --------------  1份

通常情況下,由於注冊服務占用資源很少,所以一般都會和一個節點集成在一起,並且可以和節點服務在一個進程中運行。因此,如果假設服務部署到n個服務器,通常情況下配置文件清單如下:

config_master.grid-- 主注冊服務配置文件 -- 1份  -- 主注冊服務信息+節點信息

config_slave.grid--- 從注冊服務配置文件 -- x份  -- 從注冊服務信息+節點信息

config.node--------- 節點配置文件 ---- n-1-x份  -- 節點信息

app.xml------------- 部署配置文件 -------- 1份  -- 部署信息

其中app.xml要和config_master.grid放在一台服務器上,下面的各章節將詳細介紹各配置文件。

2.1.1  主注冊服務配置

config_master.grid的內容:

#

# The IceGrid InstanceName

#

IceGrid.InstanceName=IceGridRDDataSource    # 1

 

#

# The IceGridlocator proxy.

#

Ice.Default.Locator=IceGridRDDataSource/Locator:default-h 10.0.5.201 -p 12000:default -h 10.0.5.202-p 12000         #2

 

#

# IceGridregistry configuration.

#

IceGrid.Registry.Client.Endpoints=default-p 12000   #3

IceGrid.Registry.Server.Endpoints=default    #4

IceGrid.Registry.Internal.Endpoints=default   #5

IceGrid.Registry.Data=master      #6

IceGrid.Registry.PermissionsVerifier=IceGridRDDataSource/NullPermissionsVerifier     #7

IceGrid.Registry.AdminPermissionsVerifier=IceGridRDDataSource/NullPermissionsVerifier#8

IceGrid.Registry.SSLPermissionsVerifier=IceGridRDDataSource/NullSSLPermissionsVerifier#9

IceGrid.Registry.AdminSSLPermissionsVerifier=IceGridRDDataSource/NullSSLPermissionsVerifier    #10

 

#

# IceGrid SQLconfiguration if using SQL database.

#

#Ice.Plugin.DB=IceGridSqlDB:createSqlDB     #11

#IceGrid.SQL.DatabaseType=QSQLITE      #12

#IceGrid.SQL.DatabaseName=register/Registry.db       #13

#

 

#

#Ice Error andStandard output Set

#

#Ice.StdErr=master/stderr.txt                  #14

#Ice.StdOut= master/stdout.txt    #15

 

#

#Trace Registryproperties

#

Ice.ProgramName=Master     #16

IceGrid.Registry.Trace.Node=3        #17

IceGrid.Registry.Trace.Replica=3    #18

 

#

# IceGrid nodeconfiguration.

#

IceGrid.Node.Name=node_1                              #19      

IceGrid.Node.Endpoints=default                         #20

IceGrid.Node.Data=node_1               #21

IceGrid.Node.CollocateRegistry=1                      #22

#IceGrid.Node.Output=node_1            #23

#IceGrid.Node.RedirectErrToOut=1         #24

 

# Traceproperties.

#

IceGrid.Node.Trace.Activator=1             #25

#IceGrid.Node.Trace.Adapter=2             #26

#IceGrid.Node.Trace.Server=3              #27

 

#

# Dummy usernameand password for icegridadmin.

#

IceGridAdmin.Username=mygrid           #28

IceGridAdmin.Password=mygrid            #29

配置項說明:

   #1 為這個應用實例指定一個唯一的標識

   # 2  注冊服務的端點信息(主注冊服務和所有的從注冊服務),節點注冊時要用到

   # 3  客戶端訪問注冊服務器的端點信息

   # 4  服務訪問注冊服務器的端點信息,通常是default

   # 5  內部訪問端點信息,通常是default,節點用這個端口和注冊服務通信

   # 6  注冊服務的數據目錄的路徑

   # 7  設定防火牆安全代理,從而控制客戶端訪問注冊表時可用的權限

   # 8  設定防火牆安全代理,從而控制注冊表管理者可用的權限

   # 9  設定SSL安全代理,從而設定客戶端訪問注冊表時的SSL安全訪問機制

   # 10  設定SSL安全代理,從而設定注冊表管理者的SSL安全訪問機制

   # 11  指定Ice對象序列化的機制,如果不設置,默認用Freeze機制

   # 12  指定使用數據庫的類型

   #13  指定使用數據庫的名稱

   #14  指定標准錯誤輸出文件

   #15  指定標准輸出文件

   #16  指定主注冊服務的名稱

   #17  指定主注冊服務跟蹤節點信息的級別(0~3),默認為0

   #18  指定主/從熱備注冊服務的跟蹤級別(0~3),默認為0

   # 19  定義節點的名稱,必須唯一

   # 20 節點被訪問的端口信息,注冊服務使用這個端點和節點通信,通常設為default

   # 21  節點的數據目錄的路徑

   # 22  定義節點是否和注冊服務並置在一起,設為1時並置,設為0時不並置

   # 23  節點標准輸出信息重定向蹈的目錄路徑,會自動生成輸出文件

   # 24  節點上的服務程序的標准錯誤重定向到標准輸出

   # 25  激活器跟蹤級別,通常有0,1,2,3級,默認是0

   # 26  對象適配器跟蹤級別,通常有0,1,2,3級,默認是0

   # 27  服務跟蹤級別,通常有0,1,2,3級,默認是0

   # 28  IceGrid管理器登錄該應用的用戶名

   # 29  IceGrid管理器登錄該應用的密碼

   未涉及的屬性還有一些,如果需要請參考官方文檔。

2.1.2  從注冊服務配置

config_slave.grid的內容:

 

#

# The IceGridlocator proxy.

#

Ice.Default.Locator=IceGridRDDataSource/Locator:default-h 10.0.2.241 -p 12000:default -h 10.0.2.242-p 12000         #1

 

#

# IceGridregistry configuration.

#

IceGrid.Registry.Client.Endpoints=default-p 12000   #2

IceGrid.Registry.Server.Endpoints=default    #3

IceGrid.Registry.Internal.Endpoints=default   #4

IceGrid.Registry.Data=slave_1        #5

IceGrid.Registry.ReplicaName=slave_1   #6

IceGrid.Registry.PermissionsVerifier=IceGridRDDataSource/NullPermissionsVerifier     #7

IceGrid.Registry.AdminPermissionsVerifier=IceGridRDDataSource/NullPermissionsVerifier#8

IceGrid.Registry.SSLPermissionsVerifier=IceGridRDDataSource/NullSSLPermissionsVerifier#9

IceGrid.Registry.AdminSSLPermissionsVerifier=IceGridRDDataSource/NullSSLPermissionsVerifier    #10

 

#

# IceGrid SQLconfiguration if using SQL database.

#

#Ice.Plugin.DB=IceGridSqlDB:createSqlDB     #11

#IceGrid.SQL.DatabaseType=QSQLITE      #12

#IceGrid.SQL.DatabaseName=register/Registry.db       #13

#

 

#

#Ice Error andStandard output Set

#

#Ice.StdErr=slave_1/stderr.txt                 #14

#Ice.StdOut=slave_1/stdout.txt     #15

 

#

#Trace Registryproperties

#

Ice.ProgramName=Slave_1     #16

IceGrid.Registry.Trace.Node=3        #17

IceGrid.Registry.Trace.Replica=3    #18

 

#

# IceGrid nodeconfiguration.

#

IceGrid.Node.Name=node_2                              #19      

IceGrid.Node.Endpoints=default                         #20

IceGrid.Node.Data=node_2               #21

IceGrid.Node.CollocateRegistry=1                      #22

#IceGrid.Node.Output=node_2            #23

#IceGrid.Node.RedirectErrToOut=1         #24

 

# Traceproperties.

#

IceGrid.Node.Trace.Activator=1             #25

#IceGrid.Node.Trace.Adapter=2             #26

#IceGrid.Node.Trace.Server=3              #27

 

#

# Dummy usernameand password for icegridadmin.

#

IceGridAdmin.Username=mygrid           #28

IceGridAdmin.Password=mygrid            #29

配置項說明:

其實這個文件和主注冊配置文件基本一樣,差別只有一點:

1.       沒有指定應用實例名,因為在主注冊服務中已經有了定義

2.       多了第6行,IceGrid.Registry.ReplicaName=slave_1,指定從注冊服務的名稱

其它的基本就沒有差別了,大部分屬性項在config_master.grid里面都有定義,為了方便閱讀,下面也將用到的各項給出說明:

   # 1  注冊服務的端點信息(主注冊服務和所有的從注冊服務),節點注冊時要用到

   # 2  客戶端訪問注冊服務器的端點信息

   # 3  服務訪問注冊服務器的端點信息,通常是default

   #4  內部訪問端點信息,通常是default,節點用這個端口和注冊服務通信

   # 5  注冊服務的數據目錄的路徑

   # 6  指定從注冊服務的名稱

   # 7  設定防火牆安全代理,從而控制客戶端訪問注冊表時可用的權限

   #8  設定防火牆安全代理,從而控制注冊表管理者可用的權限

   # 9  設定SSL安全代理,從而設定客戶端訪問注冊表時的SSL安全訪問機制

   #10  設定SSL安全代理,從而設定注冊表管理者的SSL安全訪問機制

   # 11  指定Ice對象序列化的機制,如果不設置,默認用Freeze機制

   # 12  指定使用數據庫的類型

   #13  指定使用數據庫的名稱

   #14  指定標准錯誤輸出文件

   #15  指定標准輸出文件

   #16  指定從注冊服務運行時程序名稱

   #17  指定從注冊服務跟蹤節點信息的級別(0~3),默認為0

   #18  指定主/從熱備注冊服務的跟蹤級別(0~3),默認為0

   # 19  定義節點的名稱,必須唯一

   # 20  節點被訪問的端口信息,注冊服務使用這個端點和節點通信,通常設為default

   # 21  節點的數據目錄的路徑

   # 22  定義節點是否和注冊服務並置在一起,設為1時並置,設為0時不並置

   # 23  節點標准輸出信息重定向蹈的目錄路徑,會自動生成輸出文件

   # 24  節點上的服務程序的標准錯誤重定向到標准輸出

   # 25  激活器跟蹤級別,通常有0,1,2,3級,默認是0

   # 26  對象適配器跟蹤級別,通常有0,1,2,3級,默認是0

   # 27  服務跟蹤級別,通常有0,1,2,3級,默認是0

   # 28  IceGrid管理器登錄該應用的用戶名

   # 29  IceGrid管理器登錄該應用的密碼

2.1.3  應用部署配置

app.xml配置文件內容:

1<icegrid>

2  <application name="RTDSSystem">

3    <server-template id="RTDSSystemServer">

4      <parameter name="index"/>

5      <server id="RTDSSystemServer-${index}"exe="java"                                          activation="on-demand">

6        <adapter name="RTDataSysytem" endpoints="tcp"                                          replica-group="ReplicatedRTDataSysytemAdp"/>

7        <option>-jar</option>

8        <option>ServerApp.jar</option>

9      </server>

10    </server-template>

11

12    <replica-group id="ReplicatedRTDataSysytemAdp">

13      <load-balancing type="round-robin"/>

14      <object identity="RTDataSource"                                                      type="::RTDataSystem::RTDataSource"/>

15    </replica-group>

16

17    <node name="node_1">

18      <server-instance template="RTDSSystemServer" index="1"/>

19      <server-instance template="RTDSSystemServer" index="11"/>

20      <server-instance template="RTDSSystemServer" index="111"/>

21    </node>

22    <node name="node_2">

23      <server-instance template="RTDSSystemServer" index="2"/>

24      <!--server-instancetemplate="RTDSSystemServer" index="22"/-->

25      <!--server-instancetemplate="RTDSSystemServer" index="222"/-->

26    </node>

27    <node name="node_3">

28      <server-instance template="RTDSSystemServer" index="3"/>

29      <!--server-instancetemplate="RTDSSystemServer" index="33"/-->

30      <!--server-instancetemplate="RTDSSystemServer" index="333"/-->

31    </node>

32  </application>

33</icegrid>

 

配置文件結構分析:

IceGrid里,部署是一個在注冊服務中表述一個應用(Application)的過程,而部署配置文件就是來描述這些配置信息的文件,這個配置文件是用xml標記性語言來描述的。通常一個部署應該包含如下信息:

1.  應用標簽(application),name屬性定義這個應用的名字

2.  服務(server), 一個邏輯上的服務器,能夠通過exe命令而啟動的一個服務程序。activation屬性,是設置服務的啟動方式,on-demand是最常用的方式,另外還有always等啟動方式;option標簽是exe執行命令命令行的參數;

3.  適配器(adpter),定義服務器端的適配器。

name屬性唯一標志這個適配器;

endpoints屬性指定端點信息;

replica-group屬性標示該適配器是個可復制組集群,並指定這個可復制組的名稱;

register-process屬性定義了是否這個節點是否可以被icegrid關閉;

4.  節點(node),它應該代表了一個物理上的節點。

name屬性指定節點的名字,並且是唯一的。

5.  可復制組(replica-group),一組對象適配器的集合。

id屬性唯一標識一個可復制組;

load-balancing子項中type屬性指定負載均衡策略,icegrid提供了四種負載均衡策略: Random (隨機方式)

       Adaptive(適配方式)

       Round Robin(最近最少使用)

       Ordered(順序方式)

object子項定義適配器綁定的服務對象信息。其中identity屬性指定對象的標識,type屬性指定了對象的層次結構類型。這兩個屬性都可以唯一的標識一個服務對象。

6.  服務模板(server-temple),服務模板是對服務的一個抽象,避免了重復定義。這樣,在節點中描述服務時只需要實例化它的服務模板就可以了。

id屬性唯一標識一個服務模板;

parameter子項定義服務模板的參數,可包含多個,主要實例化服務時用;

server子項就是上面2中的服務定義;

另外還有一些特殊的服務模板,比如:icebox服務模板,它的定義和通用的服務模板的定義不太一樣。

 

解析app.xml文件:

通過對配置文件結構的分析,來解析一下app.xml。

第1行,標識這是一個icegrid的配置文件;

第2行,標識應用的名稱為RTDSSystem,這個名稱是唯一的;

第3~10行,定義了一個服務模板RTDSSystemServer,並有一個參數index;

          其中5~9定義了這個模板包含的服務定義,第6行是這個服務包含的對象適配器

          的定義;

第12~15行,是對可復制組的定義,包括服務對象的定義和負載均衡策略;

第17~21行,是對節點node_1的定義,指定了節點的名稱,包含的服務(3個服務);

第22~26行,是對節點node_2的定義

第27~31行,是對節點node_3的定義

最后兩行是閉合標簽,至此一個icegrid的分布式部署配置文件就完成了。

 

部署配置文件的擴展:

app.xml中對服務模板、適配器、服務對象等的配置都是一個,事實上這些可以在文件中定義多個,比如可以有多個服務模板,一個服務里可以有多個適配器,可以有多個可復制組,一個節點里可以有多個不同類型的服務等。

另外,app.xml可以包含其它的xml。

2.1.4  節點配置

config.grid文件的內容:

#

# The IceGridlocator proxy.

#

Ice.Default.Locator=IceGridRDDataSource/Locator:default-h 10.0.2.241 -p 12000:default -h 10.0.2.242-p 12000         #1

 

#

# IceGrid nodeconfiguration.

#

IceGrid.Node.Name=node_2                  #2

IceGrid.Node.Endpoints=default              #3

IceGrid.Node.Data=node_2                       #4

IceGrid.Node.Output=node_2             #5

IceGrid.Node.RedirectErrToOut=1           #6

 

# Trace properties.

#

IceGrid.Node.Trace.Activator=1             #7

#IceGrid.Node.Trace.Adapter=2             #8

#IceGrid.Node.Trace.Server=3              #9

配置項說明:

事實上,這個文件里面的配置項,在config_slave.grid中都有描述,但這里也列出來,方便閱讀。

#1   注冊服務的端點信息(主注冊服務和所有的從注冊服務),節點注冊時要用到

#2   定義節點的名稱,必須唯一

#3   節點被訪問的端口信息,注冊服務使用這個端點和節點通信,通常設為default

#4   節點的數據目錄的路徑

#5   節點標准輸出信息重定向的目錄路徑,會自動生成輸出文件

#6 節點上的服務程序的標准錯誤重定向到標准輸出

#7   激活器跟蹤級別,通常有0,1,2,3級,默認是0

#8   對象適配器跟蹤級別,通常有0,1,2,3級,默認是0

#9   服務跟蹤級別,通常有0,1,2,3級,默認是0

2.2     客戶端配置

客戶端的配置很簡單,和分布式相關的配置就一項,添加如下:

#

# The IceGridlocator proxy.

#

Ice.Default.Locator=IceGridRDDataSource/Locator:default-h 10.0.2.241 -p 12000:default -h 10.0.2.242-p 12000 #注冊服務的端點信息(主注冊服務和所有的從注冊服務),用於定位

3. 結果驗證

3.1  程序方式

1. 啟動服務器

1) icegridnode--Ice.Config=config_master.grid  啟動主注冊服務和節點1

2) icegridnode--Ice.Config=config_slave.grid   啟動從注冊服務和節點2

3) icegridadmin--Ice.Config=config_master.grid -e "application add app.xml"   部署分布式服務

4) icegridnode--Ice.Config=config.node 啟動節點3

2. 啟動客戶端,進行多次遠程調用,根據執行情況就可以判斷服務器端是否配置成功。

3.2  工具方式

用Ice官方提供的可視化管理工具IceGridGUI.jar來驗證和管理icegrid的部署。

打開dos窗口,在命令行下進入C:\Program Files\ZeroC\Ice-3.4.1\bin目錄下,然后運行“java –jar IceGridGUI.jar”,彈出IceGrid Admin的主界面

 

1. 高級應用配置

4.1  集成IceBox

在文檔《IceBox開發和配置》(當前是1.0版)中,介紹了一個IceBox服務程序的開發方法和單獨應用中配置和管理的過程。在實際的應用中,IceBox服務通常集成到IceGrid中,並通過IceGrid進行激活和部署。

本章節中IceBox服務是集成在IceGrid中,並通過IceGrid進行部署,所以IceBox服務的配置信息不再同《IceBox開發和配 置》中一樣在config.icebox中描述,而是直接配置在部署文件app.xml中。那也就是說,IceGrid集成IceBox服務,只需要在 app.xml文件中添加Icebox服務相關的配置信息就可以了。事實上,有關Ice所有的配置信息(除IceGrid自身的配置信息),都可以添加到 app.xml中,並通過icegrid部署后生效。

下面各節詳細描述IceBox服務的集成過程。

4.1.1  IceBox服務程序編寫

請參考文檔《IceBox開發和配置》,這里不再詳述。由於IceBox服務相關的配置信息都放在了app.xml中,並且服務是通過IceGrid按需激活的,因此這里程序代碼略有調整。下面列出IceBox服務的實現代碼:

文件名:ServerService.java

import main.java.DataSource;

import IceBox.Service;

 

public class ServerService implements IceBox.Service {

    /**

    * @param name 配置文件中的service名稱

    * @param communicator對象,由IceBox.ServiceManager負責創建和銷毀。

    *          可能同時被其他服務共享使用(由配置文件決定),object Adapter的名

    *          稱必須是唯一的;

    * @param args  配置文件中的參數列表

    * @Override

     **/

    public void start(String name,Ice.Communicator communicator,

                      String[] args){

       //創建objectAdapter,名稱有配置文件決定

       Adapter =communicator.createObjectAdapter(

                            "RTDataSystem-"+name);

      

       //創建servant

       StringRTDataSourceIdentity = communicator.getProperties().

                                  getProperty("RTDataSource.Identity");

       DataSourceobjDataSrc = new DataSource("dataSource");

        Adapter.add(objDataSrc,

           communicator.stringToIdentity(RTDataSourceIdentity));

      

        Adapter.activate();

    }

 

    /**

     *

    * @param args

    * @Override

     *

    **/

    public void stop()

    {

       Adapter.destroy();

    }

   

    private Ice.ObjectAdapter Adapter;

}

4.1.2  IceGrid集成IceBox服務

IceGrid集成IceBox只和部署文件(app.xml) 有關,IceBox服務(service)的粒度和普通的server是一樣的,因此IceBoxservice的部署和普通的server非常類似,它 同樣有模板、服務(service)和實例化的概念,可以將IceBox service理解為一個特殊的server。

為了能更清楚的描述這個集成配置的過程,在IceGrid配置的基礎上,添加IceBox服務。具體目標如下:

1.      集成ServerService服務(service),並且ServerService服務(service)使用的服務對象和之前server的服務對象使用同一個(type--::RTDataSystem::RTDataSource)

2.      在節點1(node_1)上添加IceBox服務功能(IceBox-Node1),這個IceBox服務包含了5個 ServerService服務;同樣的在節點2(node_2)上也添加一個IceBox服務功能(IceBox-Node2),也包含了5個 ServerService服務

3.      這些IceBox服務中分布的多個服務(service)和之前已經存在的服務(server)一起通過IceGrid實現負載均衡

為了實現上述的功能,需要添加IceBox服務的相關配置,首先看一下此時app.xml的變化,變化和添加部分用淺灰陰影標出。

app.xml

<?xml version="1.0"encoding="UTF-8" ?>

<icegrid>

  <applicationname="RTDSSystem">

    <server-templateid="RTDSSystemServer">

      <parameter name="index"/>

      <server id="RTDSSystemServer-${index}" exe="java"activation="on-demand">

        <adapter name="RTDataSysytem"endpoints="tcp"

                                     replica-group="RTDataSystemGroup"/>

        <option>-jar</option>

        <option>ServerApp.jar</option>

    </server>

    </server-template>

 

<!— begin服務模板定義-->

1   <service-templateid="RTDSystemService">

2       <parameter name="name"/>

3       <service name="${name}" entry="ServerService">

4           <description>A simple service named after ${name}</description>

5           <properties>

6             <property name="RTDataSource.Identity" value="RTDataSource"/>

7           </properties>

8           <adapter name="RTDataSystem-${name}" endpoints="tcp"

                                               id="RTDataSystem-${name}" replica-group="RTDataSystemGroup"

                                               server-lifetime="false"/>

11      </service>

12  </service-template>

<!-- end服務模板定義-->

   

    <replica-groupid="RTDataSystemGroup">

      <load-balancingtype="round-robin"/>

      <!--load-balancingtype="ordered" /-->

      <!--load-balancingtype="adaptive" /-->

      <!--load-balancingtype="random" n-replicas="0"/-->

      <object identity="RTDataSource" type="::RTDataSystem::RTDataSource"/>

    </replica-group>

 

   

    <node name="node_1">

      <server-instancetemplate="RTDSSystemServer" index="1"/>

      <server-instancetemplate="RTDSSystemServer" index="11"/>

      <server-instancetemplate="RTDSSystemServer" index="111"/>

<!— begin IceBox服務配置 IceBox-Node1-->

1     <icebox id="IceBox-Node1" activation="on-demand"exe="java">

2        <description>Asample IceBox server IceBox-Node1</description>

3        <option>IceBox.Server</option>

4        <properties>

5           <property name="IceBox.InstanceName" value="${server}"/>

6           <property name="Ice.Admin.Endpoints" value="tcp -h 10.0.2.241"/>

7           <property name="IceBox.Trace.ServiceObserver" value="1"/>

8        </properties>

9        <service-instance template="RTDSystemService" name="one"/>

10       <service-instancetemplate="RTDSystemService" name="two"/>

11       <service-instancetemplate="RTDSystemService" name="three"/>

12       <service-instancetemplate="RTDSystemService" name="four"/>

13       <service-instancetemplate="RTDSystemService" name="five"/>

14     </icebox>

<!— end IceBox服務配置 IceBox-Node1-->

    </node>

    <node name="node_2">

      <server-instancetemplate="RTDSSystemServer" index="2"/>

      <server-instancetemplate="RTDSSystemServer" index="22"/>

      <server-instancetemplate="RTDSSystemServer" index="222"/>

<!— begin IceBox服務配置 IceBox-Node2-->

1     <icebox id="IceBox-Node2" activation="on-demand"exe="java">

2        <description>Asample IceBox server IceBox-Node2</description>

3        <option>IceBox.Server</option>

4        <properties>

5           <property name="IceBox.InstanceName" value="${server}"/>

6           <property name="Ice.Admin.Endpoints" value="tcp -h 10.0.2.242"/>

7           <property name="IceBox.Trace.ServiceObserver" value="1"/>

8        </properties>

9        <service-instancetemplate="RTDSystemService" name="2-one"/>

10       <service-instancetemplate="RTDSystemService" name="2-two"/>

11       <service-instancetemplate="RTDSystemService" name="2-three"/>

12       <service-instancetemplate="RTDSystemService" name="2-four"/>

13       <service-instancetemplate="RTDSystemService" name="2-five"/>

14     </icebox>

<!— begin IceBox服務配置 IceBox-Node2-->

    </node>

    <node name="node_3">

      <server-instancetemplate="RTDSSystemServer" index="3"/>

    </node>

  </application>

</icegrid>

app.xml中增加的IceBox服務相關的配置部分如下:

服務摸板(Service Template):

      可以對比一下servertemplate的定義,兩者基本上沒有什么區別,最大的不同是

   Server template中server是指定一個可執行的程序,而service中指定的是動態加載

   的組件入口。以下解釋上述配置中的服務模板的定義:

       第1行指定定義模板的id,唯一標志一個服務模板,第12是閉合標簽;

       第2行定義了一個參數name,默認值是“name”;

       第3~11行定義了模板中使用的服務(service),並在該service中指定了名稱、 

       入口、描述信息、配置屬性,定義了一個對象適配器;

       第4行,是該服務的描述信息;

       第5~7行,是屬性定義列表,這里定義了一個屬性RTDataSource.Identity,並

       指定其值為RTDataSource;

       第8行,定義了一個對象適配器,指定了其name、endpoints、id、replica-group

       等屬性信息,這個基本上和server中adapter的定義沒有什么區別

      

       以上內容就是service模板的定義。

IceBox服務(IceBox-Node1):

                 icebox服務的定義被包含在分布的服務器節點中,主要包括三部分的信息:

1.      IceBox服務的啟動配置信息

2.      IceBox的屬性配置信息

3.      Service服務實例化列表

         下面解釋這塊內容:

          第1~3行,指定了IceBox服務的名稱,啟動方式,啟動執行程序等

          第4~8行,指定了IceBox服務的屬性配置列表,這里定義了IceBox服務的實

          例名稱、管理器訪問端點以及service被跟蹤的級別

          第9~13行,實例化了5個service服務

        至此,一個包含了5個serverservice服務的IceBox服務被集成在node1中。

IceBox服務(IceBox-Node2)

同IceBox服務(IceBox-Node1)中描述,只是具體value有所不同,這里不再解釋。

  4.1.3  測試驗證

驗證方式同第3章,這里不再贅述。部署完成后,就可以通過IceGridGUI.jar程序來進行管理


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM