• sentinel篇1官方快速限流指引


    前言

    • 最近 API 在改造,要开始考虑限流问题了。团队项目技术栈主为阿里系,自然就是 sentinel 了。
    • 开始前,一定要检查官方各开源组件版本对照:https://github.com/alibaba/spring-cloud-alibaba/wiki/版本说明,找到正确版本能避掉很多坑!
    • 本系列版本和demo可文末参考

    快速开始

    目标代码块快速限流

    • pom
    <dependency>
    	<groupId>com.alibaba.csp</groupId>
    	<artifactId>sentinel-core</artifactId>
    	<version>${sentinel.version}</version>
    </dependency>
    
    • main方法
    public class Demo0 {
    	public static void main(String[] args) {
    		// 配置规则.
    		initFlowRules();
    
    		while (true) {
    			// 1.5.0 版本开始可以直接利用 try-with-resources 特性
    			try (Entry entry = SphU.entry("HelloWorld")) {
    				// 被保护的逻辑
    				protectedCodes();
    			} catch (BlockException ex) {
    				// 处理被流控的逻辑
    				System.err.println(DateUtil.formatDateTime(new Date()) + " blocked!");
    			}
    			
    			try {
    				Thread.sleep(RandomUtil.randomLong(300L));
    			} catch (InterruptedException e) {
    				e.printStackTrace();
    			}
    		}
    	}
    
    	private static void protectedCodes() {
    		System.out.println(DateUtil.formatDateTime(new Date()) + " hello world");
    	}
    
    	private static void initFlowRules() {
    		List<FlowRule> rules = new ArrayList<>();
    		FlowRule rule = new FlowRule();
    		rule.setResource("HelloWorld");
    		rule.setGrade(RuleConstant.FLOW_GRADE_QPS);
    		// Set limit QPS to 20.
    		rule.setCount(3);
    		rules.add(rule);
    		FlowRuleManager.loadRules(rules);
    	}
    }
    
    • 控制台输出
    2021-11-11 15:12:38 hello world
    2021-11-11 15:12:38 hello world
    2021-11-11 15:12:39 hello world
    2021-11-11 15:12:39 hello world
    2021-11-11 15:12:39 blocked!
    2021-11-11 15:12:39 hello world
    2021-11-11 15:12:39 blocked!
    2021-11-11 15:12:39 blocked!
    2021-11-11 15:12:39 blocked!
    2021-11-11 15:12:40 hello world
    2021-11-11 15:12:40 hello world
    2021-11-11 15:12:40 blocked!
    2021-11-11 15:12:40 hello world
    2021-11-11 15:12:40 blocked!
    2021-11-11 15:12:40 blocked!
    2021-11-11 15:12:40 blocked!
    2021-11-11 15:12:41 hello world
    2021-11-11 15:12:41 hello world
    2021-11-11 15:12:41 hello world
    2021-11-11 15:12:41 blocked!
    2021-11-11 15:12:42 hello world
    2021-11-11 15:12:42 hello world
    2021-11-11 15:12:42 blocked!
    2021-11-11 15:12:42 hello world
    2021-11-11 15:12:42 blocked!
    2021-11-11 15:12:42 blocked!
    2021-11-11 15:12:42 blocked!
    2021-11-11 15:12:42 blocked!
    2021-11-11 15:12:43 hello world
    
    • 限流阻断OK!

    sentinel-dashboard

    • 上面快速验证了限流功能
    • 我们肯定希望对限流效果和限流规则可视化观察和动态配置
    • 官方的 sentinel-dashboard 就是这个作用
    • 首先下载官方的 sentinel-dashboard jar包或者下载源码本地跑起调试,建议后者。一定要注意版本!官方下载地址
    • 下载源码构建运行后,浏览器访问控制台即可(默认端口8080,默认登录密码 sentinel/sentinel)

    sentinel“资源”注册到控制台

    • 刚刚的demo引入pom依赖
    • Java启动参数添加-Dcsp.sentinel.dashboard.server=localhost:8080,使本地应用与dashboard能够通信。
    • 启动应用并刷新 dashboard 查看实时监控情况
    • 可对注册的“资源”实时配置流控和降级规则,也可配置全局的【系统规则】
    • 图示↓
      sentinel001.jpg

    有效参考

  • 相关阅读:
    splice九重天
    数组
    数组方法valueOf的用武之地
    已经有一个项目的源码如何将其推送到远程服务器
    【holm】并行Linq(PLinq)
    【holm】C# 使用Stopwatch准确测量程序运行时间
    【holm】url,href,src三者之间的关系
    【holm】C#线程监视器Monitor类使用指南
    【holm】MySQL锁机制
    【holm】MySQL事务的使用
  • 原文地址:https://www.cnblogs.com/noodlerkun/p/15541109.html
Copyright © 2020-2023  润新知