SpringCloud2020重大变更以及SpringCloudAlibaba介绍

Spring Cloud Alibaba

SpringCloud Alibaba是SpringCloud的子项目,很可能成为Spring Cloud第二代的标准实现,与SpringCloud第一代比较SpringCloud Alibaba的优势如下:
在这里插入图片描述

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中删除
  • Nacos

服务网关

  • 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回调函数
  • Hystrix实现熔断降级
    通过线程池隔离的方式,来对依赖(在 Sentinel 的概念中对应 资源)进行了隔离。这样做的好处是资源和资源之间做到了最彻底的隔离。缺点是除了增加了线程切换的成本

Sentinel

  • 通过并发线程数进行限制
    通过限制资源并发线程的数量,来减少不稳定资源对其它资源的影响。这样不但没有线程切换的损耗,也不需要预先分配线程池的大小

  • 通过响应时间对资源进行降级
    通过响应时间来快速降级不稳定的资源。当依赖的资源出现响应时间过长后,所有对该资源的访问都会被直接拒绝,直到过了指定的时间窗口之后才重新恢复

负载均衡

Feign
Feign通过声明式注解(@FeignClient)将Java Http客户端进行封装,简化了Http的请求过程,默认基于HttpURLConnection实现网络请求,也可以自定义HttpClient或OkHttp来实现网络请求实现服务的高可用

Ribbon通过LoadBalanceClient 从服务注册中心加载服务列表到本地缓存,根据本地注册列表信息选择不同的服务实例实现负载均衡,默认基于RestTemplate实现网络的请求
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大能嘚吧嘚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值