本文共 2270 字,大约阅读时间需要 7 分钟。
默认情况下,我们在控制台配置的规则并不会持久化,当项目重新启动之后,配置就会删除,这里我们整合 apollo + sentinel 进行配置持久化。
org.springframework.boot spring-boot-starter-web org.springframework.cloud spring-cloud-starter-alibaba-sentinel com.alibaba.csp sentinel-datasource-apollo 1.4.1
@RestControllerpublic class IndexController { @RequestMapping("/index") public String index() { return "index"; } @SentinelResource(value = "getIndexConsole",blockHandler = "getOrderQpsEx") @RequestMapping("/getIndexConsole") public String getIndexConsole() { return "getIndexConsole"; } public String getOrderQpsEx(BlockException e) { return "接口已经被限流"; }}
spring: application: name: sentinel cloud: sentinel: transport: dashboard: localhost:8718 eager: true datasource: ds: apollo: namespace-name: application flow-rules-key: sentinel.flowRules rule-type: flowserver: port: 8889 tomcat: max-threads: 20app: id: sentinel apollo: meta: http://**.**.*.171:8080/ cacheDir: /app/war/apollo/temp/
Apollo 配置中心创建项目 sentinel并添加以下配置
key
flowRules
val
[ { "resource": "getIndexConsole", "limitApp": "default", "grade": 1, "count": 1, "strategy": 0, "controlBehavior": 0, "clusterMode": false }]
resource
资源名,限流的接口
limitApp
流控针对的调用来源,default 不区分来源 grade
限流阈值类型,0代表根据线程数,1代表根据 Qps count
限流阈值 strategy
采用策略 controlBehavior
流控效果, (快速失败 Warm Up 排队等待) clusterMode
是否集群 如果 Apollo 部署在 Docker 或者公网,添加启动参数
-Dapollo.configService=http://**.**.*.171:8080
Apollo 的配置已经刷新到控制台
http://localhost:8889/getIndexConsole
https://github.com/huangliangyun/alibaba-learning/tree/master/spring-cloud-alibaba
—— 完
看完觉得有用,记得点赞,关注,转发!
公众号:【星尘Pro】
github:
推荐阅读
https://github.com/alibaba/Sentinel/wiki/%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%99%E6%89%A9%E5%B1%95
https://github.com/alibaba/spring-cloud-alibaba/wiki/Sentinel http://blog.didispace.com/spring-cloud-alibaba-sentinel-2-2/
转载地址:http://qyfsi.baihongyu.com/