在之前的最佳实践中,已经带大家通过一系列的实践任务领略了Istio的无穷魅力。今天,将向大家介绍如何用Istio实现流量熔断。

熔断机制是创建弹性微服务应用程序的重要模式。熔断可以帮助您自由控制故障影响的范围、网络延迟的峰值以及抵御其他一些来自外部的恶意攻击等场景。

在接下来的任务中,idou老师将通过配置一个熔断器来详细介绍如何在Istio中实现熔断,以及背后的原理。

首先,我们需要添加一个应用程序来模拟访问网络中的通信。接着我们按照前面Istio实践中所要求的将Sidecar注入进应用中,然后启动应用。

步骤一

为了演示Istio的熔断功能,我们需要创建熔断器,并在熔断器中设置一个目标规则,如下所示:

在本步骤中,我们可以理解为Istio的熔断功能主要是通过在链接池中加入上述三个参数:

MaxConnections定义了到目标主机的 HTTP1/TCP 最大连接数;

http1MaxPendingRequests定义了针对一个目标的 HTTP 请求的最大排队数量;

maxRequestsPerConnection定义了对某一后端的请求中,一个连接内能够发出的最大请求数量。如果将这一参数设置为 1 则会禁止 keep alive 特性。

在上述yaml文件中,我们为了方便进行实践,所以都设置成了1,当然大家也可以根据自己的需求自己设定阈值。

步骤二

对于网络通信熟悉的小伙伴应该都知道,模拟网络通信的环境需要一个服务端接收请求,一个请求端发送请求。刚刚我们已经创建完成一个服务端,并给服务端配置了熔断的条件,现在我们继续创建一个请求端来发送请求触发熔断机制。

我们用了官网上的一个例子fortio来进行测试。这个客户端可以控制连接数量、并发数、以及发送HTTP请求的延迟,当然我们也必须将Sidecar注入其中。

步骤三

我们可以通过命令kubectl exec -it $FORTIO_POD -c fortio /usr/local/bin/fortio – load -curl http://httpbin:8000/get来登入客户端Pod,并使用刚刚创建的客户端来调用httpbin。将会看到如下所示:

这表明我们创建的客户端已经成功与服务端进行了一次通信。

步骤四

开始进入今天的主题,在上面的熔断设置中指定了 maxConnections=1 以及 http1MaxPendingRequests=1。这意味着如果超过了一个连接同时发起请求,Istio 就会熔断,阻止后续的请求或连接。我们不妨尝试通过并发2个连接发送20个请求数来看一下结果。

通过上图不难看出,基本上所有的请求都发送成功了。明明我们设置的最大连接数是1,而我们模拟了两个并发连接,理论上应该只有一半的请求能成功才对,难道熔断没有成功?这里别忘了我们还设置了http1MaxPendingRequests=1,正如在前文中介绍的,这个参数的功能类似于为最大连接数提供了一级缓存,所以虽然我们的最大连接数是1,但是因为这个参数也为1,所以两个并发连接的请求都可以发送成功。

步骤五

接下来我们再修改一下参数与步骤四做个对比,模拟并发连接数数改为3请求数依然是20,我们将会看到如下图所示的结果:

正如我们在第三步中说的那样,只有2/3的请求成功,还有1/3的请求数被熔断。如果你觉得还不放心,那么我们不妨再把http1MaxPendingRequests置为2。这时候缓存区的请求相当于最大允许连接数的2倍,是不是并发数为3的模拟连接发送的请求都可以成功呢?

从上图我们可以看到,确实如此,基本上所有的请求都成功了。

通过今天的实践我们就可以知道,如何通过修改Istio的目标规则来对请求数启动熔断机制。

