分布式系统的流量防卫兵Sentinel

简单说,sentinel是分布式系统的流量防卫兵,是阿里巴巴开源的一套用于服务容错的综合性解决方案。随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。

Sentinel 分为两个部分:

核心库(Java 客户端)不依赖任何框架/库,能够运行于所有 Java 运行时环境,同时对 Dubbo / Spring Cloud 等框架也有较好的支持。

控制台(Dashboard)基于 Spring Boot 开发,打包后可以直接运行,不需要额外的 Tomcat 等应用容器

怎么使用呢

第一步:POM如下

<dependency>

<groupId>com.alibaba.csp</groupId>

<artifactId>sentinel-core</artifactId>

<version>1.8.3</version>

</dependency>

第二步:JAVA代码中用它

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();

    }

  }

    }

}

第三步:在initFlowRules方法中插入限流逻辑

private static void initFlowRules(){

    List<FlowRule> rules = new ArrayList<>();

    FlowRule rule = new FlowRule();

    rule.setResource("HelloWorld");

    //通过QPS来限流

    rule.setGrade(RuleConstant.FLOW_GRADE_QPS);

    //设置QPS为20.

    rule.setCount(20);

    rules.add(rule);

    FlowRuleManager.loadRules(rules);

}

第四步:运行起来看效果

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容