资深架构师带你深入认识,Sentinel

Sentinel

分布式系统的流量哨兵,以流量为切入点,对比 Redis 的哨兵模式可以得出 Sentinel 在微服务中的作用是对流量进行监控与管理,例如流量的控制,熔断降级,系统负载保护等。
Sentinel 的主要特性:

image

Sentinel 的开源生态:

image

Sentinel 分为两个部分:

  • 核心库(Java 客户端)不依赖任何框架/库,能够运行于所有 Java 运行时环境,同时对 Dubbo / Spring Cloud 等框架也有较好的支持。
  • 控制台(Dashboard)基于 Spring Boot 开发,打包后可以直接运行,不需要额外的 Tomcat 等应用容器。

Quick Start

下面的例子将展示应用如何三步接入 Sentinel。同时,Sentinel 也提供所见即所得的控制台,可以实时监控资源以及管理规则。

STEP 1. 在应用中引入 Sentinel Jar 包

如果应用使用 pom 工程,则在 pom.xml 文件中加入以下代码即可:

com.alibaba.csp

sentinel-core

1.7.0

注意: 从 Sentinel 1.5.0 开始仅支持 JDK 1.7 或者以上版本。Sentinel 1.5.0 之前的版本最低支持 JDK 1.6。

STEP 2. 定义资源

接下来,我们把需要控制流量的代码用 Sentinel API SphU.entry(“HelloWorld”) 和 entry.exit() 包围起来即可。在下面的例子中,我们将 System.out.println(“hello wolrd”); 作为资源,用 API 包围起来。对于新手小白想更轻松的学好Java提升,Java架构,web开发、大数据,数据分析,人工智能等技术,这里给大家分享系统教学资源,扩列下我尉(同英):1253431195【教程/工具/方法/解疑】
参考代码如下:

public static void main(String[] args) {

initFlowRules();

while (true) {

Entry entry = null;

try {

entry = SphU.entry(“HelloWorld”);

/您的业务逻辑 - 开始/

System.out.println(“hello world”);

/您的业务逻辑 - 结束/

} catch (BlockException e1) {

/流控逻辑处理 - 开始/

System.out.println(“block!”);

/流控逻辑处理 - 结束/

} finally {

if (entry != null) {

entry.exit();

}

}

}

}

完成以上两步后,代码端的改造就完成了。

STEP 3. 定义规则

接下来,通过规则来指定允许该资源通过的请求次数,例如下面的代码定义了资源 HelloWorld 每秒最多只能通过 20 个请求。

private static void initFlowRules(){

List rules = new ArrayList<>();

FlowRule rule = new FlowRule();

rule.setResource(“HelloWorld”);

rule.setGrade(RuleConstant.FLOW_GRADE_QPS);

// Set limit QPS to 20.

rule.setCount(20);

rules.add(rule);

FlowRuleManager.loadRules(rules);

}

完成上面 3 步,Sentinel 就能够正常工作了。

STEP 4. 检查效果

Demo 运行之后,我们可以在日志 ~/logs/csp/${appName}-metrics.log.xxx 里看到下面的输出:

|–timestamp-|------date time----|-resource-|p |block|s |e|rt

1529998904000|2018-06-26 15:41:44|HelloWorld|20|0 |20|0|0

1529998905000|2018-06-26 15:41:45|HelloWorld|20|5579 |20|0|728

1529998906000|2018-06-26 15:41:46|HelloWorld|20|15698|20|0|0

1529998907000|2018-06-26 15:41:47|HelloWorld|20|19262|20|0|0

1529998908000|2018-06-26 15:41:48|HelloWorld|20|19502|20|0|0

1529998909000|2018-06-26 15:41:49|HelloWorld|20|18386|20|0|0

其中 p 代表通过的请求,block 代表被阻止的请求,s 代表成功执行完成的请求个数,e 代表用户自定义的异常,rt 代表平均响应时长。对于新手小白想更轻松的学好Java提升,Java架构,web开发、大数据,数据分析,人工智能等技术,这里给大家分享系统教学资源,扩列下我尉(同英):1253431195【教程/工具/方法/解疑】

可以看到,这个程序每秒稳定输出 “hello world” 20 次,和规则中预先设定的阈值是一样的。

STEP 5. 启动 Sentinel 控制台

您可以参考 Sentinel 控制台文档 启动控制台,可以实时监控各个资源的运行情况,并且可以实时地修改限流规则。

image

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值