idou老师教你学Istio11 : 如何用Istio实现流量熔断相关推荐

  1. idou老师教你学Istio06: 如何用istio实现流量迁移

    流量迁移是流量管理的一个重要功能.istio提供的流量管理功能将流量从基础设施扩展中解耦,支持动态请求路由,故障注入.超时重试.熔断和流量迁移等.流量迁移的主要目的是将流量从微服务的某一版本的逐步迁移 ...

  2. idou老师教你学Istio 07: 如何用istio实现请求超时管理

    在前面的文章中,大家都已经熟悉了Istio的故障注入和流量迁移.这两个方面的功能都是Istio流量治理的一部分.今天将继续带大家了解Istio的另一项功能,关于请求超时的管理. 首先我们可以通过一个简 ...

  3. idou老师教你学Istio: 如何用Istio实现K8S Egress流量管理

    本文主要介绍在使用Istio时如何访问集群外服务,即对出口流量的管理. 默认安装的Istio是不能直接对集群外部服务进行访问的,如果需要将外部服务暴露给 Istio 集群中的客户端,目前有两种方案: ...

  4. idou老师教你学Istio 27:解读Mixer Report流程

    1.概述 Mixer是Istio的核心组件,提供了遥测数据收集的功能,能够实时采集服务的请求状态等信息,以达到监控服务状态目的. 1.1 核心功能 •前置检查(Check):某服务接收并响应外部请求前 ...

  5. idou老师教你学istio:监控能力介绍

    经过了一年多的开发和测试,Istio于北京时间7月31日发布了1.0版本,并且宣布1.0版本已经可以成熟的应用于生产环境.对于istio的各项主要功能,之前的文章已经介绍的非常详细,并且还会有更多的文 ...

  6. idou老师教你学Istio 04:Istio性能及扩展性介绍

    Istio的性能问题一直是国内外相关厂商关注的重点,Istio对于数据面应用请求时延的影响更是备受关注,而以现在Istio官方与相关厂商的性能测试结果来看,四位数的qps显然远远不能满足应用于生产的要 ...

  7. idou教你学Istio10 : 如何用Istio实现K8S Egress流量管理

    上一篇我们了解了如何控制入口流量,本文主要介绍在使用Istio时如何访问集群外服务,即对出口流量的管理. 默认安装的Istio是不能直接对集群外部服务进行访问的,如果需要将外部服务暴露给 Istio ...

  8. dbnetlib不存在或拒绝访问_idou老师教你学Istio 16:如何用 Istio 实现微服务间的访问控制...

    本文由华为云容器Istio团队撰稿,未经允许谢绝转载. 摘要 使用 Istio 可以很方便地实现微服务间的访问控制.本文演示了使用 Denier 适配器和黑白名单两种方法. 使用场景 有时需要对微服务 ...

  9. httos双向认证配置_idou老师教你学Istio 15:Istio实现双向TLS的迁移

    本文由华为云容器Istio团队撰稿,未经允许谢绝转载. 众所周知,HTTPS是用来解决 HTTP 明文协议的缺陷,在 HTTP 的基础上加入 SSL/TLS 协议,依靠 SSL 证书来验证服务器的身份 ...

  10. tree老师:每天五分钟教你学命令第1期

    本文由xiao_dou友情整理 点击标题下「蓝色微信名」可快速关注 在公司工作,我们第一个应该学会的命令,就是帮助命令,在遇到一些不懂的命令的时候可以使用man命令去查看man-pages文档. ma ...

最新文章

  1. 固定资产拆分比例怎么计算_财税知识:固定资产处置增值税是怎么计算的?涉及哪些计算公式?...
  2. [网络] SOCKET, TCP/UDP, HTTP, FTP
  3. 新疆出差——特色美食大合集
  4. PWN-PRACTICE-BUUCTF-6
  5. aptitude安装出现依赖_据说 pip install 今年将出现重大变化!
  6. full join 和full outer join_带你了解数据库中JOIN的用法
  7. BZOJ4559 JLOI2016成绩比较(容斥原理+组合数学+斯特林数)
  8. NetXray使用说明之(6)----捕捉oicq message报文
  9. 机器人抢了我们的工作怎么办?
  10. 01_excel基础知识1
  11. CenterNet: Keypoint Triplets for Object Detection论文详解
  12. CPU连续飙升的背后是 “道德的沦丧” 还是 “人性的泯灭”
  13. WCF学习(二):契约
  14. pandas模块的统计指标--实现众数和众数的频数
  15. 亚马逊海外购SAMSUNG 三星T7上手初体验
  16. 操作系统实验 P、V原语应用分析
  17. php相册管理插件,相册插件-ZBLOGPHP插件-鸟儿网络
  18. OceanBase 企业版下载使用指引
  19. 计算机毕业设计Python+djang的小区疫情防控系统(源码+系统+mysql数据库+Lw文档)
  20. 电脑监控软件哪个好用,有没有远程监控软件?

热门文章

  1. c语言中strlen什么作用,strlen函数在c语言中的用法是什么
  2. php发送邮件的方式,php 发送邮件几种方式
  3. OA实施方法论的重要性
  4. OSChina 周六乱弹 —— 先帝创业未半而花光预算
  5. c语言贪吃蛇代码(菜单功能后续补充)
  6. 仰望星空,脚踏实地——吴燕生
  7. Entity Framework Code First 学习日记(4)
  8. 【Swift 和 OC】
  9. 创业失败的工程师内心依旧有代码
  10. 一份网站的商业计划书内容概要