Sentinel限流

589 阅读2分钟

概念

官方文档在入门介绍中写的很细sentinelguard.io/zh-cn/docs/… 通篇读完也就二三十分钟

Sentine里的资源和规则是指什么?

什么是流量控制

什么是熔断降级

Sentinel的熔断降级策略(甚至贴心的的指向了Hystrix的策略的讲解)

基本使用

流量控制

  1. 自定义资源和规则 文档中写出细分有五种方式,但我看从编写上一种是用代码块包裹起来,一种是使用注解 sentinelguard.io/zh-cn/docs/…

下面是注解的方式

image.png 关于失败处理方法要怎么写,有需求的可以自己去看一下

image.png 然后再Sentinel中找到声明的资源,设置流控规则,单机阈值为2

[QPS]: Queries Per Second“每秒查询率”

image.png 然后利用压力测试工具JMeter来测试

如何使用JMeter进行测试

image.png 可以看到发送的请求没有失败的了,但是观察Sentinel控制台会发现,实际上被监控的点还是按照我们设定好的规则,允许每秒通过2个,而没通过的去执行 blockHandler 了

image.png

关联模式

场景: 修改订单 和 查询订单一个写操作,一个读操作都会去获取数据库的锁争夺资源,这时可以设置优先级,让修改 > 查询,当超过QPS限制时优先级低的会被暂时限制访问

image.png 橘色是被限流方,红色是与其关联的资源

image.png

测试时要让更新操作时间更持续一点,别还整个1秒,那样就看不到query被限制的情况了

测试结果

image.png

image.png

链路模式

我写不动了,简单来说就是有一个被@SentinelResource 声明的资源U,然后有两个Controller分别时A和B都调用了资源U,那么就形成两条链路A和B,指定限流规则时我们需要对指定是针对哪个流量入口限流

针对资源U对A这个入口限流

image.png