IceGrid入门


分布式高端架构系列 Leader-us@Mycat Zeroc ICE ——微服务架构之王 一:IceGrid入门 1:IceGrid是什么 JVM Process JVM Process Ice Node Ice Registry 服务注册和管理 Client 服务查询 服务调用 客户端负载均衡机制 ServiceA Icebox ServiceA Icebox 微服务架构平台 • 多语言支持 • 高性能 • 完备的工具 2:IceGrid的原理及机制 JVM Process JVM Process Ice Node 服务注册和管理 运维工具 命令行&Applet 1 微服务描述及部署文件 Client 服务查询 服务调用 ServiceA Icebox ServiceA Icebox LocatorService Ice Registry 2 存储信息 3 装配和启动IceBox 4 访问服务 3:Ice Grid部署 Icegrid Node 2 Icegrid Node 3 Icegrid Node 1 Icegrid Registry Client Servers Icegridadmin >>> >>> 4:Ice Registry配置 #registry config for icegrid IceGrid.Registry.Client.Endpoints=tcp -p 4061 IceGrid.Registry.Server.Endpoints=tcp IceGrid.Registry.Internal.Endpoints=tcp IceGrid.Registry.AdminPermissionsVerifier=IceGrid/NullPermissionsVerifier IceGrid.Registry.Data=c:\ice_registry IceGrid.Registry.DynamicRegistration=1 Ice.LogFile=c:\ice.log 建立配置文件 registry.cfg (C:\project\Ice_Hellow) 5:启动Ice Registry C:\ZeroC\Ice-3.6.1\bin\icegridregistry --Ice.Config=C:\project\Ice_Hellow\registry.cfg 6:IceGrid admin C:\ZeroC\Ice-3.6.1\bin\icegridadmin -u test -p test --Ice.Default.Locator="IceGrid/Locator:tcp -h localhost -p 4061" 6:IceGrid Node #指定主注册节点的位置 Ice.Default.Locator=IceGrid/Locator:tcp -h localhost -p 4061 #指定节点1的名称 IceGrid.Node.Name=node1 #设置节点1相关数据的存储目录 IceGrid.Node.Data=c:\ice_node1\data #指定节点1用于监听客户端连接的端口号 IceGrid.Node.Endpoints=tcp -p 5062 Ice.StdErr=c:\ice_node1\node.stderr.log #指定错误日志文件 Ice.StdOut=c:\ice_node1\node.stdout.log 建立配置文件 node1.cfg (C:\project\Ice_Hellow) 目录必须提前创建好!!! 日志文件要配置!!! 6:IceGrid Node C:\ZeroC\Ice-3.6.1\bin\icegridnode --Ice.Config=C:\project\Ice_Hellow\node1.cfg icegridadmin 验证节点已经加入Grid中 3:GridXML入门 CLASSPATH=C:\ZeroC\Ice-3.6.1\lib\*;C:\project\Ice_Hellow\bin grid.xml 7:发布应用 >>> application add C:\project\Ice_Hellow\grid.xml >>> server list MyHelloServer1 MyHelloServer2 >>> service list MyHelloServer1 MyService >>> adapter list MyService1 MyService2 MyServiceRep >>> adapter endpoints MyServiceRep MyService1: MyService2: >>> adapter endpoints MyService1 >>> server state MyHelloServer1 inactive (enabled) >>> server start MyHelloServer1 error: the server didn't start successfully: The server activation timed out. >>> server state MyHelloServer1 active (pid = 10184, enabled) 8:客户端访问 public class GridClient { public static void main(String[] args) { int status = 0; Ice.Communicator ic = null; try { // 初始化通信器 String reg = "--Ice.Default.Locator=IceGrid/Locator:tcp -h localhost -p 4061"; String[] parms=new String[]{reg}; ic = Ice.Util.initialize(parms); Ice.ObjectPrx base = ic.stringToProxy("MyService"); // 通过checkedCast向下转型,获取MyService接口的远程,并同时检测根据传入的名称获取服务单元是否OnlineBook的代理接口,如果不是则返回null对象 MyServicePrx prxy = MyServicePrxHelper.uncheckedCast(base); >>> object list MyService IceGrid/Query IceGrid/Locator IceGrid/Registry IceGrid/LocatorRegistry IceGrid/InternalRegistry-Master 9:IceGrid Admin GUI(1) icegridgui.jar 9:IceGrid Admin GUI(2) 9:IceGrid Admin GUI(3) 10:负载均衡与故障恢复验证 MyServiceRep MyService1 MyService2 MyService node1 node2 10:负载均衡与故障恢复验证 停止 MyHelloServer1 Ice.NoEndpointException proxy = "MyService -t -e 1.1" at IceInternal.AsyncResultI.__wait(AsyncResultI.java:270) at com.my.demo.MyServicePrxHelper.end_hellow(MyServicePrxHelper.java:143) at com.my.demo.MyServicePrxHelper.hellow(MyServicePrxHelper.java:40) at com.my.demo.MyServicePrxHelper.hellow(MyServicePrxHelper.java:29) at GridClient.main(GridClient.java:24) 启动MyHelloServer2,恢复正常 11:常见问题 CLASSPATH=C:\ZeroC\Ice-3.6.1\lib\*;C:\project\Ice_Hellow\bin 回车换行或者类库不全 Ice.StdErr=c:\ice_node1\node.stderr.log #指定错误日志文件 Ice.StdOut=c:\ice_node1\node.stdout.log 提供了Server无法启动故障的重要信息 Icenode 配置文件中缺乏日志的配置,导致没有日志输出 Linux下,如果类库存在但报错找不到,可能需要增加user=ice这个属性 二:Mycat Ice Framework概述 1:IceBox Service的问题 重复代码劳动!!! 可以抽象提取出来!!! 2:ICE服务调用拦截问题 ServantDispatchXXXClient Ice Server side • 服务调用拦截 • 服务调用次数统计 • 服务调用异常统计 • 服务流量策略 3:采用Log4j/Logback日志 如何让Ice的日志记录到Log4j/Logback中? 4:快速开发联调的问题 Ice Servant (本机) Ice Grid (共用测试环境) 发布 开发效率低,相互影响 5:SpringFramework要不要? SpringFramework 微服务架构VS 6:Leader us的建议 SpringBoot IceGridJS框架 Mycat Ice Framework 提供Rest接口的服务,便于 前端开发以及业务流程实现 分布式微服务架构,便于 积木方式构建系统并且性 能优异。(No Spring)App rest 三:Mycat Ice Framework Core原理及Demo 1:Mycat Ice Framework (core) PerfDispatchInterceptorGenIceBoxService xxxServant Class.forName(“xxx”).newInstance Map(servanceName,servant) 2: GenIceBoxService介绍 CLASSPATH=C:\ZeroC\Ice-3.6.1\lib\*;C:\project\Ice_Hellow\bin;C:\project\Ice_Hellow\lib\* 3: GenIceBoxService介绍 public class GenIceBoxService implements Service { 从配置中实例化真正的servant对象 4:PerfDispatchInterceptor public class PerfDispatchInterceptor extends DispatchInterceptor { 5:日志 public class Sl4jLogerI implements Ice.Logger { private final org.slf4j.Logger logger; public Sl4jLogerI(String loggerName) { logger = LoggerFactory.getLogger(loggerName); } @Override public void print(String message) { logger.info(message); } @Override public void trace(String category, String message) { logger.debug(category + " " + message); } @Override public void warning(String message) { logger.warn(message); } @Override public void error(String message) { logger.error(message); } public class Sl4jIceBoxServer { public static void main(String[] args) { Ice.InitializationData initData = new Ice.InitializationData(); initData.properties = Ice.Util.createProperties(); initData.properties.setProperty("Ice.Admin.Dela yCreation", "1"); initData.logger=new Sl4jLogerI("system"); Server server = new Server(); System.exit(server.main("IceBox.Server", args, initData)); } } 6:Demo [["java:package:gridframe"]] module basic{ interface MyService{ string hellow(); }; }; 7:单独启动Servant Client Ice Grid Stand alone Servant • 方便本地测试 • 特殊情况下的部署 8:GenServantRunner 目的: 便于本机Servant测试 服务名称 Servant实现类 9:GenServantRunner 10:ICEClientUtil TicketServicePrx ticketServicePrx = (TicketServicePrx) ICEClientUtil.getSerivcePrx(TicketServicePrx.class); 希望客户端调用简单方便 服务之间相互调用的时候,公用相同的Communicator public static ObjectPrx getSerivcePrx(Ice.Communicator communicator, Class serviceCls) 调用本地部署的或者单独在Grid之外的Service一视同仁 11:ICEClientUtil #--Ice.Default.Locator=IceGrid/Locator:tcp -h 16.156.210.211 -p 4061 --Ice.Default.Locator=IceGrid/Locator:tcp -h localhost -p 4061 idleTimeOutSeconds=300 #stand alone started servant (out of ice grid) local.MyService=MyService:default -h localhost -p 20000 iceclient.properties 三:Ice团队及开发建议 下一期视频预告 Docker方式部署Ice IcePatch实战 谢谢观看 Leader us高端Java培训报名群:434568702
还剩40页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 10 金币 [ 分享pdf获得金币 ] 0 人已下载

下载pdf

pdf贡献者

100200

贡献于2016-07-17

下载需要 10 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!