微服务流量控制-其他服务

路由:/managements/flowMonitor

参考Sentinel:http://172.20.32.234:30014/#/login sentinel/sentinel

实时监控

Sentinel 客户端会在本地收集各种与流量控制相关的数据,如请求的计数、异常情况、响应时间等信息。 客户端会周期性地将这些数据上报给 Sentinel 控制台(Dashboard)。默认情况下,客户端每隔一秒向控制台发送一次统计数据。 Sentinel 控制台提供了图形化的界面,可以显示多个维度的数据,包括但不限于各个资源的QPS、异常比例、慢请求比例等。 可以针对特定的资源或整个应用进行监控,通过图表形式展示过去一段时间内的流量趋势。

microservices-modules-pms为例,用户访问项目管理页面,实时监控页面就会实时监控到用户的请求数据;

请求链路(簇点链路)

microservices-modules-pms为例,簇点链路就是项目内的调用链路,链路中被监控的每个接口就是一个资源。默认情况下 Sentinel 会监控 Spring MVC 的每一个端点(Endpoint),因此 SpringMVC 的每一个端点(Endpoint)就是调用链路中的一个资源。 流控、熔断等都是针对簇点链路中的资源来设置的。

查看网关服务请求链路列表

字段 说明
资源名
通过QPS
拒绝QPS
并发
平均RT
分钟通过
分钟拒绝
操作 “流控”“降级”“热点”“授权”

流控规则

microservices-modules-pms为例

新增流控规则-QPS

字段 说明
*资源名 必填, 唯一名称,默认是请求路径,可自定义
*针对来源 必填,指定对哪个微服务进行限流,默认指default,意思是不区分来源,全部限制
*阈值类型 必填,该项选择“QPS” ; QPS(每秒请求数量): 当调用该接口的QPS达到阈值的时候,进行限流
*单机阈值 必填
*熔断策略 必填,可选“直接”“关联”“链路”
*关联资源 必填,当熔断策略=“关联”时,出现该选项
*入口资源 必填,当熔断策略=“链路”时,出现该选项
*流控效果 必填,可选“快速失败”“排队等待”“Warm UP”
*预热时长 必填,流控效果=“Warm UP” 时,出现该选项
*超时时间 必填,流控效果=“排队等待” 时,出现该选项

示例: 针对接口/pmsEnterprise/myList设置流控规则: img_01.png img_01.png

通过Jmeter频繁访问,例如设置线程数为11,Rame-Up时间=0秒,循环次数=1, 运行后,接口/pmsEnterprise/myList将有1次失败,并且返回“Blocked by Sentinel (flow limiting)” img_02.png img_02.png

熔断规则

与网关服务一致。

新增熔断规则-慢调用比例

慢调用比例( SLOM_REQUEST_RATTo ):选择以慢调用比例作为阈值,需要设置允许的慢调用RT(即最大的响应时间),请求的响应时间大于该值则统计为慢调用。 当单位统计时长(statIntervalMs)内请求数目大于设置的最小请求数目,并且慢调用的比例大于阈值,则接下来的熔断时长内请求会自动被熔断。 经过熔断时长后熔断器会进入探测恢复状态(HALF-OPEN状态),若接下来的一个请求响应时间小于设置的慢调用RT则结束熔断,若大于设置的慢调用RT则会再次被熔断。

字段 说明
*资源名 必填,资源名称,通过资源名称找到对应的规则
*熔断策略 必填,该项选择“慢调用比例”
*最大RT 必填,单位毫秒;最大响应时间,指系统对请求作出响应的业务处理时间;
*比例阈值 必填,比例阈值=慢调用次数/调用次数
*熔断时长 必填,单位秒 ;断开时间,时间到了则会发一个请求试探,有用则通,没用则再继续熔断。
*最小请求值 必填,设置的调用最小请求数
*统计时长 必填,单位秒

新增熔断规则-异常比例

当统计时长内请求数大于最小请求数,且异常比例大于设定的阈值,在熔断时间内请求自动熔断,超过熔断时长进入半恢复状态(HALF_OPEN),如果下一个请求成功,结束熔断,否则再次熔断,异常比例阈值范围(0.0-1.0)代表百分比。 异常降级仅仅只针对业务异常,对于sentnel本身的异常不生效。

