istio-0.8 服务超时配置

Istio流量管理实践
本文介绍如何使用Istio进行流量管理,包括通过配置请求超时和故障注入来优化服务间的调用。通过实际操作展示了如何减少响应时间和处理服务间依赖。

请求超时

可以使用路由规则的httpReqTimeout字段指定http请求的超时。默认情况下,超时为15秒,但在此任务中,我们将reviews服务超时重写为1秒。然而,为了看到它的效果,我们还将在ratings服务调用中引入人为的2秒延迟。

  1. 将请求路由到reviews服务的v2 ,即调用ratings服务的版本

        cat <<EOF | istioctl replace -f -
        apiVersion: networking.istio.io/v1alpha3
        kind: VirtualService
        metadata:
          name: reviews
        spec:
          hosts:
            - reviews
          http:
          - route:
            - destination:
                host: reviews
                subset: v2
        EOF
    
  2. ratings服务调用添加2秒延迟:

        cat <<EOF | istioctl replace -f -
        apiVersion: networking.istio.io/v1alpha3
        kind: VirtualService
        metadata:
          name: ratings
        spec:
          hosts:
          - ratings
          http:
          - fault:
              delay:
                percent: 100
                fixedDelay: 2s
            route:
            - destination:
                host: ratings
                subset: v1
        EOF
    
  3. 在浏览器中打开Bookinfo URL(http:// $ GATEWAY_URL / productpage)

    您应该看到Bookinfo应用程序正常工作(显示评级星标),但每次刷新页面时都会有2秒的延迟。

  4. 现在为reviews服务调用添加1秒的请求超时

        cat <<EOF | istioctl replace -f -
        apiVersion: networking.istio.io/v1alpha3
        kind: VirtualService
        metadata:
          name: reviews
        spec:
          hosts:
          - reviews
          http:
          - route:
            - destination:
                host: reviews
                subset: v2
            timeout: 1s
        EOF
    
  5. 刷新Bookinfo网页

    您现在应该看到它在1秒内返回(而不是2秒),但评论不可用。

了解发生了什么

在此任务中,您使用Istio将对reviews微服务的调用的请求超时设置为1秒(而不是默认的15秒)。由于服务在处理请求时reviews随后调用ratings服务,因此您使用Istio在调用中注入了2秒的延迟ratings,因此您将导致reviews服务花费超过1秒的时间来完成,因此您可以看到超时运行。

您发现Bookinfo产品页面(调用reviews服务填充页面)而不是显示评论显示消息:对不起,本书目前无法提供产品评论。这是它从reviews服务接收超时错误的结果。

如果你查看故障注入任务,你会发现productpage微服务也有自己的应用程序级超时(3秒)来调用reviews微服务。请注意,在此任务中,我们使用Istio路由规则将超时设置为1秒。如果您将超时设置为大于3秒(例如,4秒)的超时,则超时将无效,因为两者中的限制性更强。更多细节可以在这里找到。

关于Istio中超时的另一个注意事项是,除了在路由规则中覆盖它们之外,就像在此任务中所做的那样,如果应用程序添加了“x-envoy-upstream-”,它们也可以在每个请求的基础上被覆盖。 rq-timeout-ms“出站请求的标头。在标头中,超时以毫秒(而不是第二)单位指定。

资料:

https://istio.io/docs/tasks/traffic-management/request-routing/

转载于:https://my.oschina.net/xiaominmin/blog/1858655

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值