首先说说什么是Spring Cloud?
Spring Cloud 是一系列框架的有序集合,它利用 Spring Boot 的开发便利性简化了分布式系统的开发,比如服务发现、服务网关、服务路由、链路追踪等。Spring Cloud 并不重复造轮子,而是将市面上开发得比较好的模块集成进去,进行封装,从而减少了各模块的开发成本。
这种全家桶式的技术栈,能把所有原理讲清估计很难,多半都是停留在功能使用方面。接下来就认识一下他主要的几个组件吧!
Spring Cloud是一个全家桶式的技术栈,包含了很多组件,从其最核心的几个组件入手,来剖析一下其底层的工作原理。也就是Eureka、Ribbon、Feign、Hystrix、Zuul这几个组件
1、Eureka组件是微服务架构中的注册中心,专门负责服务的注册与发现
Eureka Client:负责将这个服务的信息注册到Eureka Server中
Eureka Server:注册中心,里面有一个注册表,保存了各个服务所在的机器和端口号
2、Ribbon组件的作用是负载均衡
它有自己的算法,每次请求时选择一台机器,均匀的把请求分发到各个机器上
3、Feign组件可以帮助我们更快捷、优雅地调用HTTP API
使用Feign非常简单——创建一个接口,并在接口上添加一些注解,代码就完成了。Feign的一个关键机制就是使用了动态代理,首先,如果你对某个接口定义了 @FeignClient注解,Feign就会针对这个接口创建一个动态代理。接着你要是调用那个接口,本质就是会调用 Feign创建的动态代理,这是核心中的核心。Feign的动态代理会根据你在接口上的@RequestMapping等注解,来动态构造出你要请求的服务的地址。最后针对这个地址,发起请求、解析响应。
4、Hystrix组件的作用是隔离、熔断以及降级
5、Zuul组件也就是微服务中的一种网关服务,负责网络路由,统一从Zuul网关进入,由Zuul网关转发请求给对应的服务
6、Spring Cloud 后来推出了Gateway网关服务,在性能方面略胜Zuul,具体使用哪个根据项目需求去衡量,各有各的优点。