字段 说明
*资源名 必填,资源名称,通过资源名称找到对应的规则
*熔断策略 必填,该项选择“异常比例”
*比例阈值 必填
*熔断时长 必填,单位秒
*最小请求值 必填
*统计时长 必填,单位秒

新增熔断规则-异常数

当统计时长内异常数大于阈值,自动进行熔断,超过熔断时长进入半恢复状态(HALF_OPEN),如果下一个请求成功,结束熔断,否在再次熔断。

字段 说明
*资源名 必填, 资源名称,通过资源名称找到对应的规则
*熔断策略 必填,该项选择“异常数”
*异常数 必填,单位毫秒
*熔断时长 必填,单位秒
*最小请求值 必填
*统计时长 必填,单位秒

热点规则

热点规则是 Sentinel 流控规则的一种,用于针对某些具有热点特征的资源进行流控。 核心概念解析:

  • 参数索引: 参数索引是指在资源中标识热点的参数位置。对于方法调用,可以通过参数索引来指定是哪个参数作为热点参数。索引从0开始,表示方法的第一个参数,依此类推。
  • 单机阈值: 单机阈值表示在单个机器上某个热点参数的阈值,即当该参数的访问量达到或超过阈值时触发流控。
  • 统计窗口时长: 统计窗口时长是指在多长时间内统计热点参数的访问量。超过这个时长的访问量将被清零重新计数。

新增热点规则

字段 说明
*资源名 必填, 资源名称,通过资源名称找到对应的规则
*限流模式 必填, 默认=”QPS模式“,不可更改
*参数索引 必填
*单机阈值 必填
*统计窗口时长 必填,单位秒

系统规则

Sentinel系统自适应限流是从整体维度对应用入口流量进行控制,结合应用的load、CPU使用率、总体平均RT、入口QPS和并发线程数等几个维度的监控指标,通过自适应的流控策略,来让系统入口流量和系统负载达到一个平衡,让系统尽可能的在面对高并发访问的同时保证系统整体稳定。

与网关服务一致。

新增系统规则-LOAD

LOAD自适应:针对linux/unix机器有效,系统load(一分钟平均负载)作为启发指标,进行自适应系统保护。

字段 说明
*阈值类型 必填, 该项选择"LOAD"
*阈值 必填, 输入0只1的小数,代表百分比

新增系统规则-RT

RT:单台机器上所有入口流量平均RT达到阈值时,触发系统保护,单位为毫秒。

字段 说明
*阈值类型 必填,该项选择"RT"
*阈值 必填,输入(0,~)的正整数

新增系统规则-线程数

线程数:单台机器上所有入口流量的并发线程数达到阈值触发系统保护。

字段 说明
*阈值类型 必填,该项选择"线程数"
*阈值 必填,输入(0,~)的正整数

新增系统规则-入口QPS

入口QPS:单台机器上所有入口流量的QPS达到阈值触发系统保护。

字段 说明
*阈值类型 必填,该项选择"入口QPS"
*阈值 必填,输入(0,~)的正整数

新增系统规则-CPU使用率

CPU使用率:当系统的CPU使用率超过阈值时触发系统保护(取值范围0.0-1.0)。

字段 说明
*阈值类型 必填,该项选择"CPU使用率"
*阈值 必填,输入0只1的小数,代表百分比

授权规则

在微服务系统中,授权规则用于控制不同服务、用户或客户端对特定资源的访问权限。通过授权规则,可以实现:

  • 服务间访问控制 :限制某些服务只能调用特定的服务接口,防止未经授权的跨服务调用。
  • 用户权限管理 :根据用户的角色或身份,允许或禁止对某些敏感数据或操作的访问。

授权规则基于黑白名单机制实现。请求到达时,Sentinel 检查请求的来源(如服务名、用户 ID、IP 地址等)是否在允许的白名单内或被禁止的黑名单内。如果请求来源符合规则,则允许通过;否则,请求将被拦截。

  • 白名单(Whitelist):只有在白名单中的应用可以访问。
  • 黑名单(Blacklist):黑名单中的应用不能访问,其他应用可以正常访问。

新增授权规则

字段 说明
*资源名 必填,资源名称,通过资源名称找到对应的规则
*流控应用 必填,指调用方,多个调用方名称用半角符号逗号(,)分隔
*授权类型 必填,可选“白名单”“黑名单”