Timeout

超时 #

超时限制是一种解决在调用过程中整个调用链会卡在某一个服务响应速度过慢的问题,而慢请求的累积可能会导致连锁反应,甚至应用雪崩。

通过solarmesh,可以方便的在页面为服务设置超时限制。当我们为目标服务设置了超时限制之后,超过时限的请求将会被系统强制返回。

试试看 #

假设我们已经部署过bookinfo示例项目(见 快速开始/安装/使用solarctl安装示例项目),并且为bookinfo示例项目的服务接入了sidecar(见 快速开始/接管服务)

访问我们事先部署好的示例项目bookinfo的页面,多刷新几次,您会发现在没有任何策略干预的情况下,页面中 Book Reviews 一栏呈现三种状态: 红星、黑星和无星,它们的出现概率约为1:1:1。

bookinfo-productpage

此时进入SolarMesh的流量视图界面,您可以看到这样的一幅流量拓扑图。

流量视图

此时可以发现,reviews 服务有3个版本对应着3种状态,我们先在 DestinationRule 上配置 reviews 的版本。

dr版本号

现在我们需要在 ratings 服务上配置一个延时故障,方便我们进行演示。

先配置 ratings 服务的版本。

ratings-dr-配置

再配置一份http策略,让 ratings 服务出现延时。

ratings-vs-延时

配置生效后,访问示例项目bookinfo的页面,发现访问页面明显变慢了。

延时结果

接下来我们配置 reviews 服务的超时限制,让 reviews 服务在1s内返回,并且将流量分配到 v2 版本上(v1 版本不访问ratings服务)。

reviews-vs-超时

再次访问示例项目bookinfo的页面。我们可以发现故障已经产生,由于 reviews 服务访问 ratings 服务必须要2s,而我们给 reviews 服务的超时限制是1s,所以一旦响应超时,系统会强制返回错误。

bookinfo-故障注入