在详细教你如何部署ICE服务(二)---IceBox加载启动Ice服务这篇博客中,我们使用了IceBox来设计服务代码和启动Ice服务。
单单使用IceBox组件来设计和启动Ice服务,客户端必须将服务端的EndPoint写死到代码中,为了解决这个问题,Ice设计了服务注册表Registry组件,这是一个以二进制文件形式存储运行期Ice服务注册信息的独立进程,作为服务的metadata存储数据中心,以供客户端查询。依托Registry的功能,Ice服务实现了Service Locator组件,这是一个标准的Ice Object服务对象,我们可以在自己的服务端调用这个寻址服务,从而解决客户端寻址的问题。
Service Locator组件实现了两个非常实用和重要的功能:
Ⅰ:自动实现了多种可选择的负载均衡算法,客户端代码无需自己再实现
Ⅱ:服务部署位置和部署数量发送变化之后,客户端无需重启,自动感知和适应
Registry组件作为一个独立的进程,他通过icegridregistry命令,依赖一个属性配置文件来启动。
我们先来看Registry的配置文件registry.cfg
#开放Registry连接协议 端口 IceGrid.Registry.Client.Endpoints=tcp -p 4061 IceGrid.Registry.Server.Endpoints=tcp IceGrid.Registry.Internal.Endpoints=tcp #设置登录Registry方式 IceGrid.Registry.AdminPermissionsVerifier=IceGrid/NullPermissionsVerifier #Registry持久化数据存放目录,这个目录需要手动提前创建,否则启动Registry会报错 IceGrid.Registry.Data=/data/web/yujie_ice/registry/data/registry #是否允许动态注册服务,开发阶段可以,而生产部署建议禁止开启 IceGrid.Registry.DynamicRegistration=1