Loading

Spring Cloud组件

内容及图片参考自:https://blog.csdn.net/qq_42046105/article/details/83793787

一、Eureka

Eureka是微服务架构中的注册中心,专门负责服务的注册与发现。Server里面有一个注册表,保存了各Client所在的机器和端口号

 

二、Feign

用注解@FeignClient定义一个接口,然后调用接口即可。FeignClient底层会跟指定的服务建立连接、构造请求、发起靕求、获取响应、解析响应等

@FeignClient(value = "服务名", qualifier = Server1Client.FEIGN_BEAN_NAME, fallbackFactory = Server1FallBackFactory.class)
public interface Server1Client {

    String FEIGN_BEAN_NAME = "server1Client";

    @GetMapping("test")
    String test();
}
@RestController
public class Server2Controller {

    @Resource(name = Server1Client.FEIGN_BEAN_NAME)
    private Server1Client server1Client;

    @RequestMapping("/test")
    public String test(){
        return server1Client.test();
    }
}

机制:动态代理

【对接口使用@FeignClient注解后,Feign会对该接口创建一个动态代理,该代理会根据@RequestMapping等构造出服务完整地址。调用该接口时调用该代理,对地址发送请求、接收响应】

  

三、Ribbon

负载均衡:Ribbon从EurekaServer获取服务注册表(各服务地址+端口),根据算法选中一台,Feign发起请求

 

四、Hystrix

服务间相互调用,如果一个服务挂了,其他服务也会受到影响。

Hystrix机制

  • 隔离:Hystrix创建很多线程池,每个服务对应着一个线程池,请求该服务就用对应线程池中的线程。当一个服务挂掉,只是对应线程池中的线程阻塞,其他线程池无影响
  • 熔断:一个服务挂掉时,直接返回,不走网络
  • 降级:服务挂掉时的备用解决方案,如记录日志

 

五、Zuul

微服务网关,负责网络路由。也可以做统一的降级、限流、认证授权等

不同服务可能ip和端口都不同。可以配置网关,前端访问时只需请求网关即可

 

六、整体流程

 

posted @ 2020-11-04 10:45  LB477  阅读(98)  评论(0)    收藏  举报