第三篇:Spring Cloud client服务集群

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路由项目,来演示多节点服务宕机,系统还能运行的案例。

相关文章
相关标签/搜索