发表于: 2017-04-02 22:03:36

1 1553


  1. 一.今天完成的
  2. 1.完成部署两台service,使用web端随机访问service,另当其一台service宕机后能立即切换到访问另一台service
  3. 2.部署两台web代理服务器(项目分别部署到Tomcat和jetty),并使用nginx代理分发,实现负载,实现随机访问每台web
  4. 二.明天计划
  5. 1.开始任务9
  6. 三.今天的收获
  7. 1.最终实现的结果是这个样子的(图画了2次,官网编辑器粘贴图片超难用让我重新编辑了一次)
  8. 如图,总共部署了四台项目,分别是部署在Tomcat上的web,部署在Jetty上的web,service,service2,

  9. 部署好这四台项目的步骤是什么呢?
  10. 1.在部署好一台的web的前提下(如果你连部署一台web都没完成,请看我之前日报),直接在主项目下再建一个子项目
  11.       主项目右键new→Module

  12.        记得勾选Create from archetype;接着填好子项目名(建议写成service2易于辨识),完成就行

  13.        这时候你的项目目录应该是这样的,

  14.         service2里面的内容跟service几乎一毛一样,你可以有条不紊地将service的东西直接复制过去service2
  15.         当然,还有有两处不同的
  16.         首先pom需要稍作修改,记得将artifactId改成service2
  17. <artifactId>task8-spring-rmi-service2</artifactId>
  18.         另外,配置文件里关于服务端端口也需要修改一下,原来service是8021和8031,所以service2这里就修改成8022和8032
  19. <property name="registryPort" value="8022"/>
  20. <!--给服务注册端口号-->
  21. <property name="servicePort" value="8032"/>

  22.         接下来问题来了,你有两台,在controller层中如何区分调用的是哪个service?
  23.         答案是修改两个地方,client.xml和controller类
  24.         其中client.xml中配置两个bean,studentService1和studentService2,端口分别配置为8021和8022,意思是表示调用的是service和service2

  25.         细心的可能发现使用了scope="prototype"非单例模式,
  26.         为什么要用单例模式,我也是先用了单例模式发现,在其中一台service宕机然后重启恢复(比如手动关闭service2在重启service2)的时候,再不重启web的情况下,还是无法访问service2,这是单例模式在这里的缺陷,它使用的还是service2宕机时候创建出来的bean,只要web不重启,就会一种用这个bean,所以最粗暴的解决办法就是使用非单例模式,每次请求都使用一个新的bean,当然这也会带来增加开销的代价;
  27.         controller类代码如下

  28.         这里面的难点是使用math.random()函数以及使用try catch,感谢黄超师兄和老韩
  29.         接下来是部署两台web(即controller子项目),
  30.         这个有很简单的方法,其实就是在常规地将web部署到Tomcat之后,再重复将web部署到Jetty上
  31.         如图最终是部署了四个项目
  32.         
  33.          最后一步锦上添花,使用Nginx做一下负载,实现随机访问两台Web
  34.          其实只需要两步,第一步修改nginx.conf,第二步启动nginx.exe
  35.          nginx.conf配置文件在nginx安装路径conf文件夹下,修改这几个地方就行
  36.          
  37.          
  38.          这里server localhost:8080 weight=10;后面加了weight权重,实现加权轮询,这是因为要实现两台Web随机分配,具体关于nginx分配策略参考http://blog.csdn.net/xiajun07061225/article/details/9318871
  39.           至此配置工作已经完毕,双击nginx.exe启动nginx

  40.            然后就可以打开浏览器访问啦
  41. 四,遇到的问题
  42. 1.要实现service宕机重启恢复正常后,web能正常访问恢复的这台service,只有非单例模式这个方法吗?这个方法每次请求创建一个新的bean似乎对系统开销比较大,有没有更好的解决办法?
  43. 2.日报编辑器为什么对图片的支持这么不友好,每次加载图片都好久,经常失败,解决办法是,将图片先复制到word文档里,在复制粘贴到日报编辑器中,屡试不爽
  44.          



返回列表 返回列表
评论

    分享到