SpringCloud2020重大变更以及SpringCloudAlibaba介绍

1、SpringCloud Netflix只保留了Eureka组件,其他的全部删除
	Zuul由 SpringCloudGateway代替
	Ribbon由 SpringCloudLoadbalancer代替
	Hystrix由 Resilience4j、Sentinel代替
	HystrixDashboard/Turbine由 Micrometer + Monitoring System代替
	Archaius由 SpringBoot外部化配置 + Spring Cloud配置代替
2、spring-cloud-dependencies 2020 默认不在加载bootstrap配置文件,如果项目中要用bootstrap配置文件需要手动添加spring-cloud-starter-bootstrap依赖,原先导入配置的方法改为SpringBoot2.4提供的新spring.config.import功能
  • Eureka(注册中心)
服务注册:Eureka Client向Eureka Server注册自己的元数据(ip、端口等等)
服务续约:Eureka Client每30秒向Eureka Server发送一次心跳,并拉取Eureka Server中的其它注册列表信息到本地
服务剔除:Eureka Client连续90秒没有向Eureka Server发送心跳,则会从Eureka Server中进行删除
服务下线:Eureka Client关闭时会向Eureka Server发送下线请求,该Client的信息将会从Server中删除
  • Gateway(服务网关)
    基于Spring5.x、SpringBoot2.x实现,采用非阻塞方式并且支持长链接
【断言】路由转发的判断条件,决定当前的请求由哪一个路由处理
【路由】网关的基本单元,由ID、URI、一组Predicate、一组Filter组成
【过滤器】路由转发请求时所经过的过滤逻辑,可用于修改请求、响应内容

在这里插入图片描述

断言工厂:根据配置的断言规则对当前请求进行匹配,成功则跳转到指定路由,失败则返回错误信息
*   AfterRoutePredicateFactory   请求时间在配置的时间之后
*	BeforeRoutePredicateFactory  请求时间在配置的时间之前
*	BetweenRoutePredicateFactory 请求时间在配置的时间之间
*	CookieRoutePredicateFactory  请求携带的Cookie满足配置的值
*	HeaderRoutePredicateFactory  请求携带的Header满足配置的值
*	HostRoutePredicateFactory    请求的Host满足配置的值
*	MethodRoutePredicateFactory  请求Method满足配置的值
*	PathRoutePredicateFactory    请求路径满足配置的值
*	QueryRoutePredicateFactory   请求参数满足配置的值
*	RemoteAddrRoutePredicateFactory 请求地址满足配置的值
过滤器:断言成功后跳转到指定的路由,在路由处理之前需要经过“pre”类型的过滤器处理,处理返回响应后需要经过“post”类型的过滤器处理
		“pre”类型的过滤器可以实现参数校验、权限校验、流量监控、日志输出、协议转发
		“post”类型的过滤器可以做响应内容、响应头的修改、日志输出、流量监控
1、全局过滤器:作用在所有路由上,不需要在yml文件中配置
2、网关过滤器:作用在当前路由上,需要在yml文件中配置,默认内置了19种,还可以自定义网关过滤器工厂
*  	AddRequestHeader GatewayFilter Factory       添加请求头网关过滤器工厂
*	AdaRequestParameter Gateway Filter Factory   添加请求参数网关过滤器工厂
*	AddResponsel Header GatewayFilter Factory    添加响应头网关过滤器工厂
*	Hystrix GatewayFilter Factory                Hystrix熔断的网关过滤器工厂
*	PrefixPath GatewayFilter Factory             PrefixPath的网关过滤器工厂
*	PreserveHostHeader GiatcwayFilter Faclory    保留原请求头的过滤器工厂
*	RequestRateLimiter GatewayFilter Factory     请求限流的网关过滤器工厂(常用)
*	RedirectTo GatewayFilter Factory             重定向的网关过滤器工厂
*	RemoveRequestHcader GatewayFilter Factory    剥除请求头的网关过滤器工厂
*	RemoveResponscHeadcr GatewayFilter Factory   删除响应头的网关过滤器工厂
*	RewritePath GatewayFilter Factory            重写路径的网关过滤器工厂(常用)
*	SaveSession GatewayFilter Factory            保存会话的网关过滤器工厂
*	SecureHcaders GatewayFilter Factory          安全头的网关过滤器工厂
*	SetPath GatewayFilter Factory                设置路径的网关过滤器工厂
*	SetResponscHeader CiatcwayFilter Factory     设置响应的网关过滤器工厂
*	SetStatus GatewayFilter Factory              设置状态的网关过滤器工厂
*	StripPrefix GatewayFilter Factory            StripPrefix的网关过滤器工厂(常用)
* 	Retry GatewayFilter Factory                  重试的网关过滤器工厂
使用场景:
	路由转发:将所有服务的API接口统一封装后对外提供访问,避免了外界直接访问服务的真实地址
	全局跨域:
	统一授权:
	日志、流量监控:
	接口限流:
  • Hystrix(熔断器)
    避免某个服务的阻塞(网络问题、代码问题)导致整个服务链的阻塞
预处理机制:当该API接口请求处理失败的次数大于设定的阈值时,Hystrix会认为该接口出现故障并打开熔断机制,则此时该API接口的请求会执行fallback回调函数,这样就不会造成请求该API的线程阻塞
自我修复机制:一段时间后会处于半打开状态,将一定数量的请求执行业务逻辑(若执行失败,则打开熔断器,如成功则关闭熔断器),剩余的请求执行fallback回调函数
  • Feign(负载均衡)
    Feign通过声明式注解(@FeignClient)将Java Http客户端进行封装,简化了Http的请求过程,默认基于HttpURLConnection实现网络请求,也可以自定义HttpClient或OkHttp来实现网络请求实现服务的高可用
Ribbon通过LoadBalanceClient 从服务注册中心加载服务列表到本地缓存,根据本地注册列表信息选择不同的服务实例实现负载均衡,默认基于RestTemplate实现网络的请求

Spring Cloud Alibaba

SpringCloud Alibaba是SpringCloud的子项目,很可能成为Spring Cloud第二代的标准实现,与SpringCloud第一代比较SpringCloud Alibaba的优势如下:

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_30818545/article/details/121389759