GateWay整合Sentinel实现服务的流控

364 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第14天,点击查看活动详情

一、GateWay整合Sentinel

网关作为内部系统外的一层屏障, 对内起到一定的保护作用, 限流便是其中之一. 网关层的限流可以简单地针对不同路由进行限流, 也可针对业务的接口进行限流,或者根据接口的特征分组限流。

github.com/alibaba/Sen…

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控制台

首先在配置文件中配置相关信息 image.png

按照之前的方式启动sentinel控制台,不明白的可以看下之前的文章

# 启动 Sentinel 控制台以及在Spring Cloud Alibaba中的使用

启动sentinel控制台

image.png

完成application.yml配置

image.png

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服务中创建一些方法

image.png

1-4、启动网关服务和被调用的服务

上面已经启动了sentinel控制台,这个时候控制台是没有任何数据的,如下:

image.png

首先需要先访问一下服务,Sentinel才可以进行处理。

image.png

再次访问sentinel服务,请求链路中就可以看到seata-order服务了,并且比之前使用sentinel控制台多了一个API管理。少了热点参数规则

因此给服务添加sentinel和给GateWay整合sentinel是略有差别的

image.png

1-5、设置流控规则

点击流控,可以看到如下设置流控的页面 image.png

而之前设置流控的页面是这样的,如下: image.png

两者还设有有些差别的。

先简单设置一下QPS流控规则,这样就可以针对整个服务进行QPS的流控设置。

image.png

1-6、访问设置的流控服务

频繁访问接口服务,就可以触发流控规则了,如下 image.png