1.为何要集群?web
eureka client至关于一个订单项目 放在tomcat中。spring
客户端-->Nginx-->Zuul-->eureka client ,当(eureka client)在单节点的状况下,若是宕机,会影响到客户使用,这个时候须要一个备胎作替补。tomcat
【奇思妙想】app
能够把马路看成一个模块【订单模块的class文件】,而路灯是tomcat,我在马路上操做的时候,你的路灯得亮着,也就是tomcat得是运行状态。运维
若是你只有一个tomcat在运行,那么当路灯因为天气或者人为状况致使灭了,那么做为客户就不能在马路上行走。spa
可是若是你一条马路上是有多个路灯,那么就有很好的替补机制,一个坏了没事,还有其余的路灯亮着,不影响人在路上行走。3d
把马路当作模块,多条马路构建一个区域,这个区域就是系统,一个完整的生态圈。rest
代码演示:code
package com.cohesion.rest; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class OrderController { @Value("${server.port}") private String port; @Value("${spring.application.name}") private String serviceName; @RequestMapping(value="/order/helloWord") public String helloWord() { String returnStr = "您访问的是:【"+serviceName+"】服务,【端口号】"+port; return returnStr; } }
返回结果server
若是这个order服务的8081端口服务挂了,那么客户端去请求order【订单服务】的时候,就会出现异常。作的好的用【断路器Hystrix】,来进行不必的资源浪费和等待。
可是【断路器Hystrix】只能起到提供友好的客户体验和节省资源浪费&客户等待时间,并不能让客户继续操做下去。
这个时候就须要集群来弥补这个操做,也就是服务从单节点变成多节点,当一个节点出现问题,会自动转发到没问题的节点中。从而让客户能继续在系统上操做。不过可能会出现慢的问题,这个时候就须要提供一个服务报警的功能,让运维人员知道状况,安排工程师去解决损坏的节点。
如今咱们来配置多个order模块。个人方法仍是建立order项目,只是端口不同。IDEA能够直接把一个项目配置成多个端口,若是用IDEA能够这样搞。
如项目结构图,order是2个项目,已8081,一个是8082端口的服务,切换到注册中心服务,发现有2发order服务注册进来了。
下一篇构建zuul路由项目,来演示多节点服务宕机,系统还能运行的案例。