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

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

内容简介:在前面的文章中,大家都已经熟悉了 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 微服务时,还有自己的应用级超时设置(三秒钟)。而我们这里用路由规则设置了一秒钟的超时。如果把超时设置为超过三秒钟(例如四秒钟)会毫无效果(正如我们第三步中设置了四秒)。


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

查看所有标签

猜你喜欢:

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

百面机器学习

百面机器学习

诸葛越、葫芦娃 / 人民邮电出版社 / 2018-8-1 / 89.00元

人工智能领域正在以超乎人们想象的速度发展,本书赶在人工智能彻底占领世界之前完成编写,实属万幸。 书中收录了超过100道机器学习算法工程师的面试题目和解答,其中大部分源于Hulu算法研究岗位的真实场景。本书从日常工作、生活中各种有趣的现象出发,不仅囊括了机器学习的基本知识 ,而且还包含了成为出众算法工程师的相关技能,更重要的是凝聚了笔者对人工智能领域的一颗热忱之心,旨在培养读者发现问题、解决问......一起来看看 《百面机器学习》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

URL 编码/解码
URL 编码/解码

URL 编码/解码

html转js在线工具
html转js在线工具

html转js在线工具