博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Alibaba开源组件-分布式流量控制框架sentinel初探
阅读量:5288 次
发布时间:2019-06-14

本文共 3234 字,大约阅读时间需要 10 分钟。

Alibaba开源组件-分布式流量控制框架sentinel初探

版权声明:本文为博主原创文章,遵循版权协议,转载请附上原文出处链接和本声明。
本文链接:

Sentinel 是什么?

还是皮一下吧详细的介绍在Alibaba已经介绍的很详细了。

如何使用:

其实也就三个步骤:
1、添加依赖
目前的最新的版本是0.2

com.alibaba.csp
sentinel-core
0.2.0
  • 1
  • 2
  • 3
  • 4
  • 5

2、初始化资源

需要使用如下的代码块将 你自己的代码块给包围起来。

Entry entry = null;try {    entry = SphU.entry(resource);	//我的代码块	doSomething();  } catch (BlockException e1) {    //怎么处理那些被阻塞的请求} finally {    if (entry != null) {        entry.exit();    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

在Sentinel中,对那些被阻塞的请求,都是用catch到BlockException异常的方式进行处理的。

3、定义流量控制规则

Sentinel定义了三种规则对象,分别是:

FlowRule:流量控制规则DegradeRule:熔断降级规则SystemRule:系统负载规则
  • 1
  • 2
  • 3
  • 4
  • 5

我们需要定义的规则的参数都是对应这些类的属性。这三个规则分别对应者三个RuleManager来加载规则。比如对于流量控制规则,使用FlowRuleManager.loadRules(List rules)来加载定义好的流控规则,从API可以看出,定义的规则可以不止一个。

定义流量控制规则一个demo如下:

publicp  static void initFlowRules(String resource){        List rules = new ArrayList();        FlowRule rule = new FlowRule();        rule.setResource(resource); //资源名        rule.setGrade(RuleConstant.FLOW_GRADE_QPS); //限流阈值类型,此处为	qps类型        rule.setCount(5);   //限流阈值,表示每秒钟通过5次请求        rules.add(rule);    //将定义好的rule放在List中        FlowRuleManager.loadRules(rules);    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

详细demo如下:

package com.alibaba.alibabaSentinel.test;/** * * Copyright: Copyright (c) 2018 Jun_Zhou* * @ClassName: SentinelTest.java* @Description: 分布式流量框架sentinel测试程序;* * @version: v1.0.0* @author: JunZhou* @Email: 1769676159@qq.com* @Site: CERNO* @date: 2018年12月9日 下午5:57:51 */import java.util.ArrayList;import java.util.List;import org.junit.Test;import com.alibaba.csp.sentinel.Entry;import com.alibaba.csp.sentinel.SphU;import com.alibaba.csp.sentinel.slots.block.BlockException;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;public class SentinelTest{	static int executedNumber = 0;		@Test	public void test01()	{		String resourceName = "qpsSentinel";		initFlowRules(resourceName);    //上面定义的规则		for (int i = 0; i < 10; i++)		{			Entry entry = null;			try			{				entry = SphU.entry(resourceName);				//我的代码块				doSomething();			}			catch (BlockException e1)			{				e1.printStackTrace();   //直接将异常打出来			}			finally			{				if (entry != null)				{					entry.exit();				}			}		}	}		public static void doSomething()	{		// TODO Auto-generated method stub		executedNumber++;		System.out.print("-------CurrentExecutedNumber-------" + executedNumber);	}		@SuppressWarnings({ "rawtypes", "unchecked" })	static void initFlowRules(String resource)	{		List rules = new ArrayList();		FlowRule rule = new FlowRule();		rule.setResource(resource); //资源名		rule.setGrade(RuleConstant.FLOW_GRADE_QPS); //限流阈值类型,此处为qps类型		rule.setCount(5);   //限流阈值,表示每秒钟通过5次请求		rules.add(rule);    //将定义好的rule放在List中		FlowRuleManager.loadRules(rules);	}	}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82

运行结果:

在这里插入图片描述

转载于:https://www.cnblogs.com/think90/p/11443376.html

你可能感兴趣的文章
Oracle8i Internal Services
查看>>
文件系统---- 日志功能
查看>>
项目整合Spring Security后登陆成功后首页采用iframe不能实现功能的小坑
查看>>
一个简单的分布式事务系统的实现(订单系统)
查看>>
Makefile生成多个可执行文件
查看>>
C#导出Excel总结
查看>>
面试题12: 矩阵中的路径
查看>>
正则表达式(Regular Expression)
查看>>
kafka原理
查看>>
List中的set方法和add方法
查看>>
浅入深出Vue:注册
查看>>
JS框架设计之对象扩展一种子模块
查看>>
第一个C#程序
查看>>
SSH框架中关于clob字段的处理跟踪
查看>>
A4纸的象素分辨率计算[转]
查看>>
sql server 对数运算函数log(x)和log10(x)
查看>>
中国剩余定理(模板+详解)
查看>>
POST JSON (字典 自定义类转为JSON上传)
查看>>
天下码农苦外包公司久矣
查看>>
css小工具
查看>>