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

栏目: 后端 · 发布时间: 5年前

内容简介:在前面的文章中,大家都已经熟悉了 Istio 的故障注入和流量迁移。这两个方面的功能都是 Istio 流量治理的一部分。今天将继续带大家了解 Istio 的另一项功能,关于请求超时的管理。首先我们可以通过一个简单的 Bookinfo 的微服务应用程序来动手实践一下 Istio 是如何实现请求超时的管理。看过 idou 老师前面文章的老司机应该都已经对 Bookinfo 这个实例驾轻就熟了,当然还存在部分被 idou 老师的文采刚吸引过来的新同学。下面先简单的介绍一下 Bookinfo 这个样例应用整体架构

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

首先我们可以通过一个简单的 Bookinfo 的微服务应用程序来动手实践一下 Istio 是如何实现请求超时的管理。看过 idou 老师前面文章的老司机应该都已经对 Bookinfo 这个实例驾轻就熟了,当然还存在部分被 idou 老师的文采刚吸引过来的新同学。

下面先简单的介绍一下 Bookinfo 这个样例应用整体架构,以便我们更好地理解 Istio 是如何实现请求超时,对于老司机可以直接跳过这部分。

Bookinfo 应用由四个单独的微服务构成,用来演示多种 Istio 特性。这个应用模仿在线书店的一个分类,显示一本书的信息。页面上会显示一本书的描述,书籍的细节,以及关于这本书的一些评论。讲道理,Bookinfo这个实例确实比较轻量级,但是麻雀虽小五脏俱全。

了解完样例应用以后,我们就可以动手实践了。当前的实验环境是基于已经提前安装好Kubernetes和Istio。请求超时的管理我们主要可以用来对一些特殊场景进行测试,比如故障注入等。

第一步

首先我们到 reviews 组件中定义一个 VirtualService 的路由,如下

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

第二步

在对ratings服务的调用中加入四秒钟的延迟,如下

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

第三步

我们需要给 productpage 配置一个对外访问方式,然后用浏览器打开 productpage 对应的访问方式即可在页面看到 Bookinfo 的样例。这时应该能看到 Bookinfo 应用在正常运行(显示了评级的星形符号)。很多同学可能会好奇为什么我们明明设置了四秒钟的延时却没有出现跟自己设想的情况出现,别急让我们再接着往下走。

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

第四步

我们重新再给 ratings 服务的调用中修改成 2 秒延时,如下

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

第五步

这个时候我们再重新刷新 Bookinfo 的应用页面,将会看到出现的情况正如我们预想的那样,页面右侧显示评级的星形符号将会在整个页面异步延时大约2s的时间刷新出来,很多同学可能会思考是不是 Istio 的延时管理出了 bug?莫慌,在本文的最后将会给您揭晓答案。

第六步

我们继续尝试在 reviews 服务的请求加入一秒钟的请求超时,如下

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

第七步

我们继续去刷新 Bookinfo 的 web 页面看看即将会发生什么?这时候应该就会看到 reviews 去调用 ratings 一秒钟就会返回,而不是之前的两秒钟,但是 reviews 的显示消失了。

总结

通过上面的实践,我们使用 Istio 为调用 reviews 的微服务的请求中加入了一秒钟的超时控制,覆盖了本身默认的 15 秒钟设置。页面刷新时,reviews 服务后面会调用 ratings 服务,使用 Istio 在对 ratings 的调用中注入了两秒钟的延迟,这样就让 reviews 服务要花费超过一秒钟的时间来调用 ratings 服务,从而触发了我们加入的超时控制。这样就会看到 Bookinfo 中由reviews生产的页面上没有出现 reviews 服务的显示内容,并且出现一串异常信息,出现这一信息的原因就是因为来自 reviews 服务的超时错误,如下:

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

到这里,今天的请求超时管理是不是就结束了?当然没有,idou老师还记得第三步中的问题还没有给大家解答。这是因为Istio内部的服务中设置了更为严格的超时要求,如果有同学看了之前的文章测试了故障注入,就会发现 productpage 微服务在调用 reviews 微服务时,还有自己的应用级超时设置(三秒钟)。而我们这里用路由规则设置了一秒钟的超时。如果把超时设置为超过三秒钟(例如四秒钟)会毫无效果(正如我们第三步中设置了四秒)。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Python基础教程

Python基础教程

[挪] Magnus Lie Hetland / 袁国忠 / 人民邮电出版 / 2018-2-1 / CNY 99.00

本书包括Python程序设计的方方面面:首先从Python的安装开始,随后介绍了Python的基础知识和基本概念,包括列表、元组、字符串、字典以及各种语句;然后循序渐进地介绍了一些相对高级的主题,包括抽象、异常、魔法方法、属性、迭代器;此后探讨了如何将Python与数据库、网络、C语言等工具结合使用,从而发挥出Python的强大功能,同时介绍了Python程序测试、打包、发布等知识;最后,作者结合......一起来看看 《Python基础教程》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换