第三篇:Spring Cloud client服务集群

1.为什么要集群?

eureka client相当于一个订单项目 放在tomcat中。

客户端-->Nginx-->Zuul-->eureka client ,当(eureka client)在单节点的情况下,如果宕机,会影响到客户使用,这个时候需要一个备胎做替补。

【奇思妙想】

可以把马路当作一个模块【订单模块的class文件】,而路灯是tomcat,我在马路上操作的时候,你的路灯得亮着,也就是tomcat得是运行状态。

如果你只有一个tomcat在运行,那么当路灯由于天气或者人为情况导致灭了,那么作为客户就不能在马路上行走。

 但是如果你一条马路上是有多个路灯,那么就有很好的替补机制,一个坏了没事,还有其他的路灯亮着,不影响人在路上行走。

 

把马路看成模块,多条马路构建一个区域,这个区域就是系统,一个完整的生态圈。

 

代码演示:

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;
    }

}

返回结果

如果这个order服务的8081端口服务挂了,那么客户端去请求order【订单服务】的时候,就会出现异常。做的好的用【断路器Hystrix】,来进行没必要的资源浪费和等待。

但是【断路器Hystrix】只能起到提供友好的客户体验和节省资源浪费&客户等待时间,并不能让客户继续操作下去。

 

这个时候就需要集群来弥补这个操作,也就是服务从单节点变成多节点,当一个节点出现问题,会自动转发到没问题的节点中。从而让客户能继续在系统上操作。不过可能会出现慢的问题,这个时候就需要提供一个服务报警的功能,让运维人员知道情况,安排工程师去解决损坏的节点。

 

现在我们来配置多个order模块。我的方法还是创建order项目,只是端口不一样。IDEA可以直接把一个项目配置成多个端口,如果用IDEA可以这样搞。

如项目结构图,order是2个项目,已8081,一个是8082端口的服务,切换到注册中心服务,发现有2发order服务注册进来了。

 

 

 

 下一篇构建zuul路由项目,来演示多节点服务宕机,系统还能运行的案例。

 

posted @ 2018-07-27 14:14  IT-Jack  阅读(1974)  评论(0编辑  收藏  举报