微服务流量控制-其他服务
路由:/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设置流控规则:

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

熔断规则
与网关服务一致。
新增熔断规则-慢调用比例
慢调用比例( 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):黑名单中的应用不能访问,其他应用可以正常访问。
新增授权规则
| 字段 | 说明 |
|---|---|
| *资源名 | 必填,资源名称,通过资源名称找到对应的规则 |
| *流控应用 | 必填,指调用方,多个调用方名称用半角符号逗号(,)分隔 |
| *授权类型 | 必填,可选“白名单”“黑名单” |