Spring Cloud核心组件的理解

原文:https://mp.weixin.qq.com/s/mOk0KuEWQUiugyRA3-FXwg
上述文章中,简明扼要地讲述了spring cloud中五大核心组件Eureka、Ribbon、Feign、Hystrix、Zuul的功能和使用场景,我看完后感觉收获很多,所以在这里记录一下。

  • Eureka是微服务架构中的注册中心,专门负责服务的注册与发现。Eureka Client组件专门负责将服务的信息注册到Eureka Server中,而Eureka Server是一个注册中心,里面有一个注册表,保存了各服务所在的机器和端口号。各个服务启动时,Eureka Client都会将服务注册到Eureka Server,并且Eureka Client还可以反过来从Eureka Server拉取注册表,从而知道其他服务在哪。
  • Feign的关键机制是使用了动态代理。如果你对某个接口定义了@FeignClient注解,Feign就会针对这个接口创建一个动态代理;接着你要是调用那个接口,本质就是会调用Feign创建的动态代理;Feign的动态代理会根据你在接口上的@RequestMapping等注解,来动态构造出你要请求的服务的地址;针对这个地址,发起请求,解析相应;
  • Ribbon的作用是负载均衡,会帮你在每次请求时选择一台机器,均匀的把请求分发到各个机器上,默认使用Round Robin轮询算法;
  • Hystrix是隔离、熔断以及降级的一个框架。发起请求是通过Hystrix的线程池来走的,不同的服务走不同的线程池,实现了不同服务调用的隔离,避免了服务雪崩的问题;
  • Zuul也就是微服务网关。这个组件是负责网络路由的,一般微服务架构中都必然设计一个网关在里面,像android、ios、pc前端、微信小程序、h5等,不用关心后端有几百个服务,就知道有一个网关,所有请求都往网关走,网关会根据请求中的一些特征,将请求转发给后端的各个服务。有一个网关之后,还有很多好处,比如做统一的降级、限流、认证授权、安全等等。

下面Spring Cloud的5个核心组件通过一张图串联起来:
在这里插入图片描述

Ribbon和Feign以及Eureka紧密协作,完成工作的,具体如下:

  • 首先Ribbon会从Eureka Client里获取到对应的服务注册表,也就知道了所有的服务都部署在哪些机器上,在监听哪些端口号;
  • 然后Ribbon就可以使用默认的Round Robin算法,从中选择一台机器;
  • Feign就会针对这台机器,构造并发起请求

猜你喜欢

转载自blog.csdn.net/qq_23888451/article/details/84852857