这是我参与11月更文挑战的第20天,活动详情查看:2021最后一次更文挑战
使用Sentinel Dashboard 实现流控配置
在Sentinel Dashboard 配置流控规则,可实现流量控制的动态配置,步骤如下:
- 启动Sentinel Dashboard服务端
- 在application.yml中添加配置如下:
1 | yml复制代码spring: |
spring.cloud.sentinel.transport.dashboard配置为Sentinel Dashboard服务端地址,用于实现流量控制监控和流量控制规则的分发。
定义一个需要限流REST接口,代码如下:
1 | java复制代码@RestController |
不需要添加任何资源埋点,在默认情况下Sentinel 会对所有请求进行限流。
访问对应接口,因为没有配置流控规则,所以没被Sentinel限流
进入Sentinel Dashboard实现流控规则配置,步骤如下:
- 启动Sentinel-Dashboard-1.3.0.jar
- 访问http://127.0.0.1:8888,进入Sentinel Dashboard配置流控规则
- 进入spring.application.name对应的菜单,访问【簇点链路,在这列表中可看到/limit接口的资源名称。
- 对于/limit资源名称,可点击【流控】按钮设置对应流控规则
新增规则中所有配置信息,其实就是FlowRole中对应的属性设置,测试效果将单机阈值设置为1
新增完成后,再次访问http://127.0.0.1:8080/sentinel/limit接口,当QPS大于1时,可查看到对应的限流效果
1 | scss复制代码Blocked By Sentinel(flow limiting) |
自定义URL限流异常
在默认情况下,URL触发限流会直接返回
1 | scss复制代码Blocked By Sentinel(flow limiting) |
在实际情况下,大多数采用JSON格式的数据,所以在触发限流返回json格式数据,可以通过自定义限流异常来修改,实现UrlBlockHandler并且重写blocked方法。
1 | java复制代码@Service |
还有一种情况是,当触发限流后,直接跳转到对应降级页面,可以通过添加如下配置实现
1 | yml复制代码spring: |
本文转载自: 掘金