微服务学习总结5(Ocelot+Polly+Consul)
Ocelot缓存
网关除了可以做请求转发外,还可以做缓存功能。
在网关服务的自定配置文件configuration.json中添加缓存配置节点,就可以实现将相同请求在一定时间内返回同一内容,网关直接将后面的请求拦截并处理,请求不会被转发到consul。
"FileCacheOptions": { //缓存设置"TtlSeconds": 10, //ttl秒被设置为10,这意味着缓存将在10秒后过期。(同一地址就返回同一结果)"Region": "" //缓存region ,可以使用administrator API清除
}
在10秒钟之内请求网关地址,返回的是同一个内容:
Ocelot限流
限制请求在1分钟只能最多请求5次,超过5次则不可请求。5秒钟过后可继续请求。要完成这样一个需求,需要用到网关的限流机制。
配置文件configuration.json中添加限流配置节点:
//限流:限制单位时间内请求数量(防爬虫,防ddos等)"RateLimitOptions": {"ClientWhitelist": [], // 白名单"EnableRateLimiting": true, // 是否限流"Period": "1m", // 1s,4m,1h,1d"PeriodTimespan": 5, // 多少秒之后客户端可以重试"Limit": 5 // 一个时间周期最多可以请求的次数}
"GlobalConfiguration": {"RateLimitOptions": { //超过限流"HttpStatusCode": 999 //自定义返回内容}}
RateLimitOptions配置项对请求的次数和时长做具体限制。
RateLimitOptions配置项对限流后返回内容做设置,比如自定义状态码,用999来表示已超过最大访问限流值。
一分钟之内请求超过5次,会返回如下信息:
Ocelot熔断
请求在5秒钟之内没有返回内容,那么本次请求就算超时。要完成这样一个需求,需要用到网关的熔断机制。
使用NuGet在网关项目中引用程序集:Ocelot.Provider.Polly
配置文件configuration.json中添加熔断配置节点:
//熔断:达成某些条件后,接口暂不提供服务"QoSOptions": { //断路器配置,目前Ocelot使用的Polly"ExceptionsAllowedBeforeBreaking": 3, //打开断路器之前允许的例外数量。(允许多少个异常请求)"DurationOfBreak": 60000, //断路器复位之前,打开的时间(毫秒)(熔断时间6秒钟)"TimeoutValue": 1000 //请求超时时间(毫秒)}
用一句话描述上述配置:对http://localhost:9526/ApiService/values/Timeout请求超过1s将会超时,发生三次超时后保持60s熔断。
要检查熔断机制有没有生效,在webapi的控制器中加一个方法:
让线程休息6秒钟。以达到超过配置项中1秒超时的目的。
从浏览器看这个请求返回503,代表请求被服务器拒绝访问。实际已经执行了,从log可以看出:
因为配置了熔断策略,所以这个超过1秒钟的请求被网关认为是超时请求。
可以看到在前4次请求,Time在1000ms之后返回503,在第四次以后发生熔断,请求后立即(Time在100ms左右)返回503。
参考文章:https://www.jianshu.com/p/c7f5f9515962
微服务学习总结5(Ocelot+Polly+Consul)相关推荐
- 微服务学习总结4(网关和consul结合)
先上一张图片: 首先要启动consul服务,用于对三个日志服务的注册和发现.(默认端口8500) 然后启动三个日志服务,端口分别为5726.5727.5728. 最后启动网关服务,用于转发客户端请求, ...
- .NET Core 微服务学习与实践系列文章目录索引(2019版)
Photo :.NET Core 文 | Edison Zhou 2018年,我开始学习和实践.NET Core,并开始了微服务的学习,以及通过各种开源组件搭建服务治理技术方案,并在学习过程中总结了一 ...
- 【干货分享】可能是东半球最全的.NET Core跨平台微服务学习资源
如果你发现还有西半球的资源,烦请相告,不胜感谢! 一.Asp.net Core基础 微软英文官网 .NET Core 微软中文官网 GitHub 用ASP.NET内核和Azure构建现代Web应用程序 ...
- Java微服务学习笔记(一):微服务架构的概念理解
Java微服务学习笔记 Tips:入门学习时粗略整理,仅供参考 (一):架构的基础理解 文章目录 Java微服务学习笔记 前言 一.微服务是什么? 二.常用开源微服务框架演化 1. Dubbo 2. ...
- consul命令行查看服务_Go语言微服务架构实战:第十三节 微服务管理--Docker安装及运行consul节点...
微服务管理--Docker安装及运行consul节点 搭建集群 在真实的生产环境中,需要真实的部署consul集群.在一台机器上想要模拟多台集群部署的效果,有两种方案:一种是借助虚拟机,另一种是借助容 ...
- Spring Cloud 微服务学习与实践
第一章:微服务架构概述 1-1. 系统进化理论概述 在系统架构与设计的实践中,经历了两个阶段,一个阶段是早些年常见的集中式 系统,一个阶段是近年来流行的分布式系统: 集中式系统: 集中式系统也叫单体应 ...
- Java微服务学习路线,启发学习思路,不要死磕
前言 今天讲讲大家都在搞的微服务框架,其实我们一搜都能搜到的,什么SpringCloud的五大组件,然后大家就开始埋头搭环境,最后费了半天功夫能跑了,但实际上对于微服务的理解还是浅尝辄止,今天我们就来 ...
- spring boot 及微服务 学习笔记
最近在进行项目架构的调整,准备从springmvc转换到spring cloud,也就是微服务框架.自然就需要将原有的项目转化为spring boot形式. 微服务 在了解spring boot之前, ...
- .NET Core微服务开发网篇-ocelot
通过上篇我们知道,网关是外部访问的统一入口,本文采用Ocelot作为Api网关. 环境要求: vs2019 .NetCore3.1 Ocelot16.0.1 创建一个产品服务Api站点(AAStore ...
最新文章
- 安装旧版本插件_iOS 应用降级插件,支持任意版本升降
- Windows 2003 R2的文件服务器实施
- Stanford机器学习笔记-6. 学习模型的评估和选择
- 退格键删除input中光标指定的字符串_Linux中的vi 三种模式
- Thread源码分析之join方法
- vb链接mysql登录界面_求大神!有谁会用VB设计用户登陆界面连接到数据库
- (错误记录)git push 报错 403
- html5做咖啡网页素材,HTML5/CSS3咖啡品类切换动画
- JZ6-旋转数组的最小数字
- 陈国君Java程序设计基础笔记和习题
- 用友u8 12.1服务器硬件要求,用友U8_12.1安装操作手册服务器资料全
- 电子元器件选型——电阻
- docker复习:CVE-2016-10033验证
- 三星+t800+原生android,三星T800(GALAXY Tab S WLAN版)一键救砖教程,轻松刷回官方系统...
- 关于黑莓手机 三键重启的操作方法
- 计算机中丢失msvcr100.dll怎么办,会声会影计算机中丢失MSVCR100.dll解决方案-计算机中丢失MSVCR100.dll怎么解决_好特教程...
- Monster: half man, half beast and very scary.
- 当当网系统分级与海量信息动态发布实践
- git版本控制常用指令
- Linux升级gcc到最新版本--gcc-9.1.0
热门文章
- Spring报错 conflicts with existing, non-compatible bean definition of same name and class
- 我就想知道知道我错哪了!!啊啊啊啊!
- Hdu 5454,Minimum Cut,最近公共祖先+dfs遍历
- 微信图片服务器逻辑,微信小程序[第八篇] -- 实现完整的相册列表逻辑(小程序端服务器端)...
- SOAP Client in Delphi7
- 堆内存(7)——内存释放入口函数_lib_free
- 调频电视发射机工作原理
- 服务器中所有文件夹变只读,我的电脑里全部文件夹属性都变成只读了改也改不过来...
- 《牛津字典精华总结》- 初阶系列 - 字母 - B
- adams打不开提示msc license_Adams打开出现错误提示: