Alibaba开源组件-分布式流量控制框架sentinel初探
Alibaba开源组件-分布式流量控制框架sentinel初探
Sentinel 是什么?
还是皮一下吧详细的介绍在Alibaba已经介绍的很详细了。
如何使用:
其实也就三个步骤:
1、添加依赖
目前的最新的版本是0.2
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-core</artifactId>
<version>0.2.0</version>
</dependency>
- 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
运行结果:
Alibaba开源组件-分布式流量控制框架sentinel初探的更多相关文章
- 【转】Dubbo是Alibaba开源的分布式服务框架
Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合).从服务模型的角度来看,Dubbo采用的是一种非常简单的模 ...
- Dubbo阿里Alibaba开源的分布式服务框架
[获奖公布]"我的2016"主题征文活动 程序猿全指南,让[移动开发]更简单! [观点]移动原生App开发和HTML 5开发,你更看好哪个? 博客的神秘功能 D ...
- 开源的分布式事务框架 springcloud Alibaba Seata 的搭建使用 一次把坑踩完。。。
seata的使用 1. Seata 概述 Seata 是 Simple Extensible Autonomous Transaction Architecture 的简写,由 feascar 改名而 ...
- 微软开源 WCF 分布式服务框架,并入 .NET 基金会项目
微软北京时间2015.5.20 在其 .NET Foundation GitHub 开源项目页中开放了 WCF 分布式服务框架的代码.WCF突然之间成为一个热门话题,在各大网站上都有不同的报道:dot ...
- Java分布式服务框架Dubbo初探(待实践)
Dubbo是什么? Dubbo[]是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案. 其核心部分包含: 远程通讯: 提供对多种基于长连接的NIO框架抽象封 ...
- 阿里分布式服务框架Dubbo的架构总结
Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合).从服务模型的角度来看,Dubbo采用的是一种非常简单的模 ...
- 快速了解阿里微服务热门开源分布式事务框架——Seata
一.Seata 概述 Seata 是 Simple Extensible Autonomous Transaction Architecture 的简写,由 feascar 改名而来. Seata 是 ...
- dubbo分布式rpc框架用法
dubbo是阿里巴巴开源的分布式服务框架,致力于提供高性能和透明化的rpc远程服务调用方案,以及soa服务治理方案,如果没有分布式需求,是不需要dubbo的,分布式环境dubbo的使用架构官方给出了一 ...
- 5个强大的Java分布式缓存框架推荐
在开发中大型Java软件项目时,很多Java架构师都会遇到数据库读写瓶颈,如果你在系统架构时并没有将缓存策略考虑进去,或者并没有选择更优的 缓存策略,那么到时候重构起来将会是一个噩梦.本文主要是分享了 ...
随机推荐
- 统计mysql某个数据库的表数量以及表记录数
统计MySQL中某个数据库中有多少张表 SELECT count(*) TABLES, table_schema FROM information_schema.TABLES where ...
- Word文档怎么从第二页加页码
1.首先将光标放到首页的最后位置 2.“页面布局”—“分隔符”—“下一页” 3.“插入”—“页码”—选一种样式的页码 4.将光标定位到第二页的页脚处,“设计”—取消“链接到前一条页眉” 5.将第二页的 ...
- vue中getters不更新数据解决办法
在 Vue.js devtools 中看到,我们明明更改了仓库 state 中的数据,但是我们的 getters 就是值渲染一次之后就不再重新渲染了 解决方法:使用 Vue.set() 方法,就是专门 ...
- Oracle 表空间扩容
1 系统表空间扩容 注:表空间监测或扩容方式很多,这里只提供一种方便使用的方法 1)查询SQL 注:需要输入百分比,如:90,就可查出使用率超过90%的表空间, with t as (select b ...
- shiro环境搭建及基本操作
一.pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www ...
- koa 应用生成器
通过应用 koa 脚手架生成工具 可以快速创建一个基于 koa2 的应用的骨架 1.全局安装 npm install koa-generator -g 2.创建项目 koa koa_demo 3.安装 ...
- html5-meta标签和搜索引擎
emta标签的组成: meta标签分两大部分:HTTP-EQUIV 和 NAME 变量. HTTP-EQUIV:HTTP-EQUIV类似于HTTP的头部协议,它回应给浏览器一些有用的信息,以帮助 ...
- 二、WebSphere Application Server上部署war包并访问
进入我们was服务器控制台之后我们直接按照下图操作: 2.选择要上传的war包,下一步 3.一直下一步,步骤4注意填好“上下文根”,然后继续下一步,直到完成. 4.点击保存到主配置 5.应用程序> ...
- Jsp中的四个域对象
四个域对象: pageContext page域 request request域 session session域 application ...
- LoadRunner书籍推荐
精通软件性能测试与LoadRunner实战 性能技巧查询 软件性能测试过程详解与案例剖析----读 性能测试理论 性能测试进阶指南-------loadrunner 9.1实战 这是一本比loadru ...