IceGrid为Ice应用提供定位和激活服务。间接绑定客户端和服务端,按需激活服务端(启动一个服务端进程)。具有应用分发、备份和负载均衡、会话和资源分配、自动故障转移、动态查询、状态监控、管理、部署等功能。实现Ice应用分布式集群运行。
一个IceGrid集群有一个registry(注册表,用于定位)和多个node组成。
注册表的作用:
定位——客户连接注册表,注册表将间接代理信息转化为直接代理信息,客户通过直接代理与服务建立连接。
调度——通过适配器复制,同名适配器可以分布在多个节点上,间接代理可以映射到多个节点上的直接代理,在运行时由注册表服务根据负载均衡自动选择一个直接代理给客户端。
服务器和客户都需要知道注册表的位置,需要进行配置:
Ice.Default.Locator=IceGrid/Locator: tcp -h registryhost -p 4061
注册表负载均衡的策略有随机、最佳适配(负载最轻的适配器给客户)、最近最少使用适配、及顺序适配。
IceGrid集群的结构如下
IceGrid配置包括集群配置和应用配置:
config.grid是集群配置,配置Registry,Node,Server的信息。
application.xml是应用部署文件
<icegrid> <application name="Ripper"> <node name="Node1"> <server id="EncoderServer" exe="/opt/ripper/bin/server" activation="on-demand"> <adapter name="EncoderAdapter" id="EncoderAdapter" endpoints="tcp"/> </server> </node> </application> </icegrid>
IceGrid启动
icegridnode/icegridregistry/icegridadmin