问道阿里哨兵Sentinel框架_仪表盘_限流_v0.0.2
文件名称 | 版本号 | 作者 | 版本 | |
---|---|---|---|---|
问道阿里哨兵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相关推荐
- 阿里云二面:你对限流了解多少?
今天来说说限流的相关内容,包括常见的限流算法.单机限流场景.分布式限流场景以及一些常见限流组件. 当然在介绍限流算法和具体场景之前我们先得明确什么是限流,为什么要限流?. 任何技术都要搞清它的来源,技 ...
- 放不下的原理_稳定性五件套-限流的原理和实现
背景 最近了解到很多朋友对限流.熔断.降级.隔离.超时重试的概念和应用场景理解的不是很到位,所以想用五篇的篇幅稍微系统的介绍一下. 本篇是第一篇,是限流做详解,如果反馈好的话,我会继续写下面四篇.不好 ...
- Sentinel服务熔断无配置_客户自定义限流处理_削峰填谷_流量控制_速率控制_服务熔断_服务降级---微服务升级_SpringCloud Alibaba工作笔记0049
技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 然后上面咱们说了,环境,然后接下来我们测试一下 如果我们的84,消费者是这样写的,那么 这里可以看 ...
- Sentinel服务熔断Ribbon环境预说_客户自定义限流处理_削峰填谷_流量控制_速率控制_服务熔断_服务降级---微服务升级_SpringCloud Alibaba工作笔记0048
技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 然后咱们看服务熔断功能 然后这里我们要说上面的内容 首先我们准备环境,服务提供者是,9003,90 ...
- SentinelResource注解配置下_客户自定义限流处理_削峰填谷_流量控制_速率控制_服务熔断_服务降级---微服务升级_SpringCloud Alibaba工作笔记0047
技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 上面几节,我们把@SentinelResource说的差不多了,但实际上,sentinel也支持代 ...
- npcap loopback adapter是什么意思_抖音限流是什么意思? 抖音为什么突然限流?
抖音限流是什么意思 抖音为什么突然限流是由B2B101网站()为您收集修改整理而来,更多相关内容请关注B2B101网站b2b营销推广栏目. 抖音的流量来源于两方面,一方面来自于关注的粉丝,另一方面 ...
- php限制接口访问次数_令牌桶限流思路分享(PHP+Redis实现机制)
一 .场景描述 在开发接口服务器的过程中,为了防止客户端对于接口的滥用,保护服务器的资源, 通常来说我们会对于服务器上的各种接口进行调用次数的限制.比如对于某个 用户,他在一个时间段(interval ...
- SentinelResource注解配置中_客户自定义限流处理_削峰填谷_流量控制_速率控制_服务熔断_服务降级---微服务升级_SpringCloud Alibaba工作笔记0046
技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 接下来咱们解决上一节说到的问题
- 头条限流是什么原因_今日头条限流吗 头条号限流是什么状态
头条号突然被限流了是什么原因? 我不在乎这个!有些人会对他们写的东西感兴趣,并会继续努力工作.没人看到,自己的水平太差了,限制在极限上,不要指望在这里发财或出名!(不管怎样,我不知道我是否有限)只要快 ...
最新文章
- 黄牛凭什么抢走我们的票?
- vantui框架switch上显示提示文字_?Switch主机账号官网注册教程
- HDU1824 2-sat
- python3字符串拼接_Python3基础 str + 字符串变量拼接
- HttpContext
- 浅谈:国内软件公司为何无法做大做强?
- Glide-Android下高效加载多媒体文件
- xs资料网-jdpaint编程图档下载_限时下载 | 西门子、三菱、欧姆龙PLC电气设计与编程自学宝典(3册)...
- 载入java VM 时Windows 出现错误:2
- 教你如何查看加密的QQ空间和加密的QQ相册
- mysql ndb存储引擎_ndb 存储引擎
- Python之拉盖尔多项式
- R语言置信区间计算(confidence interval)、计算比例值对应的置信区间、为比例值构建95%执行区间、使用glue包把最终结果以标准格式输出
- std::cerr与std::cout区别
- 创建支持多种屏幕尺寸的Android应用
- 华为云计算HCIE之oceanstor仿真器的使用操作
- 华为笔记本鸿蒙的出了吗,鸿蒙OS笔记本要来了?但可能不会在国内首发
- 新农慕课python答案第八周_2021年智慧树Python语言应用第五单元章节测试答案选修课网课慕课答案...
- Hankson的趣味题
- 使用Opencv实现魔方识别(一):边缘及位置识别
热门文章
- #2284. 接水果(fruit)
- 使用vs2010编译CCV1.5
- html5语言论文,关于HTML5论文
- 【Educational Codeforces Round 138】A. Cowardly Rooks
- 12-24更新-下载AIMP 3音乐播放器Build 970 RC 3
- 有趣的代码:一行Python代码能干嘛?
- 我自己的java基础
- EEPROM数据丢失
- linux下网站平台的搭建——apache +PHP+mysql
- html怎么给图片加倒影,通过一张图教会你CSS3倒影的实现