Spring cloud微服务安全实战-6-9sentinel之熔断降级
来讲一下降级规则

服务会互相调用,服务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之熔断降级的更多相关文章
- 《Spring Cloud微服务 入门 实战与进阶》
很少在周末发文,还是由于昨晚刚收到实体书,还是耐不住性子马上发文了. 一年前,耗时半年多的时间,写出了我的第一本书<Spring Cloud微服务-全栈技术与案例解析>. 时至今日,一年的 ...
- Spring Cloud微服务安全实战_00_前言
一.前言: 一直以来对服务安全都很感兴趣,所以就学习.这是学习immoc的 jojo老师的 <Spring Cloud微服务安全实战课程>的笔记,讲的很好. 课程简介: 二.最终形成的架 ...
- Spring cloud微服务安全实战_汇总
Spring cloud微服务安全实战 https://coding.imooc.com/class/chapter/379.html#Anchor Spring Cloud微服务安全实战-1-1 课 ...
- Spring Cloud微服务Sentinel+Apollo限流、熔断实战总结
在Spring Cloud微服务体系中,由于限流熔断组件Hystrix开源版本不在维护,因此国内不少有类似需求的公司已经将眼光转向阿里开源的Sentinel框架.而以下要介绍的正是作者最近两个月的真实 ...
- Spring Cloud微服务安全实战_4-5_搭建OAuth2资源服务器
上一篇搭建了一个OAuth2认证服务器,可以生成token,这篇来改造下之前的订单微服务,使其能够认这个token令牌. 本篇针对订单服务要做三件事: 1,要让他知道自己是资源服务器,他知道这件事后, ...
- Spring Cloud微服务安全实战_4-3_订单微服务&价格微服务
实现一个场景: 订单微服务: POM: <?xml version="1.0" encoding="UTF-8"?> <project xml ...
- Spring cloud微服务安全实战 最新完整教程
课程资料获取链接:点击这里 采用流行的微服务架构开发,应用程序访问安全将会面临更多更复杂的挑战,尤其是开发者最关心的三大问题:认证授权.可用性.可视化.本课程从简单的API安全入手,过渡到复杂的微服务 ...
- Spring cloud微服务安全实战-6-8sentinel限流实战
阿里2018年开源的. 简单来说就是干三件事,最终的结果就是保证你的服务可用,不会崩掉.保证服务高可用. 流控 先从最简单的场景来入手. 1.引用一个依赖, 2,声明一个资源. 3.声明一个规则 注意 ...
- Spring cloud微服务安全实战-6-4权限控制改造
授权,权限的控制 令牌里的scope包含fly就有权限访问.根据Oauth的scope来做权限控制, 要让@PreAuthorize生效,就要在启动类里面写一个注解. 里面有一个属性叫做,就是在方法的 ...
- Spring cloud微服务安全实战-6-2JWT认证之认证服务改造
首先来解决认证的问题. 1.效率低,每次认证都要去认证服务器调一次服务. 2.传递用户身份,在请求头里面, 3.服务之间传递请求头比较麻烦. jwt令牌. spring提供了工具,帮你在微服务之间传递 ...
随机推荐
- MyBatis-Plus-Generator配置
本文仅对使用MyBatis-Plus的代码生成器配置做保存,适合使用了该插件的童鞋做参考. 内部有大量默认配置,有性趣的童鞋可以研究下源码. ps:官方文档更齐全http://mp.baomidou. ...
- dt6.0之mip改造-img正则替换mip-img
最近没事,打算把自己的小项目改造为mip,进行测试学习,想把资讯栏目:http://zhimo.yuanzhumuban.cc/news/.全部改造为mip.但是MIP改造一项是:图片标签的改造.而且 ...
- keras模块学习之Sequential模型学习笔记
本笔记由博客园-圆柱模板 博主整理笔记发布,转载需注明,谢谢合作! Sequential是多个网络层的线性堆叠 可以通过向Sequential模型传递一个layer的list来构造该模型: from ...
- 关于axios请求携带cookie以及封装
axios跨域携带cookie需要配置 axios跨域发送请求的时候默认不会带上cookie的 + withCredentials的情况下,后端要设置Access-Control-Allow-Orig ...
- commons-dbutils 字段名称转换,支持驼峰字段名
你能遇到的问题,只要是普遍存在的,大家都会遇到,那么,就一定有现成的解决方案. 在阅读 commons-dbutils 的文档时, BeanHandler 的第二个参数可以达到这个目的.只需传入一个实 ...
- 7、基本命令-Crontab定时调度
在Linux中,自带调度工具功能crontab,针对用户(每个用户都可以调度自己的任务) 创建定时任务 crontab -e:创建一个定时任务 添加内容 crontab基本定义 语法:* * * * ...
- SpringBoot测试Controller层
一.准备工作 1.导入测试依赖 <dependency> <groupId>org.springframework.boot</groupId> <artif ...
- Tensorflow细节-P190-输入文件队列
以下代码要学会几个地方 1.filename = ('data.tfrecords-%.5d-of-%.5d' % (i, num_shards)) 这个东西就是要会data.tfrecords-%. ...
- am335x system upgrade kernel i2c rtc eeprom(六)
1 Scope of Document This document describes i2c bus hardware design and support i2c-devices: ee ...
- EL获取域中的数据
EL(Expression Language)是表达式语言,EL的使用可以减少JAVA代码的书写. 1.EL表达式中的常量: <body bgcolor="#7fffd4"& ...