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)相关推荐

  1. 微服务学习总结4(网关和consul结合)

    先上一张图片: 首先要启动consul服务,用于对三个日志服务的注册和发现.(默认端口8500) 然后启动三个日志服务,端口分别为5726.5727.5728. 最后启动网关服务,用于转发客户端请求, ...

  2. .NET Core 微服务学习与实践系列文章目录索引(2019版)

    Photo :.NET Core 文 | Edison Zhou 2018年,我开始学习和实践.NET Core,并开始了微服务的学习,以及通过各种开源组件搭建服务治理技术方案,并在学习过程中总结了一 ...

  3. 【干货分享】可能是东半球最全的.NET Core跨平台微服务学习资源

    如果你发现还有西半球的资源,烦请相告,不胜感谢! 一.Asp.net Core基础 微软英文官网 .NET Core 微软中文官网 GitHub 用ASP.NET内核和Azure构建现代Web应用程序 ...

  4. Java微服务学习笔记(一):微服务架构的概念理解

    Java微服务学习笔记 Tips:入门学习时粗略整理,仅供参考 (一):架构的基础理解 文章目录 Java微服务学习笔记 前言 一.微服务是什么? 二.常用开源微服务框架演化 1. Dubbo 2. ...

  5. consul命令行查看服务_Go语言微服务架构实战:第十三节 微服务管理--Docker安装及运行consul节点...

    微服务管理--Docker安装及运行consul节点 搭建集群 在真实的生产环境中,需要真实的部署consul集群.在一台机器上想要模拟多台集群部署的效果,有两种方案:一种是借助虚拟机,另一种是借助容 ...

  6. Spring Cloud 微服务学习与实践

    第一章:微服务架构概述 1-1. 系统进化理论概述 在系统架构与设计的实践中,经历了两个阶段,一个阶段是早些年常见的集中式 系统,一个阶段是近年来流行的分布式系统: 集中式系统: 集中式系统也叫单体应 ...

  7. Java微服务学习路线,启发学习思路,不要死磕

    前言 今天讲讲大家都在搞的微服务框架,其实我们一搜都能搜到的,什么SpringCloud的五大组件,然后大家就开始埋头搭环境,最后费了半天功夫能跑了,但实际上对于微服务的理解还是浅尝辄止,今天我们就来 ...

  8. spring boot 及微服务 学习笔记

    最近在进行项目架构的调整,准备从springmvc转换到spring cloud,也就是微服务框架.自然就需要将原有的项目转化为spring boot形式. 微服务 在了解spring boot之前, ...

  9. .NET Core微服务开发网篇-ocelot

    通过上篇我们知道,网关是外部访问的统一入口,本文采用Ocelot作为Api网关. 环境要求: vs2019 .NetCore3.1 Ocelot16.0.1 创建一个产品服务Api站点(AAStore ...

最新文章

  1. 安装旧版本插件_iOS 应用降级插件,支持任意版本升降
  2. Windows 2003 R2的文件服务器实施
  3. Stanford机器学习笔记-6. 学习模型的评估和选择
  4. 退格键删除input中光标指定的字符串_Linux中的vi 三种模式
  5. Thread源码分析之join方法
  6. vb链接mysql登录界面_求大神!有谁会用VB设计用户登陆界面连接到数据库
  7. (错误记录)git push 报错 403
  8. html5做咖啡网页素材,HTML5/CSS3咖啡品类切换动画
  9. JZ6-旋转数组的最小数字
  10. 陈国君Java程序设计基础笔记和习题
  11. 用友u8 12.1服务器硬件要求,用友U8_12.1安装操作手册服务器资料全
  12. 电子元器件选型——电阻
  13. docker复习:CVE-2016-10033验证
  14. 三星+t800+原生android,三星T800(GALAXY Tab S WLAN版)一键救砖教程,轻松刷回官方系统...
  15. 关于黑莓手机 三键重启的操作方法
  16. 计算机中丢失msvcr100.dll怎么办,会声会影计算机中丢失MSVCR100.dll解决方案-计算机中丢失MSVCR100.dll怎么解决_好特教程...
  17. Monster: half man, half beast and very scary.
  18. 当当网系统分级与海量信息动态发布实践
  19. git版本控制常用指令
  20. Linux升级gcc到最新版本--gcc-9.1.0

热门文章

  1. Spring报错 conflicts with existing, non-compatible bean definition of same name and class
  2. 我就想知道知道我错哪了!!啊啊啊啊!
  3. Hdu 5454,Minimum Cut,最近公共祖先+dfs遍历
  4. 微信图片服务器逻辑,微信小程序[第八篇] -- 实现完整的相册列表逻辑(小程序端服务器端)...
  5. SOAP Client in Delphi7
  6. 堆内存(7)——内存释放入口函数_lib_free
  7. 调频电视发射机工作原理
  8. 服务器中所有文件夹变只读,我的电脑里全部文件夹属性都变成只读了改也改不过来...
  9. 《牛津字典精华总结》- 初阶系列 - 字母 - B
  10. adams打不开提示msc license_Adams打开出现错误提示: