Sentinel 进阶教程 - 基础篇

大纲

流量规则使用

流量规则的介绍

Sentinel 能够对流量进行控制,主要是监控应用的 QPS 流量或者并发线程数等指标,如果达到指定的阈值时,就会对流量进行控制,以避免服务被瞬时的高并发流量击垮,保证服务的高可靠性。

配置参数配置说明
资源名资源的唯一名称,默认就是请求的接口路径(URL),可以自行修改。同一微服务应用内,资源名必须唯一。不同微服务应用之间,资源名可以重复。
针对来源具体针对某个微服务进行限流,默认值为 default,表示不区分来源,全部限流。
阈值类型 QPS 表示通过 QPS 进行限流,并发线程数表示通过并发线程数限流。
单机阈值与阈值类型组合使用。如果阈值类型选择的是 QPS,表示当调用接口的 QPS 达到阈值时,进行限流操作。如果阈值类型选择的是并发线程数,则表示当调用接口的并发线程数达到阈值时,进行限流操作。
是否集群选中则表示集群环境,不选中则表示非集群环境。

流空模式的类型

Sentinel 提供三种流控模式,包括直接、关联、链路。

直接流控模式

这是 Sentinel 默认的流控模式,当接口达到限流条件时,直接开启限流功能。

当快速多次调用 http://localhost:8080/testA 接口时,会触发限流,并默认返回 Blocked by Sentinel (flow limiting) 的提示信息。

关连流控模式

当关联的资源达到阀值时,就限流当前接口。比如,当与 A 接口关联的 B 接口达到阀值后,就限流 A 接口自己。

通过 JMeter 让多个线程并发调用 http://localhost:8080/testB 接口,然后再简单调用一次 http://localhost:8080/testA 接口,发现 /testA 接口会返回 Blocked by Sentinel (flow limiting) 的提示信息。这说明大量线程高并发访问 /testB 接口时,导致 /testA 接口也触发了限流。