Sentinel不仅仅可以可以作用于服务之间,还可以完美的和服务网关GateWay或者Zuul一起使用来对网关实现流控。从1.6.0版本开始,Sentinel提供了SpringCloudGateway的适配模块,可以提供两种资源维度的限流:
route维度:即在Spring配置文件中配置的路由条目,资源名为对应的routeId。
自定义API维度:用户可以利用Sentinel提供的API来自定义一些API分组。
引入依赖
使用时需引入以下模块(以Maven为例):
<dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-spring-cloud-gateway-adapter</artifactId></dependency>
YML配置
需要配置sentinel的控制台地址,用来同步规则配置信息;还有就是需要配置Nacos来获取服务列表;还有就是配置服务网关的路由信息。
server:port:2001spring:application:name:gateway-serviceprofiles:active:devcloud:#注册中心nacos:discovery:server-addr:127.0.0.1:8848#流控配置sentinel:transport:port:8719dashboard:localhost:8080#降级策略scg:fallback:mode:responseresponse-status:426response-body:errorrequest#网关配置gateway:routes:-id:stock_routeuri:lb://stock-servicepredicates:-Path=/stock/**
启动网关
在APIGateway端,用户只需要在原有启动参数的基础上添加如下启动参数即可标记应用为APIGateway类型:
-Dcsp.sentinel.app.type=1
配置流控规则
我们可以在Sentinel的管理后台对我们之前添加的stock_route增加流控规则配置
总结
我们通过Sentinel和Gateway的整合,我们可以轻松的设置一个服务集群,或者多个服务的访问入口流量控制。
此处只是简单的实现了错误信息的返回,对于自定义异常信息的处理,以及更多的生产复杂情况,我们更多的是和结合Sentinel本身提供的一些功能来响应实际问题,以及结合设计者的设计思想,我们可以通过修改源码或者在拓展点进行拓展来让Sentinel更好的服务于我们的生产。
参考
https://github.com/alibaba/Sentinel/wiki
公众号:运维开发故事
github:https://github.com/orgs/sunsharing-note/dashboard
爱生活,爱运维
扫码二维码
关注我,不定期维护优质内容
温馨提示
........................