SpringCloud=分布式微服务架构的一站式解决方案,是多种微服务架构落地技术的几何体,俗称微服务全家桶。

技术选型:SpringCloud Hoxton.SR1(H版SR1)与SpringBoot2.2.2-2.2.5版本(官网推荐SpringBoot2.2.2版本的)

组件说明:

注册中心:eureka(停更)、Zookeeper、Consul(go语言编写)、Nacos

服务调用:Ribbon、LoadBalancer(新出的)/ Feign(Netfilx公司不在更新)、OpenFeign(Spring公司自己出的,与Feign相当于葫芦娃兄弟,几乎一样)

服务降级:Hystrix(cloud自带的停更,国内依然很多使用,其思想很值得学习),resilience4j(国外推荐代替Hystrix),sentienl(国内一般推荐用这个,阿里出品)

服务网关:Zuul(内部原因没出Zuul2)gateway(Spring自己推出的)

服务配置:Config,Nacos(把Config替代了)

服务总线:Bus(淘汰)Nacos

Euerka:

springcloudalibaba seate版本对应 springcloud各个版本区别_Cloud


服务注册:将服务信息注册进注册中心。服务发现:从注册中心上获取服务信息。

实质:存key服务名 取value调用地址

消费者服务在需要调用接口时,使用服务别名去注册中心获取实际RPC远程调用地址。

消费者获得调用地址后,底层实际是利用HttpClient技术实现远程调用。

Eureka集群原理:互相注册。

集群的搭建:修改配置文件,修改host文件。

Euerka自我保护机制:始于CAP里面的AP分支、某时刻某一个微服务不可用了,Euerka不会立即清理,依旧会对该微服务的信息进行保存。

Euerka、Zookeeper、Consul三个注册中心的异同点:

springcloudalibaba seate版本对应 springcloud各个版本区别_Cloud_02


Redis是cp,mysql是ca。

springcloudalibaba seate版本对应 springcloud各个版本区别_Cloud_03


CAP介绍:

springcloudalibaba seate版本对应 springcloud各个版本区别_非阻塞_04


NACOS和其他注册中心比较:

springcloudalibaba seate版本对应 springcloud各个版本区别_java_05


Feign和OpenFeign区别:

springcloudalibaba seate版本对应 springcloud各个版本区别_非阻塞_06


Feign和Ribbon区别(Feign集成了Ribbon):

springcloudalibaba seate版本对应 springcloud各个版本区别_java_07


Hystrix:

springcloudalibaba seate版本对应 springcloud各个版本区别_微服务_08


springcloudalibaba seate版本对应 springcloud各个版本区别_Cloud_09


Hystrix重要概念:

服务降级:

springcloudalibaba seate版本对应 springcloud各个版本区别_非阻塞_10


服务熔断、服务限流:

springcloudalibaba seate版本对应 springcloud各个版本区别_Cloud_11


在yml里配置Hystrix,@HystrixCommand注解,编写服务降级方法。

Gateway与Zuul:

Zuul 1.x基于Servlet2.5使用阻塞架构,不支持长连接,性能相对较差。

Zuul 2.x理念更先进,想基于Netty非阻塞和支持长连接,但SpringCloud目前没有整合。

Gateway(异步非阻塞

)使用的是非阻塞API,还支持websocket,并且与Spring紧密集成拥有更好的开发体验。

Gateway底层是Spring WebFlux框架实现的,Spring WebFlux底层是Netty实现的。

Spring WebFlux框架介绍:

springcloudalibaba seate版本对应 springcloud各个版本区别_微服务_12


Gateway工作流程:

路由、断言、过滤:

springcloudalibaba seate版本对应 springcloud各个版本区别_Cloud_13


springcloudalibaba seate版本对应 springcloud各个版本区别_Cloud_14


Gateway动态路由配置(yml里的配置):

springcloudalibaba seate版本对应 springcloud各个版本区别_非阻塞_15


默认情况下Gateway会根据注册中心注册的服务列表,以注册中心上服务名为路径创建动态路由进行转发,从而实现动态路由的功能。

Filter过滤器:

在yml配置里配置:

springcloudalibaba seate版本对应 springcloud各个版本区别_Cloud_16