发表于: 2019-10-13 19:10:05

1 873


今天完成的事情:(一定要写非常细致的内容,比如说学会了盒子模型,了解了Margin) 
1、完成任务8
明天计划的事情:(一定要写非常细致的内容) 
1、学习任务9
 
遇到的问题:(遇到什么困难,怎么解决的) 
1、老毛病了,idea打包jar包无法运行
原因:idea打包容易将 主类也打包到jar中

解决办法:1、右上角 改为 other,

2、添加Artifact jar 的时候选择第二个,一般就不会错了

经验教训:很久没用jar包了,这次遇到 翻翻之前写的 很快就解决了,多积累


收获:(通过今天的学习,学到了什么知识)
1、在服务器上部署两台web两台server
1、昨天已经准备好jar
但是部署没有成功
进行排查
目的:
Nginx 监听9000 分配 server 9001 和 server 9002
Nginx 监听 web9080 分配 web9081 和 web 9082
问题:
web中的bean是直接对 9000 进行连接的

所以在运行的时候就会检测连接的问题
这里报错了
排查:
首先这四个在本地都已经测试过
下面在服务器单独测试
9000 9001 9002 都已部署

上传一个之前直接输出的 9002 web jar

在linux运行

看来 9001 和 9002 没有问题

看了一些资料回来发现 Nginx 貌似不能配置 rmi
那就只能放在java中进行设置

2、部署
1、部署流程
1、Nginx不受影响随时可以部署
只部署两台 web的负载即可


2、部署Service
由于web部署会运行Spring配置文件
所以要先 部署 Service 在部署 web
不然会报错
3、部署 web
web 中通过随机数来随机连接 Service
这里通过注解的方式注入不方便
还是使用 原始的方式


要顾及到 后期 Service挂掉也不会影响
不过这里Service是先部署
所以 注入部分不会发生 异常
把 异常 放到运行部分
(不使用Spring的时候,涉及到 RMI 的接口中的每个方法都要抛出异常
这里可以看出该异常的重要性,而在Spring中不需要抛出也能运行感觉有些欠佳)
先将可用接口都放入list中

然后获取接口在进行随机选择一个接口
如果可以用就返回,不能用就从list中移除该接口
如果没有可以用的就 皮一句

本地测试良好,部署到服务器吧
查看端口

web1 的 title 是 web1 , web2 的 title 是 web2
server 1 返回是 rmi one , server 2 返回 是 rmi two
浏览器测试

web2 和 Service 1
点击刷新 继续测试

web2和 Service 2
点击刷新继续测试

web1 和 Service 2
点击刷新继续测试

web1 和 Service 1

然后kill 1台 Service继续测试


此时时不时会报异常


把最后一个 Service也 kill 掉 

就会一直报异常了

然后将 rmi 启动后 挂掉一台 web 访问浏览器

不影响 使用

任务总结:

任务名称:JAVA=TASK8
任务耗时:10.13-10.14
技能脑图:
个人


官方

任务总结:
任务进度是否符合预期,是否延期,如果延期,原因是什么,如何避免下次继续延期
进度基本符合预期
脑图对比分析
基本相同
任务中遇到哪些疑难问题,最终是如何解决的,有哪些值得分享的收获
(对于任务总结应该更多的描述出任务所走的弯路以及遇到的困难,不应鼓励将知识点无脑的堆砌在总结之中)
任务八主要是Service和Web 的分离 还有 Nginx 负载均衡
1、普通的 Java RMI 
服务层的接口 需要 继承 Remote ,每个方法必须抛出 异常
继承表名该接口要远程操作,抛出异常为了处理各种问题,比如连接失败等
服务层的接口需要写实现类,继承 UnicastRemoteObject 也要远程操作
然后 发布即可,
客户端在使用RMI 的远程接口前,必须创建与服务端相同的接口
报名等必须相同,不过不需要实现类
2、Spring RMI
Spring 中将异常交给了 配置文件,即接口不需要继承和抛出方法
在项目运行时候会连接 RMI 如果失败 项目就运行不起来。
但是如果项目运行过程中 RMI出错挂掉了,就会影响使用
所以 我觉得接口还是抛出异常比较好
3、Nginx负载均衡
部署两个 Web 添加负载均衡



返回列表 返回列表
评论

    分享到