一、概念
slice: ice提供了自己的接口定义语言。用来定义rpc的接口和对象。
ice.object: rpc调用的接口必须继承自ice.Object
servant:ice.Object的实例化对象叫做servant,rpc调用的就是servant对象,因此servant需要线程安全
endpoints:客户端rpc调用servant的地址
icebox:servant的容器
icenode:icebox的容器
registry:注册中心,负责管理icenode的注册,负责和发布。
二、部署
步骤:
- 启动registry
- 启动node,注册到registry
- 将代码部署到node服务器上
- 将应用描述文件应用到registry上,node上将自动启动application
三、配置文件
registry配置文件一个:registry.cfg
node配置文件n个:node1.cfg, node2.cfg
应用描述文件app.xml
配置文件详情:
registry.cfg
# grid实例名 IceGrid.InstanceName=SzcIceGrid #客户端连接到注册中心的地址 IceGrid.Registry.Client.Endpoints=tcp -p 4061 IceGrid.Registry.Server.Endpoints=tcp IceGrid.Registry.Internal.Endpoints=tcp IceGrid.Registry.PermissionsVerifier=SzcIceGrid/NullPermissionsVerifier IceGrid.Registry.AdminPermissionsVerifier=SzcIceGrid/NullPermissionsVerifier #注册中心数据保存路径,需要手动创建文件夹 IceGrid.Registry.Data=/data/shizc/Desktop/ice/registry IceGrid.Registry.DynamicRegistration=1 Ice.Admin.InstanceName=AdminInstance Ice.Admin.ServerId=Admin
node1.cfg
# 注册中心地址 Ice.Default.Locator=SzcIceGrid/Locator:tcp -h 192.168.7.7 -p 4061 #node名 IceGrid.Node.Name=node1 IceGrid.Node.Endpoints=tcp #node存储路径 IceGrid.Node.Data=/data/shizc/Desktop/ice/nodes/node1 IceGrid.Node.Output=/data/shizc/Desktop/ice/nodes/node1 IceGrid.Node.CollocateRegistry=0 #IceGrid.Node.Trace.Replica=2 #IceGrid.Node.Trace.Activator=3 #IceGrid.Node.Trace.Adapter=3 #IceGrid.Node.Trace.Server=3
node2.cfg
# 注册中心地址 Ice.Default.Locator=SzcIceGrid/Locator:tcp -h 192.168.7.7 -p 4061 IceGrid.Node.Name=node2 IceGrid.Node.Endpoints=tcp IceGrid.Node.Data=/data/shizc/Desktop/ice/nodes/node2 IceGrid.Node.Output=/data/shizc/Desktop/ice/nodes/node2 IceGrid.Node.CollocateRegistry=0 #IceGrid.Node.Trace.Replica=2 #IceGrid.Node.Trace.Activator=3 #IceGrid.Node.Trace.Adapter=3 #IceGrid.Node.Trace.Server=3
app.xml
<icegrid> <application name="FileSystemApp"> <properties id="MultiThreaded" > <property name="Ice.PrintStackTraces" value="1" ></property> <property name="IceSSL.Trace.Security" value="2" ></property> <property name="Ice.ThreadPool.Client.Size" value="2" ></property> <property name="Ice.ThreadPool.Client.SizeMax" value="50" ></property> <property name="Ice.ThreadPool.Server.Size" value="10" ></property> <property name="Ice.ThreadPool.Server.SizeMax" value="100" ></property> <property name="IceBox.InheritProperties" value="1" ></property> <property name="Ice.Override.ConnectTimeout" value="5000" ></property> <property name="Ice.Override.Timeout" value="10000" ></property> <property name="IceBox.Trace.ServiceObserver" value="1" ></property> <property name="Ice.Default.LocatorCacheTimeout" value="300" ></property> <property name="Ice.BackgroundLocatorCacheUpdates" value="1" ></property> </properties> <!-- 配置模板 --> <server-template id="FileSystemServerIceBoxTemplate"> <parameter name="index" default="0"></parameter> <!-- exe指定java启动 --> <icebox id="FileSystemServerIceBox${index}" exe="java" activation="on-demand" > <properties> <properties refid="MultiThreaded" /> </properties> <option>-Xmx512M</option> <!-- icebox启动main方法 --> <option>IceBox.Server</option> <!-- 开发的代码路径 --> <env>CLASSPATH=.:/usr/share/java/*:/data/shizc/Desktop/ice/bin</env> <!-- entry指定icebox启动的service, replica-group指定endpoints组 --> <service name="FilesystemService" entry="service.FilesystemService"> <adapter name="FilesystemService" id="FilesystemService${index}" endpoints="default" replica-group="FilesystemServiceRep" ></adapter> </service> </icebox> </server-template> <replica-group id="FilesystemServiceRep"> <load-balancing type="round-robin" n-replicas="0" /> <!-- 指定servant的名字 --> <object identity="RootDir" type="::filesystem::Directory"></object> <object identity="iamfile" type="::filesystem::File"></object> </replica-group> <!-- 每个node定义2个icebox --> <node name="node1"> <server-instance template="FileSystemServerIceBoxTemplate" index="11"></server-instance> <server-instance template="FileSystemServerIceBoxTemplate" index="12"></server-instance> </node> <node name="node2"> <server-instance template="FileSystemServerIceBoxTemplate" index="21"></server-instance> <server-instance template="FileSystemServerIceBoxTemplate" index="22"></server-instance> </node> </application> </icegrid>
四、启动
- icegridregistry --Ice.Config=registry.cfg
- icegridnode --Ice.Config=node1.cfg
- icegridnode --Ice.Config=node2.cfg
- icegridadmin --Ice.Config=node1.cfg
登陆后
application add app.xml
五、代码
明天加上。。。
时间: 2024-10-04 14:55:23