文件名称 版本号 作者 qq 版本
问道阿里哨兵Sentinel框架_仪表盘_限流 v0.0.2 若布与宫合 8416837 SpringBoot 2.2.2
Spring-cloud-starter-alibaba-sentinel 2.2.1

文章目录

  • 介绍
  • 仪表盘 控制台
    • 代码
    • 启动
  • 限流 资源模式
    • 基础工作
      • 引入依赖
      • 代码
    • 测试
      • 触发限流
      • 日志
  • 附件
    • jar

介绍

查看阿里哨兵

仪表盘 控制台

代码

  • yaml
    将下述yaml文件写到通信项目里,这个项目负责与sentinel通信,一般是个SpringBoot后端。注意看注释。
spring:cloud:sentinel:# 取消控制台懒加载eager: truetransport:# 控制台地址 访问地址dashboard: 127.0.0.1:8718port: 8719 # 通信端口 默认8719# nacos配置持久化datasource:ds1:nacos:server-addr: 192.168.59.135:8848dataId: sentinel-${spring.application.name}groupId: COMPONENT_GROUP
#            groupId: DEFAULT_GROUPdata-type: jsonrule-type: flow

另外,在Nacos新建【数据源】配置,配置的Data Id与上文数据源dataId相同:
abc-auth、abc-system指spring.application.name,请改成你自己项目的。

[{"resource": "abc-auth","count": 500,"grade": 1,"limitApp": "default","strategy": 0,"controlBehavior": 0},{"resource": "abc-system","count": 1000,"grade": 1,"limitApp": "default","strategy": 0,"controlBehavior": 0}
]

     <!--        哨兵--><!-- SpringCloud Ailibaba Sentinel --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId></dependency><!-- SpringCloud Ailibaba Sentinel Gateway --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-sentinel-gateway</artifactId></dependency><!-- Sentinel Datasource Nacos --><dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-datasource-nacos</artifactId></dependency>
  • 免费下载sentinel-dashboard-1.7.2.jar
    或者下载源码:
# 克隆后,使用远程仓库的Dashboard部分
git clone https://gitee.com/mirrors/Sentinel

启动App或者打成Fat Jar包。

  • 启动命令 单机试水
# 注意:8718呼应上文的控制台地址
java -Dserver.port=8718 -Dcsp.sentinel.dashboard.server=localhost:8718 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.7.2.jar

启动

  • 启动成功,但还未与主机通信。账号密码:sentinel=sentinel
  • 启动通信机(被监控的应用须与通信机在同样GROUP),再查看sentinel控制台:

限流 资源模式

基础工作

引入依赖
 <properties><alibaba.cloud.version>2.2.1.RELEASE</alibaba.cloud.version></properties>
     <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId><version>${alibaba.cloud.version}</version></dependency>
代码
  • 基本配置
