springcloudAlibaba

2018-12-12 Netflix 宣布停止开发Spring Cloud的相关服务:Ribbon、Feign、Eureka、Hystrix,继续使用风险自负

对比springcloud Netflixspringcloudalibaba
网关zuul网关GetWay
注册中心eureka(不再更新),ZooKeeper阿里nacos
配置中心config注册中心阿里NAcos
客户端软负载均衡Ribbon
熔断器Hystrixsentinel

springcloudalibaba致力于提供微服务开发的一站式解决方案,此项目包含开发分布式应用服务的必须组件

方便开发者通过springcloud编程模型轻松使用这些组件来开发分布式服务

依托springcloudalibaba,只需要添加注解和一些少量的配置

就可以将springcloud应用注入阿里分布式应用解决方案,通过阿里中间件来迅速搭建分布式应用

Nacos

帮助配置管理微服务.nacos提供了一组简单易用的特性集,快速实现动态服务发现服务配置,服务源数据及流量管理

Sentinel

Sentinel是阿里的开源项目,提供了流量控制熔断降级,系统负载保护等多个维度保障服务之间的稳定性

簇点链路

流控

资源名称:访问的路径唯一名称

针对来源:可以针对调用者进行跟踪,假设俩个微服务a和b调用,可以对a和b单独的设置限流规则default为不区别来源

阈值类型

  • QPS,当调用的api的QPS(每秒钟请求数)达到阈值时,就去做限流措施
  • 线程数:当调用api的线程达到一定的阈值时就去做限流

流控模式

  • 直接:当违反定义的api规则时,直接快速失败
  • 关联:当关联的资源达到阈值时,限流自己
  • 链路:指定资源从入口资源进来的流量如果达到阈值,就开启限流

流控效果(QPS才有)

  • 快速失败,抛出异常信息
  • Warm Up根据codeFactor从设置的阈值除以codeFactor经过预热时长,才到达QPS阈值,假设设置的阈值为90,那么就会90/3(默认)30作为最初的阈值,预热指定的时长 采取达到90的值限流
  • 排队等待:超过阈值之后需要排队等待,假如排队的人太多了超过了预定的时间,还没有处理完就进行限流,阈值的类型必须设置为QPS否则无效

降级

RT:平均响应时间:当一秒内连续进入的五个请求,对于时刻的平均响应时间均超过阈值(毫秒),那么在接下的时间窗口之内,对这个方法的调用都会自动熔断.RT的上线是4900毫秒

异常比例:当资源的每秒请求量大于10,异常比例达到100%时,在接下的时间窗口之内,对这个方法的调用都会自动熔断.

异常数:当资源接近一分钟的异常数目超过阈值之后会自动进行熔断.注意由于统计时间窗口是分钟级别的,若timeWindow小于60s,则熔断状态后仍可能再进入熔断状态

热点规则

对指定的参数限流,甚至对指定参数的值进行限流

参数索引:对哪个参数进行降级(从0开始),可以在编辑中设置参数的具体值

系统规则

和其他规则不一样,它是针对应用来设的,之前的设置都是针对某一个资源.某一个方法来设置的

阈值类型

  • load:load是负载,只在linux机器上才会生效.根据当前系统的负载来觉得是不是触发保护
  • RT:这个应用上所有的流量的平均响应时间,所有服务的平均响应时间超过一个值,那么停止接受新的请求
  • 线程数:所有服务访问的线程数加起来
  • 入口qps:所有服务的qps达到阈值
  • cpu使用率:cpu使用率超过一个百分比

发生以上这些情况的时候把整个应用都停掉了,所有服务都不提供了

授权规则

使用授权时要先指定来源,对指定来源的内容进行限流

GetWay

spring Cloud getWay基于SpingBoot2,是SpringCloud的全新项目,该项目提供了一个构建在spring生态上的api网关.剔骨了一种简单有效的途径来转发请求,并未它们提供横切关注点,列入:安全性,监控/指标和弹性

优点

性能比较高,是第一代网关zuul的1.6倍

给你强大,内置了很多给你,转发/监控/限流

容易扩展

缺点

实现依赖netty和webFlux,不是传统的server模型

不能不部署在tomcat,jetty等servlet容器中,只能打成jar包运行

需要springboot2.0及以上版本支持

词汇

Route路由:路由网关的基本构成块.它由id,目标url,谓词集合和过滤集合定义,如果聚合谓词为真,则匹配路由

Predicate谓词:对请求的内容进行匹配,条件筛选

Filter过滤器:可以对请求进行过滤,在发送下游请求之前或之后修改请求和响应

Last modification:April 21, 2022
如果觉得我的文章对你有用,请随意赞赏