携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第14天,点击查看活动详情
一、GateWay整合Sentinel
网关作为内部系统外的一层屏障, 对内起到一定的保护作用, 限流便是其中之一. 网关层的限流可以简单地针对不同路由进行限流, 也可针对业务的接口进行限流,或者根据接口的特征分组限流。
1-1、添加相关依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-sentinel-gateway</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
1-2、配置sentinel控制台
首先在配置文件中配置相关信息
按照之前的方式启动sentinel控制台,不明白的可以看下之前的文章
# 启动 Sentinel 控制台以及在Spring Cloud Alibaba中的使用
启动sentinel控制台
完成application.yml配置
1-2-1、控制台实现方式
Sentinel 1.6.3 引入了网关流控控制台的支持,用户可以直接在 Sentinel 控制台上查看 API Gateway 实时的 route 和自定义 API 分组监控,管理网关规则和 API 分组配置。
从 1.6.0 版本开始,Sentinel 提供了 Spring Cloud Gateway 的适配模块,可以提供两种资源维度的限流:
- route 维度:即在 Spring 配置文件中配置的路由条目,资源名为对应的 routeId
- 自定义 API 维度:用户可以利用 Sentinel 提供的 API 来自定义一些 API 分组
1-3、在被调用服务中添加一些接口方法
通过访问GateWay调用sentinel-order服务的方法,因此需要现在sentinel-order服务中创建一些方法
1-4、启动网关服务和被调用的服务
上面已经启动了sentinel控制台,这个时候控制台是没有任何数据的,如下:
首先需要先访问一下服务,Sentinel才可以进行处理。
再次访问sentinel服务,请求链路中就可以看到seata-order服务了,并且比之前使用sentinel控制台多了一个API管理。少了热点参数规则
因此给服务添加sentinel和给GateWay整合sentinel是略有差别的
1-5、设置流控规则
点击流控,可以看到如下设置流控的页面
而之前设置流控的页面是这样的,如下:
两者还设有有些差别的。
先简单设置一下QPS流控规则,这样就可以针对整个服务进行QPS的流控设置。
1-6、访问设置的流控服务
频繁访问接口服务,就可以触发流控规则了,如下