zoukankan      html  css  js  c++  java
  • 轻量级熔断降级框架 alibaba sentinel 应用

    一、简介:

    wiki:https://github.com/alibaba/Sentinel/wiki

    选择:

    ♥ 开源,成熟(功能完备、实际应用),活跃(功能维护及拓展)

    ♥ 更轻量:依赖资源少;api方式或者注解方式资源定义;提供扩展入口(自定义slot规则)

    ♥ 性能损耗小:只有在业务单机量级超过 25W QPS 的时候才会有一些显著的影响(5% - 10% 左右)

    ♥♥ 资源,规则分离:埋点资源,按需配置应用规则

    核心:资源 + 规则

    资源:万物皆资源,通过API定义的任何代码

    规则:系统保护、限流,熔断降级等规则

    总体框架:

    资源Entry对象 + slot chain

    熔断降级:

    隔离方式:信号量,控制并发线程数(规避线程池隔离方式弊端:预设线程池资源 +上下文切换)

    降级策略:

    ♦ 平均响应时间 (DEGRADE_GRADE_RT=0):秒级,passCount>=5

    ♦ 异常比例 (DEGRADE_GRADE_EXCEPTION_RATIO=1):秒级,qps >= 5

    ♦ 异常数 (DEGRADE_GRADE_EXCEPTION_COUNT=2):分钟级

    怎么使用:

    定义埋点资源

    +

    配置规则:动态

    二、Sentinel 配置:

    1、引入依赖:

    2、添加配置:

    3、规则数据源配置:

    a)自定义pull型规则动态数据源:服务每秒拉取配置,有变更则更新规则应用

    数据源定义:

    规则配置:uc:rules:degrade

    [{

    "resource": "xxxResource", //应用资源名称

    "count": 0.5, //根据 grade 设置,代表 响应时间阈值 | 异常比例(异常数占总数比例)| 异常阈值

    "grade": 1, //降级策略 0 平均响应时间 1 异常比例 2 异常数

    "limitApp": "default",

    "timeWindow": 4 //时间窗口,单位 s,触发规则后,在接下的时间窗口之内,对这个方法的调用都会自动地熔断

    } ]

    b)apollo动态配置源

    依赖:

    配置:

    配置文件:yml文件

     

  • 相关阅读:
    CentOS在线安装RabbitMQ3.7
    php redis的GEO地理信息类型
    (PHP)redis Zset(有序集合 sorted set)操作
    (PHP)redis Set(集合)操作
    (PHP)redis Hash(哈希)操作
    (PHP)redis List(列表)操作
    php cURL error 60
    go build 不同系统下的可执行文件
    windows下改变go的gopath
    线程池简要学习[转]
  • 原文地址:https://www.cnblogs.com/niejunlei/p/12186734.html
Copyright © 2011-2022 走看看