ICE通信之IceGrid多节点部署

本文介绍了如何使用ICE的IceGrid组件在一个四台主机的环境中部署一个简单的打印系统。详细阐述了从配置注册器、节点,到Slice脚本、Servant和服务端代码的编写,再到客户端代码实现。通过IceGrid,实现了服务的自动启动和负载均衡,客户端通过注册器自动获取服务器端点,简化了分布式系统的部署和管理。
摘要由CSDN通过智能技术生成

一、 简介

Ice版本:3.1.1

使用iceGrid服务实现一个简单的打印系统,主要说明iceGrid的使用方法,系统部署在4台主机上,注册器和打印服务器安装在同一台主机上,如下图所示:

下图显示了一个客户端通过间接代理的初始调用,来激活目标服务器。

在这个架构当中不需要花时间手动启动服务。客户端的寻址请求提示注册器去查询节点的服务器状态并且根据需要启动它。一旦这个服务启动成功这个寻址请求完成,并且随后客户端直接和服务端通信。

二、 配置注册器、节点1 

注册器需要一个子目录,在这个目录中创建它的数据库,IceGrid.Registry.Data指定,此目录必须在启动注册器前已经存在 。

# Registry properties

IceGrid.Registry.Client.Endpoints=tcp -p 4061

IceGrid.Registry.Server.Endpoints=tcp

IceGrid.Registry.Internal.Endpoints=tcp

IceGrid.Registry.AdminPermissionsVerifier=IceGrid/NullPermissionsVerifier

IceGrid.Registry.PermissionsVerifier=IceGrid/NullPermissionsVerifier

IceGrid.Registry.Data=F:\lhy_workspace\ICETest\src\iceGrid\registry

IceGrid.Registry.Admin.Endpoints=default

# Node properties

IceGrid.Node.Endpoints=tcp

IceGrid.Node.Name=Node1

IceGrid.Node.Data=F:\lhy_workspace\ICETest\src\iceGrid\note

IceGrid.Node.CollocateRegistry=1

Ice.Default.Locator=IceGrid/Locator:tcp -p 4061

1、注册器和节点1的配置信息在同一个配置文件中,在节点1的服务器上存储该配置文件,如存放在c盘根目录下c:\config,文件名为config

        2、将服务器应用程序以及其依赖的jar拷贝至节点1相应的目录下,如下文中部署文件配置的C:\PrinterApp.jar。

有几个属性定义了Endpoints,但只有 icegrid.registry.client.endpoints的值需要一个固定的端口。此属性指定IceGrid定位服务的端口; IceGrid的客户端必须在他们的Ice.Default.Locator中包括这个端口。

其他的一些属性:

属性

说明

IceGrid.Registry.AdminPermissionsVerifier

这两个属性控制访问Registry的管理权限

IceGrid.Registry.PermissionsVerifier

IceGrid.Registry.Data

这个属性指定Registry的数据库目录,用于存放注册器的一些状态信息,可以任意指定。

IceGrid.Registry.DynamicRegistration

通过将此属性设置为一个非零值,我们允许服务器注册对象适配器

IceGrid.Registry.Admin.Endpoints

指定IceGrid的Admin代理端点, 

IceGrid.Node.CollocateRegistry

如果值被设置为大于零的值,说明该节点和注册表运行在同一个进程中,该节点和注册器使用相同的配置文件。

在使用icegridadmin命令管理icegrid时,缺少这项配置,系统会抛出异常:

no suitable endpoint available for proxy `IceGrid/Admin -t'

三、 配置节点2 

IceGrid.Node.Endpoints=tcp

IceGrid.Node.Name=Node2

IceGrid.Node.Data=F:\lhy_workspace\ICETest\src\iceGrid\note2

Ice.Default.Locator=IceGrid/Locator:tcp -h 192.168.1.193 -p 4061

1、在节点2的服务器上存储该配置文件,如存放在c盘根目录下c:\config,文件名为config

      2、将服务器应用程序以及其依赖的jar拷贝至节点2相应的目录下,如下文中部署文件配置的C:\PrinterApp.jar。


属性

说明

IceGrid.Node.Endpoints

配置节点的端点,不需要指定固定的端口

IceGrid.Node.Name

为节点定义一个不同的名字

IceGrid.Node.CollocateRegistry

不能有两个节点都配置这个属性只能有一个主Registry,所以此属性在这个节点中不需要再配置

IceGrid.Node.Data

指定该节点的数据目录,用于存储该节点的状态信息,可以任意指定

四、 Slice脚本

打印服务器的Slice脚本如下

[java]  view plain   copy
  1. module Demo {  
  2.     interface Printer {  
  3.         string printString(string s);  
  4.     };  
  5. };  

打印服务器实现简单的打印功能,服务端接收客户端的打印信息,并负责将信息打印到终端,打印完成之后,返回给客户端一个打印完成的提示信息。

五、 Servant代码

[java]  view plain   copy
  1. package iceGrid.sampleAdapterLocator.servant;  
  2.   
  3. public class PrinterI extends Demo._PrinterDisp {  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值