发表于: 2020-09-09 23:33:56

1 1319


今天完成的事

部署两台WEB,通过Nginx配置两台WEB随机访问,两台WEB可以随机访问两台Service。

随机获取service服务:

 private  Logger logger= LoggerFactory.getLogger(RMIDispatcher.class);
   StudentService studentService=null;
   public StudentService getService(){

int count=new Random().nextInt(2);
       if(count==1){
try{
logger.info("尝试获取serverA的服务");
               studentService=getServiceA();
               logger.info("已经获取serverA的服务");

           }catch (Exception e){
try {
logger.info("serverA的服务获取失败,获取serviceB的服务");
                   logger.info("尝试获取serverB的服务");
                   studentService=getServiceB();
                   logger.info("已经获取serverB的服务");
               }catch (Exception e1){
logger.info("服务全部挂掉了");
               }
}
}else if(count==0){
try{
logger.info("尝试获取serverB的服务");
               studentService=getServiceB();
               logger.info("已经获取serverB的服务");
           }catch (Exception e){
try {
logger.info("serverB的服务获取失败,获取serviceA的服务");
                   logger.info("尝试获取serverA的服务");
                   studentService=getServiceA();
                   logger.info("已经获取serverA的服务");
               }catch (Exception e1){
logger.info("服务全部挂掉了");
               }
}
}
return studentService;
   }
private StudentService getServiceA(){
ApplicationContext applicationContext=new ClassPathXmlApplicationContext("spring/client-rmi.xml");
       return (StudentService) applicationContext.getBean("studentService1");
   }
private StudentService getServiceB(){
ApplicationContext applicationContext=new ClassPathXmlApplicationContext("spring/client-rmi.xml");
       return (StudentService) applicationContext.getBean("studentService2");
   }
}

准备好两个服务端打包好上传到腾讯云运行

一个服务端用 java -jar task2_serverB-1.0.jar & 命令进行后台运行。

另一个不加& 直接运行,方便直接用ctrl+c关闭,达到宕机切换serviceB正常运行的效果。

在本地的wsl下用nginx负载均衡两台tomcat,实现两台web访问service

这里还要模拟其中一台web挂机也能正常访问,所以设置连接超时时间为1秒,防止请求被分配到挂机的tomcat后会一直处于连接等待状态。

测试一下获取方法,第一次访问延迟比较高,但是在客户端的spring配置文件中设置了懒加载,后面的访问速度就快很多了。

用tail -f catalina.out 命令从wsl中查看tomcat1的日志

接下来把serverA关掉再请求

可以看到获取成功。

再关掉tomcat1,运行。

请求全部被转发到tomcat2中,可以正常请求。

明天的计划:

Tuscany的RMI。

遇到的问题:

收获:


返回列表 返回列表
评论

    分享到