TNBLOG
首页
博客
视频
资源
问答
猿趣
手机
关于
搜索
收藏
便签
笔记
消息
创作
登录
剑轩
故如虹,知恩;故如月,知明
博主信息
排名
6
文章
6
粉丝
16
评论
8
文章类别
CSS
15篇
微服务
41篇
Git
14篇
.NET
102篇
移动开发
33篇
软件架构
23篇
.NET Core
119篇
.NET MVC
11篇
英语
3篇
随笔
86篇
Bootstrap
3篇
Redis
21篇
编辑器
10篇
Js相关
15篇
虚拟化
8篇
更多
Oracle
7篇
Python
14篇
数据库
26篇
EF
17篇
微信
3篇
前端
151篇
消息队列
6篇
docker
41篇
多线程
1篇
Java
4篇
软件基础
2篇
C++
2篇
WCF
7篇
Linux
7篇
nginx
5篇
K8S
9篇
ABP
2篇
最新文章
最新评价
{{item.articleTitle}}
{{item.blogName}}
:
{{item.content}}
关于我们
ICP备案 :
渝ICP备18016597号-1
网站信息:
2018-2024
TNBLOG.NET
技术交流:
群号656732739
联系我们:
contact@tnblog.net
欢迎加群
欢迎加群交流技术
原
.net core3.1使用API网关Ocelot四:实现熔断
7406
人阅读
2020/9/1 14:40
总访问:
3947777
评论:
0
收藏:
0
手机
分类:
微服务
接上一篇:.net core3.1使用API网关Ocelot三:请求缓存与限流 https://www.tnblog.net/aojiancc2/article/details/4983 熔断的意思是停止将请求转发到下游服务。当下游服务已经出现故障的时候再请求也是徒劳,并且还会增加下游服务器和API网关的负担,类似保险丝。Ocelot熔断使用的是Polly,我们只需要为路由做一些简单配置即可 <br/> tn3#添加Polly依赖 先下载Polly依赖 ``` install-package Ocelot.Provider.Polly ``` 然后在ConfigureServices中添加Polly的依赖,注意是在AddOcelot()后点出来的 ![](https://img.tnblog.net/arcimg/aojiancc2/7fb35b129f4848cd8f02c23c7e077724.png) <br/> tn3#添加熔断配置 ``` "QoSOptions": { "ExceptionsAllowedBeforeBreaking": 2, // 允许多少个异常请求 "DurationOfBreak": 5000, // 熔断的时间,单位为毫秒 "TimeoutValue": 3000 // 如果下游请求的处理时间超过多少则视如该请求超时 } ``` 这个配置的意思是,3秒算一次超时(TimeoutValue:3000),然后允许的异常请求是2次(ExceptionsAllowedBeforeBreaking:2),如果达到了允许异常请求的上限就触发5秒钟的熔断时间(DurationOfBreak:5000) 如图 ![](https://img.tnblog.net/arcimg/aojiancc2/1efbe8784f5b4160843016655962a0aa.png) <br/> tn3#修改一下接口方便模拟一下测试 ![](https://img.tnblog.net/arcimg/aojiancc2/f6b527c8db7047b8a4127e1e725e4508.png) 这里我们可以使用传递一个延迟时间的方式来测试,可以很方便的把熔断的方式都测试出来 #####传递3秒以下的都能被正常的访问到 ![](https://img.tnblog.net/arcimg/aojiancc2/7c025a8e7f2847f193c8b840c36b2979.png) #####但是传递3000以上的就会出现服务访问不到的情况 说明熔断的超时配置起作用了 ![](https://img.tnblog.net/arcimg/aojiancc2/532cd51f60d74ef1add5cd7207bde62d.png) 如果只出现一次马上把延迟时间修改为3000以下就会可以马上访问成功,因为还没有达到配置熔断的限制次数所以还可以立即访问到。但是要注意这一次也会访问不到,因为超过了我们设置的超时时间,不要把这一次的超时和触发熔断的时间搞混了,还要注意如果设置超时时间是3000,测试的时候弄成3001,3002这种和超时时间极为接近的时间可能会触发不了,所以测试的时候要适当的把测试时间改大一点 但是当我们尝试让他两次都超时后,就会触发熔断时间,就是你把延迟时间修改为3000以下(模拟接口已经恢复正常了),还是不能被立即访问到。要过5秒后才能重新请求,因为我上面DurationOfBreak配置的是5000 项目下载: https://download.tnblog.net/resource/index/3e2f58ea38ce44679ee1d28add4c4e2b
欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739
👈{{preArticle.title}}
👉{{nextArticle.title}}
评价
{{titleitem}}
{{titleitem}}
{{item.content}}
{{titleitem}}
{{titleitem}}
{{item.content}}