发表于: 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。
遇到的问题:
收获:
评论