《OpenShift 4.x HOL教程汇总》
说明:本文已经在OpenShift 4.6环境中验证

Istio可以实现对服务访问的限流。通常限流可以保护被调用服务的可用性,以防止被调用服务由于频繁访问出现不稳定情况。本章节我们实现对服务访问的限流。

  1. 我们在开始之前先确保环境和完成《OpenShift 4 之Istio-Tutorial (2)
    部署三个微服务》一样,只部署了3个微服务和VirtualService、Gateway,没有DestinationRule。

  2. 此时使用脚本访问customer可以正常连续访问。

$ export INGRESS_GATEWAY=$(oc get route -n user1-smcp istio-ingressgateway -o 'jsonpath={.spec.host}')
$ ./scripts/run.sh $INGRESS_GATEWAY/customer
  1. 文件定istiofiles/rate_limit_rule.yml义了对recommendation服务的访问限流(每5s只能访问1次),而 其它服务是缺省的限流(1s可以访问500次)。
apiVersion: config.istio.io/v1alpha2
kind: memquota
metadata:name: handlernamespace: istio-system
spec:quotas:-- name: requestcount.quota.istio-systemmaxAmount: 500validDuration: 1soverrides:- dimensions:destination: recommendationmaxAmount: 1validDuration: 5s
---
apiVersion: config.istio.io/v1alpha2
kind: quota
metadata:name: requestcountnamespace: istio-system
spec:dimensions:source: request.headers["x-forwarded-for"] | "unknown"destination: destination.labels["app"] | destination.service.name | "unknown"destinationVersion: destination.labels["version"] | "unknown"
---
apiVersion: config.istio.io/v1alpha2
kind: QuotaSpec
metadata:name: request-countnamespace: istio-system
spec:rules:-- quotas:- charge: 1quota: requestcount
---
apiVersion: config.istio.io/v1alpha2
kind: QuotaSpecBinding
metadata:name: request-countnamespace: istio-system
spec:quotaSpecs:-- name: request-countnamespace: istio-systemservices:-- name: recommendationnamespace: istio-tutorial
---
apiVersion: config.istio.io/v1alpha2
kind: rule
metadata:name: quotanamespace: istio-system
spec:actions:-- handler: handler.memquotainstances:- requestcount.quota
  1. 执行脚本,先创建限流资源对象,然后持续访问customer服务。可以看到preference服务提示:访问已经超过限流了。
$ oc create -f istiofiles/rate_limit_rule.yml
$ ./scripts/run.sh $INGRESS_GATEWAY/customer
customer => preference => recommendation v1 from '67976848-4l4s7': 8348
customer => preference => recommendation v1 from '67976848-4l4s7': 8349
customer => Error: 503 - preference => Error: 429 - RESOURCE_EXHAUSTED:Quota is exhausted for: requestcount
customer => Error: 503 - preference => Error: 429 - RESOURCE_EXHAUSTED:Quota is exhausted for: requestcount
customer => Error: 503 - preference => Error: 429 - RESOURCE_EXHAUSTED:Quota is exhausted for: requestcount
Ccustomer => Error: 503 - preference => Error: 429 - RESOURCE_EXHAUSTED:Quota is exhausted for: requestcount
  1. 最后恢复环境即可。
$ oc delete -f istiofiles/rate_limit_rule.yml

