本文共 3006 字,大约阅读时间需要 10 分钟。
sentinel提供了限流的功能,本章节讲解如何使用sentinel对我们开发的接口进行限流.
server: port: 1001 #服务端口spring: application: name: server-user #服务名称 cloud: nacos: discovery: server-addr: 47.96.131.185:8848 config: server-addr: 47.96.131.185:8848 #nacos config配置中心ip和端口 file-extension: yaml #文件扩展名格式,针对于默认的{spring.application.name}-${profile}.${file-extension:properties}配置 enabled: true #开启或关闭配置中心 shared-dataids: mysql-user.yaml #自定义的配置文件dataid,以逗号分隔 refreshable-dataids: mysql-user.yaml #自定义的配置文件dataid实现自动刷新,以逗号分隔(其实就是热加载配置文件) sentinel: transport: dashboard: 47.96.131.185:8080 #sentinel服务端的地址 eager: true #取消控制台懒加载management: endpoints: web: exposure: include: '*'ribbon: #对所有操作请求都进行重试,默认false(false=只有get请求才会进行重试) OkToRetryOnAllOperations: false #负载均衡超时时间,默认值5000 ReadTimeout: 4000 #ribbon请求连接的超时时间,默认值2000 ConnectTimeout: 1 #对当前实例的重试次数,默认0 MaxAutoRetries: 0 #对切换实例的重试次数,默认1 MaxAutoRetriesNextServer: 0
package com.ccm.server.user.controller;import com.ccm.common.exception.result.ResultSet;import io.swagger.annotations.Api;import io.swagger.annotations.ApiOperation;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;/** * @Description sentinel限流测试控制层 * @Author ccm * @CreateTime 2020/07/28 15:17 */@RestController@RequestMapping(value = "sentinelCurrentlimitingTest")@Api(tags = "sentinel限流测试控制层")public class SentinelCurrentlimitingTestController { @ApiOperation(value = "限流测试") @GetMapping(value = "test01") public ResultSet test01() { return ResultSet.success("笑脸"); }}可以看到我们访问接口,实时监控tab会有记录.
从弹出框,我们可以看到几个名词和两种类型的配置.
可以针对调用者进行限流,填写微服务名,默认default(不区分来源).
唯一名称,默认请求路径.
qps: 当调用该api的qps达到阈值的时候,进行限流.
线程数: 当调用该api的线程数达到阈值的时候,进行限流.意入其名.
直接: 当api达到限流条件时直接限流关联: 当关联资源达到限流条件时限流自己链路: 当请求链路上的流量达到阈值,就进行限流:
快速失败: 直接失败,抛出异常warm up:(预热/冷启动的方式,当系统长期处于低水位的情况下),当流量突然增加时,直接把系统拉升到高水位可能瞬间把系统压垮.通过冷启动,让通过的流量缓慢增加,在一定时间内逐渐增加到阈值上限,给冷系统一个预热的时间,避免冷系统被压垮.排队等候: 均匀排队,阈值类型必须设置qps,否则无效
一秒钟20个请求.
填写请求路径和参数.请求后的结果树,可以看到20个请求中有部分请求失败,响应数据为Blocked by Sentinel (flow limiting),证明我们的流量控制规则生效.
至此,完事!源码地址:
您的点赞、收藏、转发和关注是我持续创作的动力!
转载地址:http://sktli.baihongyu.com/