package test.config;import com.alibaba.csp.sentinel.slots.block.RuleConstant;
import com.alibaba.csp.sentinel.slots.block.flow.FlowRule;
import com.alibaba.csp.sentinel.slots.block.flow.FlowRuleManager;
import org.springframework.context.annotation.Configuration;import javax.annotation.PostConstruct;
import java.util.ArrayList;
import java.util.List;/*** 功能:哨兵限流配置 声明式预定义,到时候应用到资源** @author: cc* @qq: 8416837* @date: 2020/5/5 13:39*/
@Configuration
public class SentinelConfig {@PostConstructpublic void initFlowRules() {List<FlowRule> rules = new ArrayList<>();FlowRule rule = new FlowRule();
//      HelloCC: 哨兵限流配置rule.setResource("HelloCC");rule.setGrade(RuleConstant.FLOW_GRADE_QPS);// Set limit QPS to 5.rule.setCount(5);rules.add(rule);FlowRuleManager.loadRules(rules);}
}
  • 应用到下述接口:
 @GetMapping("/get")public ResponseEntity get() {while (true) {Entry entry = null;try {log.debug("{} === {}", "[代码主动阻塞100毫秒,保证每秒大约10个'模拟请求']");Thread.sleep(100L);// HelloCC指上文的限流资源配置entry = SphU.entry("HelloCC");/*您的业务逻辑 - 开始*/log.debug("{} === {}", "[>>业务逻辑中 。。。<<]");/*您的业务逻辑 - 结束*/} catch (BlockException e1) {/*流控逻辑处理 - 开始*/log.debug("{} === {}", "[请求已被阻塞!]");/*流控逻辑处理 - 结束*/} catch (InterruptedException e) {e.printStackTrace();} finally {if (entry != null) {entry.exit();}}}}

主要就是用entry = SphU.entry("HelloCC");entry.exit();将业务代码包起来,或者使用【注解】更优雅。

测试

触发限流

调用上文写的get接口

日志

根据日志,可以发现,单机限流成功了。qps设置5,即每秒大概允许5个请求,实际有10个请求,大概5个请求被限流了。但是还要细分析是滑动窗口限流,还是令牌桶限流;限流后的处理是服务降级还是拒绝服务从而直接返回响应提示。

2020-05-05 14:13:13.917 DEBUG 36424 --- [  XNIO-1 task-1] test.rest.TestController                 : [代码主动阻塞100毫秒,保证每秒大约10个'模拟请求'] === {}
2020-05-05 14:13:14.017 DEBUG 36424 --- [  XNIO-1 task-1] test.rest.TestController                 : [>>业务逻辑中 。。。<<] === {}
2020-05-05 14:13:14.017 DEBUG 36424 --- [  XNIO-1 task-1] test.rest.TestController                 : [代码主动阻塞100毫秒,保证每秒大约10个'模拟请求'] === {}
2020-05-05 14:13:14.118 DEBUG 36424 --- [  XNIO-1 task-1] test.rest.TestController                 : [请求已被阻塞!] === {}
2020-05-05 14:13:14.118 DEBUG 36424 --- [  XNIO-1 task-1] test.rest.TestController                 : [代码主动阻塞100毫秒,保证每秒大约10个'模拟请求'] === {}
2020-05-05 14:13:14.218 DEBUG 36424 --- [  XNIO-1 task-1] test.rest.TestController                 : [请求已被阻塞!] === {}
2020-05-05 14:13:14.219 DEBUG 36424 --- [  XNIO-1 task-1] test.rest.TestController                 : [代码主动阻塞100毫秒,保证每秒大约10个'模拟请求'] === {}
2020-05-05 14:13:14.319 DEBUG 36424 --- [  XNIO-1 task-1] test.rest.TestController                 : [请求已被阻塞!] === {}
2020-05-05 14:13:14.319 DEBUG 36424 --- [  XNIO-1 task-1] test.rest.TestController                 : [代码主动阻塞100毫秒,保证每秒大约10个'模拟请求'] === {}
2020-05-05 14:13:14.420 DEBUG 36424 --- [  XNIO-1 task-1] test.rest.TestController                 : [请求已被阻塞!] === {}
2020-05-05 14:13:14.420 DEBUG 36424 --- [  XNIO-1 task-1] test.rest.TestController                 : [代码主动阻塞100毫秒,保证每秒大约10个'模拟请求'] === {}
2020-05-05 14:13:14.521 DEBUG 36424 --- [  XNIO-1 task-1] test.rest.TestController                 : [>>业务逻辑中 。。。<<] === {}
2020-05-05 14:13:14.521 DEBUG 36424 --- [  XNIO-1 task-1] test.rest.TestController                 : [代码主动阻塞100毫秒,保证每秒大约10个'模拟请求'] === {}
2020-05-05 14:13:14.621 DEBUG 36424 --- [  XNIO-1 task-1] test.rest.TestController                 : [>>业务逻辑中 。。。<<] === {}
2020-05-05 14:13:14.621 DEBUG 36424 --- [  XNIO-1 task-1] test.rest.TestController                 : [代码主动阻塞100毫秒,保证每秒大约10个'模拟请求'] === {}
2020-05-05 14:13:14.721 DEBUG 36424 --- [  XNIO-1 task-1] test.rest.TestController                 : [>>业务逻辑中 。。。<<] === {}
2020-05-05 14:13:14.721 DEBUG 36424 --- [  XNIO-1 task-1] test.rest.TestController                 : [代码主动阻塞100毫秒,保证每秒大约10个'模拟请求'] === {}
2020-05-05 14:13:14.822 DEBUG 36424 --- [  XNIO-1 task-1] test.rest.TestController                 : [>>业务逻辑中 。。。<<] === {}
2020-05-05 14:13:14.822 DEBUG 36424 --- [  XNIO-1 task-1] test.rest.TestController                 : [代码主动阻塞100毫秒,保证每秒大约10个'模拟请求'] === {}
2020-05-05 14:13:14.922 DEBUG 36424 --- [  XNIO-1 task-1] test.rest.TestController                 : [请求已被阻塞!] === {}
2020-05-05 14:13:14.922 DEBUG 36424 --- [  XNIO-1 task-1] test.rest.TestController                 : [代码主动阻塞100毫秒,保证每秒大约10个'模拟请求'] === {}
2020-05-05 14:13:15.023 DEBUG 36424 --- [  XNIO-1 task-1] test.rest.TestController                 : [>>业务逻辑中 。。。<<] === {}

附件

jar

下载sentinel zip文件 jar

文章目录

  • 介绍
  • 仪表盘 控制台
    • 代码
    • 启动
  • 限流 资源模式
    • 基础工作
      • 引入依赖
      • 代码
    • 测试
      • 触发限流
      • 日志
  • 附件
    • jar

问道阿里哨兵Sentinel框架_仪表盘_限流_v0.0.2相关推荐

  1. 阿里云二面:你对限流了解多少?

    今天来说说限流的相关内容,包括常见的限流算法.单机限流场景.分布式限流场景以及一些常见限流组件. 当然在介绍限流算法和具体场景之前我们先得明确什么是限流,为什么要限流?. 任何技术都要搞清它的来源,技 ...

  2. 放不下的原理_稳定性五件套-限流的原理和实现

    背景 最近了解到很多朋友对限流.熔断.降级.隔离.超时重试的概念和应用场景理解的不是很到位,所以想用五篇的篇幅稍微系统的介绍一下. 本篇是第一篇,是限流做详解,如果反馈好的话,我会继续写下面四篇.不好 ...

  3. Sentinel服务熔断无配置_客户自定义限流处理_削峰填谷_流量控制_速率控制_服务熔断_服务降级---微服务升级_SpringCloud Alibaba工作笔记0049

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 然后上面咱们说了,环境,然后接下来我们测试一下 如果我们的84,消费者是这样写的,那么 这里可以看 ...

  4. Sentinel服务熔断Ribbon环境预说_客户自定义限流处理_削峰填谷_流量控制_速率控制_服务熔断_服务降级---微服务升级_SpringCloud Alibaba工作笔记0048

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 然后咱们看服务熔断功能 然后这里我们要说上面的内容 首先我们准备环境,服务提供者是,9003,90 ...

  5. SentinelResource注解配置下_客户自定义限流处理_削峰填谷_流量控制_速率控制_服务熔断_服务降级---微服务升级_SpringCloud Alibaba工作笔记0047

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 上面几节,我们把@SentinelResource说的差不多了,但实际上,sentinel也支持代 ...

  6. npcap loopback adapter是什么意思_抖音限流是什么意思? 抖音为什么突然限流?

    抖音限流是什么意思​ 抖音为什么突然限流​是由B2B101网站()为您收集修改整理而来,更多相关内容请关注B2B101网站b2b营销推广栏目. 抖音的流量来源于两方面,一方面来自于关注的粉丝,另一方面 ...

  7. php限制接口访问次数_令牌桶限流思路分享(PHP+Redis实现机制)

    一 .场景描述 在开发接口服务器的过程中,为了防止客户端对于接口的滥用,保护服务器的资源, 通常来说我们会对于服务器上的各种接口进行调用次数的限制.比如对于某个 用户,他在一个时间段(interval ...

  8. SentinelResource注解配置中_客户自定义限流处理_削峰填谷_流量控制_速率控制_服务熔断_服务降级---微服务升级_SpringCloud Alibaba工作笔记0046

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 接下来咱们解决上一节说到的问题

  9. 头条限流是什么原因_今日头条限流吗 头条号限流是什么状态

    头条号突然被限流了是什么原因? 我不在乎这个!有些人会对他们写的东西感兴趣,并会继续努力工作.没人看到,自己的水平太差了,限制在极限上,不要指望在这里发财或出名!(不管怎样,我不知道我是否有限)只要快 ...

最新文章

  1. 黄牛凭什么抢走我们的票?
  2. vantui框架switch上显示提示文字_?Switch主机账号官网注册教程
  3. HDU1824 2-sat
  4. python3字符串拼接_Python3基础 str + 字符串变量拼接
  5. HttpContext
  6. 浅谈:国内软件公司为何无法做大做强?
  7. Glide-Android下高效加载多媒体文件
  8. xs资料网-jdpaint编程图档下载_限时下载 | 西门子、三菱、欧姆龙PLC电气设计与编程自学宝典(3册)...
  9. 载入java VM 时Windows 出现错误:2
  10. 教你如何查看加密的QQ空间和加密的QQ相册
  11. mysql ndb存储引擎_ndb 存储引擎
  12. Python之拉盖尔多项式
  13. R语言置信区间计算(confidence interval)、计算比例值对应的置信区间、为比例值构建95%执行区间、使用glue包把最终结果以标准格式输出
  14. std::cerr与std::cout区别
  15. 创建支持多种屏幕尺寸的Android应用
  16. 华为云计算HCIE之oceanstor仿真器的使用操作
  17. 华为笔记本鸿蒙的出了吗,鸿蒙OS笔记本要来了?但可能不会在国内首发
  18. 新农慕课python答案第八周_2021年智慧树Python语言应用第五单元章节测试答案选修课网课慕课答案...
  19. Hankson的趣味题
  20. 使用Opencv实现魔方识别(一):边缘及位置识别

热门文章

  1. #2284. 接水果(fruit)
  2. 使用vs2010编译CCV1.5
  3. html5语言论文,关于HTML5论文
  4. 【Educational Codeforces Round 138】A. Cowardly Rooks
  5. 12-24更新-下载AIMP 3音乐播放器Build 970 RC 3
  6. 有趣的代码:一行Python代码能干嘛?
  7. 我自己的java基础
  8. EEPROM数据丢失
  9. linux下网站平台的搭建——apache +PHP+mysql
  10. html怎么给图片加倒影,通过一张图教会你CSS3倒影的实现