OpenShift 4 之Istio-Tutorial (9) 访问限流相关推荐

  1. 在Zuul中设置服务访问限流

    使用Zuul中的过滤器结合谷歌提供的工具类RateLimiter达到限流 在网关服务中创建一个过滤器,并添加到容器中 @Component public class RateLimitFilter e ...

  2. RateLimiter高并发访问限流

    使用RateLimiter完成简单的大流量限流,抢购秒杀限流. RateLimiter是guava提供的基于令牌桶算法的实现类,可以非常简单的完成限流特技,并且根据系统的实际情况来调整生成token的 ...

  3. OpenShift 4 - 容器访问限速和Route访问限制流

    <OpenShift 4.x HOL教程汇总> 说明:本文已经在OpenShift 4.6环境中验证 文章目录 容器访问限速 Route访问限流 容器访问限速 创建测试项目 $ oc ne ...

  4. Service Mesh微服务熔断、限流的骚操作

    在微服务架构中,随着服务调用链路变长,为了防止出现级联雪崩,在微服务治理体系中,熔断.限流作为服务自我保护的重要机制,是确保微服务架构稳定运行的关键手段之一. 那么什么是熔断.限流?在传统Spring ...

  5. GO微服务实战第二十二节 案例:如何通过 Service Meh 实现熔断和限流?

    在前面的课时中,我们分别学习了熔断.限流在服务高可用架构中的重要性和具体使用方式.但是,在具体使用过程中,我们会发现实现熔断和限流的代码和实现业务逻辑的代码耦合在一起,对系统的可维护性产生了不良的影响 ...

  6. 玩转Service Mesh微服务熔断、限流骚操作

    在微服务架构中,随着服务调用链路变长,为了防止出现级联雪崩,在微服务治理体系中,熔断.限流作为服务自我保护的重要机制,是确保微服务架构稳定运行的关键手段之一. 那么什么是熔断.限流?在传统Spring ...

  7. 微服务接口限流的设计与思考(附GitHub框架源码)

    http://www.infoq.com/cn/articles/microservice-interface-rate-limit?useSponsorshipSuggestions=true&am ...

  8. 高效的动态URL限流实现

    访问限流对于一个网关来说是个比较重要的功能,它可以根据不同服务的处理能力来控制相关的访问量,从而保障服务更可靠地运行.但是URL控制的路径比较多还加上可动态添加删除,大量的访问匹配会很容易引起性能上的 ...

  9. 【.NET Core项目实战-统一认证平台】第七章 网关篇-自定义客户端限流

    上篇文章我介绍了如何在网关上增加自定义客户端授权功能,从设计到编码实现,一步一步详细讲解,相信大家也掌握了自定义中间件的开发技巧了,本篇我们将介绍如何实现自定义客户端的限流功能,来进一步完善网关的基础 ...

最新文章

  1. RPC 笔记(08)— socket 通信(多进程多线程服务器)
  2. Cuckoo hash算法分析——其根本思想和bloom filter一致 增加hash函数来解决碰撞 节省了空间但代价是查找次数增加...
  3. 单车家族 结对项目二
  4. 大规模微服务利器:eBPF + Kubernetes
  5. [OTs]I miss u folks
  6. 【TensorFlow-serving】初步学习模型部署
  7. ASP.NetCore+VUE 实现学生成绩管理系统(一)
  8. [译] Airbnb 在 React Native 上下的赌注(一):概述
  9. 通过nginx在window下部署项目
  10. 牛客竞赛mjt的毒瘤赛
  11. vs2017 js cordova + dotnet core 开发app
  12. LeetCode344. Reverse String
  13. openssh常用命令记录
  14. Photoshop - CMYK 和 RGB 区别是什么?
  15. 使用python的requests模块实现百思不得其姐抓取(多线程版)
  16. 让ambarella s2l 支持32M SPI Flash(W25Q256)
  17. IPC 通信 - IPC
  18. 莘城苑:面包种类选择
  19. 几何光学学习笔记(13)- 4.2双平面镜成像
  20. TTU智能配电终端_金智科技:新一代智能终端研制成功,即将发力泛在电力物联网建设【安信电新】...

热门文章

  1. jtextpane设置不能选中_你会设置数据有效性吗?
  2. wimbuilder2教程_Wimbuilder WIN10XPE制作所需的工程文件
  3. ubuntu 20.04双系统安装_win10上跑Ubuntu不用虚拟机不用双系统!
  4. linux+下c语言编程项目,精通UNIX下C语言编程与项目实践
  5. 和平精英连接服务器未响应,和平精英触控失灵怎么回事 操作触屏有时候没反应介绍...
  6. 绝美自然风光风景壁纸,心旷必然神怡
  7. UI设计案例|文件管理App界面设计灵感
  8. 值得借鉴的促销海报模板素材,卖不出去都难
  9. 电商设计师必备素材|快速组合自己想要的场景和落版文字
  10. android menu item 显示,Android 如何通过menu id来得到menu item 控件 .