来讲一下降级规则

服务会互相调用,服务A会有一些服务之间的依赖。

假设服务D的响应时间变长了。A调用D就会卡住了。

熔断,某一个服务出现问题,会把服务拖死。如果A出现,会把依赖A的那些服务拖死。
主要原理是在所有服务的前面加一个熔断器。平常是关闭的,如果发现后面的服务不可用,就提示打不开。
服务A调用服务D的时候,经过熔断器直接返回。不会让你再调用到服务D。这个时候服务A就不会因为服务D的相应时间变慢而在这里有线程堆积,在这等待,这样就解决了服务雪崩的问题。


详细看下熔断器

代码定义降级

degradeRule降级的规则
setGrade降级的策略:

每秒请求数大于等于5,降级规则才会生效。流量太小规则不会生效。

exception_count以分钟为范围


10秒,一般熔断器处于打开状态,到打开状态的一瞬间,之后的10秒钟之内,所有的请求直接就打回来,10秒后会跳到半打开的状态。

完整的代码

降低的规则在流量大于等于5才会生效。所以上面的qps规则刚才是1 一直都不会生效,这里我们改成10

10毫秒以上才会认为服务有问题。所以,订单的方法内 sleep 50毫秒。

重启orderAPI

服务是正常的

比较快速的去点击按钮访问。500就说明 我们的服务被熔断了。

等大概10秒钟,熔断窗口设置的是10秒,10秒之后,可能就会恢复回来。

这就是我们刚才设置的规则

控制台的输出。抛出降级的异常。

服务熔断后,指定另外一个降级逻辑处理

里面的方法名是可以随便起的。这里叫做doOnBlock。

doOnBlock这个方法默认应该在当前的这个类里面。doOnBlock这个方法和create 方法是一样的 只不过多了一个参数。BlockExcepion是所有sentinel异常的父类。流控、降级抛出的异常都是BlockException

异常后会走doBlock方法,并返回一个info

重启orderAPi测试

不管点击多快速 访问这个服务,都不会看到500错误了。因为我服务被熔断了。但是提供了一个降级的逻辑,仍然会有一个返回。

看日志就能看出来。

这就是sentinel对熔断降级的支持

结束

Spring cloud微服务安全实战-6-9sentinel之熔断降级的更多相关文章

  1. 《Spring Cloud微服务 入门 实战与进阶》

    很少在周末发文,还是由于昨晚刚收到实体书,还是耐不住性子马上发文了. 一年前,耗时半年多的时间,写出了我的第一本书<Spring Cloud微服务-全栈技术与案例解析>. 时至今日,一年的 ...

  2. Spring Cloud微服务安全实战_00_前言

    一.前言: 一直以来对服务安全都很感兴趣,所以就学习.这是学习immoc的 jojo老师的 <Spring Cloud微服务安全实战课程>的笔记,讲的很好. 课程简介:  二.最终形成的架 ...

  3. Spring cloud微服务安全实战_汇总

    Spring cloud微服务安全实战 https://coding.imooc.com/class/chapter/379.html#Anchor Spring Cloud微服务安全实战-1-1 课 ...

  4. Spring Cloud微服务Sentinel+Apollo限流、熔断实战总结

    在Spring Cloud微服务体系中,由于限流熔断组件Hystrix开源版本不在维护,因此国内不少有类似需求的公司已经将眼光转向阿里开源的Sentinel框架.而以下要介绍的正是作者最近两个月的真实 ...

  5. Spring Cloud微服务安全实战_4-5_搭建OAuth2资源服务器

    上一篇搭建了一个OAuth2认证服务器,可以生成token,这篇来改造下之前的订单微服务,使其能够认这个token令牌. 本篇针对订单服务要做三件事: 1,要让他知道自己是资源服务器,他知道这件事后, ...

  6. Spring Cloud微服务安全实战_4-3_订单微服务&价格微服务

    实现一个场景: 订单微服务: POM: <?xml version="1.0" encoding="UTF-8"?> <project xml ...

  7. Spring cloud微服务安全实战 最新完整教程

    课程资料获取链接:点击这里 采用流行的微服务架构开发,应用程序访问安全将会面临更多更复杂的挑战,尤其是开发者最关心的三大问题:认证授权.可用性.可视化.本课程从简单的API安全入手,过渡到复杂的微服务 ...

  8. Spring cloud微服务安全实战-6-8sentinel限流实战

    阿里2018年开源的. 简单来说就是干三件事,最终的结果就是保证你的服务可用,不会崩掉.保证服务高可用. 流控 先从最简单的场景来入手. 1.引用一个依赖, 2,声明一个资源. 3.声明一个规则 注意 ...

  9. Spring cloud微服务安全实战-6-4权限控制改造

    授权,权限的控制 令牌里的scope包含fly就有权限访问.根据Oauth的scope来做权限控制, 要让@PreAuthorize生效,就要在启动类里面写一个注解. 里面有一个属性叫做,就是在方法的 ...

  10. Spring cloud微服务安全实战-6-2JWT认证之认证服务改造

    首先来解决认证的问题. 1.效率低,每次认证都要去认证服务器调一次服务. 2.传递用户身份,在请求头里面, 3.服务之间传递请求头比较麻烦. jwt令牌. spring提供了工具,帮你在微服务之间传递 ...

