20. 首汽sentinel简介

一、sentinel简介

Sentinel是一个具有流量控制、熔断降级、系统负载保护等多个维度保护服务稳定性的开源框架

二、使用sentinel 的目的

通过使用Sentinel, 当检测到调用链路中某个资源出现不稳定的表现,例如请求响应时间长或异常比例升高的时候,则对这个资源的调用进行限制,让请求快速失败,避免影响到其它的资源而导致级联故障。

当异常发生时,非核心链路走降级策略,降低一定的用户体验来,保证系统的稳定性..

三、使用方式

步骤一: 升级组件版本到1.1.5或者以上

1

2

3

4

5

<dependency>

    <groupId>com.sq</groupId>

    <artifactId>sq-component-sentinel</artifactId>

    <version>1.1.5.1</version>

</dependency>

步骤二: 把切面类纳入spring管理

1

2

<bean class="com.sq.sentinel.aspectj.SqSentinelResourceAspect"/>

 Boot工程可以通过注解配置方式

步骤三 方法上加注解: SqSentinelResource

1

2

3

4

5

6

7

8

9

10

11

@SqSentinelResource(configName = "sq-sentinel",

 

        value = "getCompanyBlackDriver",

 

        blockHandler = "getCompanyBlackDriverFallback",blockHandlerClass = {BusinessServiceFallback.class},

 

        fallback = "getCompanyBlackDriverFallback",fallbackClass = {BusinessServiceFallback.class})

 

public List<Integer> getCompanyBlackDriver(Integer businessId) {

 Return null;

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

configName:对应配置中心的xml文件名

 value: 代表一个资源,名称自定义(必须保证在一个项目里唯一)

 blockHandler: 当发生降级时会调用指定的函数,

 

降级函数有两种情况:

    1、如果指定的降级函数在本类里,则必须是成员函数

 

    2、不在本类中,则需要指定blockHandlerClass,并且必须是静态函数

 

blockHandlerClass(可选):当降级函数与被降级的函数不在一个类时,需要指定这个参数,并且降级方法需要声明为 static

 

fallback:当发生降级时没指定blockHandler或者不是降级造成的异常则会进入fallback函数。

 

fallbackClass:与blockHandlerClass同理

注意点:

    blockHandler需要与被降级函数 具有同样的返回类型与入参列表,入参列表末尾可以额外加一个BlockException类型入参

    fallback需要与被降级函数 具有同样的返回类型与入参列表

 

降级时调用优先级:

 

    blockHandler  -> fallback -> defaultFallback

步骤四 配置中心配置对应的熔断降级规则

 

1

2

3

4

5

<?xml version="1.0"

encoding="utf-8"?>

<config>

<value>{"flow":[{"resource":"flow1","grade":1,"count":1000}],"degrade":[{"resource":"getCompanyBlackDriver","count":400,"timeWindow":15,"grade":0,"rtSlowRequestAmount":5,"minRequestAmount":5},{"resource":"channelRiskCheck","count":500,"timeWindow":15,"grade":0,"rtSlowRequestAmount":5,"minRequestAmount":5}]}</value>

</config>

步骤五 perf-monitor加入sentinel报警设置

1

2

3

4

5

6

7

8

9

<!--sentinel监控-->

<sentinel>

<monitor key="default">

<quota>

<windowSize>1</windowSize>

<failCount>1</failCount>

</quota>

</monitor>

</sentinel>


四、配置解释

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

{

    // flow这个代表限流的配置规则

    "flow":[{       

            "resource":"flow1",

             "grade":1,

             "count":1000

             }],

     // degrade代表降级的配置规则

    "degrade":[   

        {

        // 这个resource资源名对应上文的SqSentinelResource的value值

         "resource":"getCompanyBlackDriver",

        // 一秒内的平均响应时间ms(N个请求的1秒窗口内的响应时间/请求成功数)

         "count":400,

        // 触发降级后的降级时间窗口期,单位s

         "timeWindow":15,

        // 降级类型, 0 代表按照平均响应时间降级

        "grade":0,

        //响应时间请求数阈值, 针对 grade= 0  的情况

         "rtSlowRequestAmount":5,

         "minRequestAmount":5

        },

        {

    "resource":"getCompanyBlackDriver",

    // 取值 [0,1]

    "count":.0.2,

    "timeWindow":15,

     // 1代表按照 每秒钟的异常占比比率降级

        "grade":1,

    "rtSlowRequestAmount":5,

    // 请求数量阈值,针对    grade  = 1  的情况

        "minRequestAmount":5  

        },

        {

    //  这个resource资源名对应上文的SqSentinelResource的value值

        "resource":"getCompanyBlackDriver",

     //  一分钟的异常数阈值

        "count":100,

        "timeWindow":15,

    // 根据一分钟的异常数来触发熔断

        "grade":2,

        "rtSlowRequestAmount":5,

        "minRequestAmount":5

        }

    ]

}

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值