SpringCloud Alibaba 整合 Sentinel 控制台,设置流量控制和熔断

avatar 2021年01月29日22:38:26 6 2755 views
博主分享免费Java教学视频,B站账号:Java刘哥 ,长期提供技术问题解决、项目定制:本站商品点此

上一篇文章我们介绍了整合 Sentinal 实现服务降级,点此直达

这篇文章我们讲一下 Sentinel 控制台的使用,怎么设置流量控制和熔断降级

示例代码地址:https://github.com/saysky/nacos-spring-cloud-example

一、安装 Sentinel 控制台

官方文档地址:点此

1、下载地址:

这里选择下载官网最新版 jar 包,点此下载

重命名 jar 文件 sentinel-dashboard.jar

 

2、运行 jar 

java -Dserver.port=8080 -Dcsp.sentinel.dashboard.server=localhost:8080 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard.jar

备注:需要 jdk1.8+

 

3、查看控制台页面

访问 localhost:8080  sentinel 控制台页面,账号密码都是 sentinel

 

二、项目配置文件加入 sentinel 配置

接着上篇文章的代码写

application.yml 里添加 10-13行

server:
  port: 8081
spring:
  application:
    name: demo-consumer-service
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
    sentinel:
      transport:
        port: 8720
        dashboard: 127.0.0.1:8080

feign:
  sentinel:
    # 开启Sentinel对Feign的降级
    enabled: true

management:
  endpoints:
    web:
      exposure:
        include: "*"

主要是这条

spring.cloud.sentinel.transport.dashboard=127.0.0.1:8080

重启 consumer 服务,然后稍等几秒,刷新 Sentinel 控制台,可以看到我们的服务向 Sentinel 控制台通知了接口调用记录

 

三、流量控制

1、控制台簇点链路

2、流控设置,设置流量控制

我们点击流控可以设置QPS和线程数

比如我需要设置1秒钟只允许1个请求访问 /user/{id} 这个接口

我这里手动只需要设置QPS为1,表示1秒钟内第一次可以访问,后面的都直接快速失败

我启动一下provider,然后用 jmeter 压测一下,一个线程循环100次,预期效果是第一次访问成功,后面的都会直接失败

看来是符合我们预期的

顺便看一下表格形式的结果统计

根据时间来看,第一次耗费12毫秒,后面的基本都是2-3毫秒

 

四、熔断设置

所谓熔断就是系统自动能推测出服务方接口调用大概率会失败,所以就不去调用了,直接调用 fallback 

通过 Sentinel 控制台可以简单设置

设置完成后,我给 provider 的代码里加一个异常,让其100%报错,看我们的 provider 会被调用几次,预期是5次

然后重启 provider,使用 jmeter 1个线程循环100遍调用 /user 接口

看 idea 控制台,可以看到 provider 只被调用了5次,剩下的95次是直接降级的(没有调用provider,直接调用fallback)

 

  • 微信
  • 交流学习,资料分享
  • weinxin
  • 个人淘宝
  • 店铺名:言曌博客咨询部

  • (部分商品未及时上架淘宝)
avatar

发表评论

avatar 登录者:匿名
匿名评论,评论回复后会有邮件通知

  

已通过评论:0   待审核评论数:0