随机推荐

  1. python_并发编程——事件

    1.事件 :通过一个信号来控制多个进程同时执行或者阻塞. 一个信号可以使所有的进程都进入阻塞状态,也可以控制所有的进程接触阻塞,一个事件被创建之后,默认是阻塞状态. from multiprocess ...

  2. Bias vs. Variance(3)---用learning curves来判断bias/variance problem

    画learning curves可以用来检查我们的学习算法运行是否正常或者用来改进我们的算法,我们经常使用learning cruves来判断我们的算法是否存在bias problem/varianc ...

  3. Bias vs. Variance(1)--diagnosing bias vs. variance

    我们的函数是有high bias problem(underfitting problem)还是 high variance problem(overfitting problem),区分它们很得要, ...

  4. LOJ P10176 最大连续和 题解

    每日一题 day29 打卡 Analysis 朴素的DP方程为: dp[i]=max{sum[i]-sum[j-1]}; 对于每个i 需要用单调队列维护最小的sum[j-1] 注意: 1.tail初值 ...

  5. bilibili 高并发实时弹幕系统的实现

    高并发实时弹幕是一种互动的体验.对于互动来说,考虑最多的地方就是:高稳定性.高可用性以及低延迟这三个方面. 高稳定性,为了保证互动的实时性,所以要求连接状态稳定: 高可用性,相当于提供一种备用方案,比 ...

  6. learning java swing 双缓冲和键盘驱动

    import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.In ...

  7. A tow-day exam

    D1 T1l \(des:\) 给出一棵树,判断树上两条路径是否相交 \(sol:\) 判断其中一条路径的两个端点以及两端点的 \(lca\) 是否存在于另一条链上 由于这是一棵树,任一点为根后这样判 ...

  8. 洛谷 P1807 最长路_NOI导刊2010提高(07) 题解

    P1807 最长路_NOI导刊2010提高(07) 题目描述 设G为有n个顶点的有向无环图,G中各顶点的编号为1到n,且当为G中的一条边时有i < j.设w(i,j)为边的长度,请设计算法,计算 ...

  9. javascript生成表格增删改查 JavaScript动态改变表格单元格内容 动态生成表格 JS获取表格任意单元格 javascript如何动态删除表格某一行

    jsp页面表格布局Html代码 <body onload="show()"> <center> <input type="text" ...

  10. PHP查询oracle数据显示乱码问题

    1.Linux下 执行前脚本前先执行一下命令export NLS_LANG="SIMPLIFIED CHINESE_CHINA.AL32UTF8" 2.Windows下在代码里添加 ...