首页 > 其他分享 >istio 请求超时相关详解

istio 请求超时相关详解

时间:2023-04-24 12:23:27浏览次数:41  
标签:虚拟 服务 定义 istio Istio 详解 magicboard 超时

虚拟服务中这段代码含义

虚拟服务中这段代码含义“
spec:
  gateways:
    - magicboard
    - mesh
  hosts:
    - magicboard
    - magicboard.lh.prod
  http:
    - name: default
      retries:
        attempts: 3
        retryOn: 'reset,connect-failure,retriable-status-codes,503'
      route:
        - destination:
            host: magicboard
            subset: v04210419
      timeout: 10s”

这段代码是 Istio 中虚拟服务的流量路由配置,它指定了路由到 magicboard 服务的 v04210419 版本时的一些属性:

  • spec.gateways 指定了该虚拟服务绑定的网关,这里绑定了 magicboardmesh 两个网关。
  • spec.hosts 指定了该虚拟服务所匹配的主机名,这里包括了 magicboardmagicboard.lh.prod 两个主机名。
  • http.name 定义了虚拟服务的名称。在这个例子中,名称为 default
  • http.retries.attempts 定义了当请求失败时,Istio 应该重试多少次。在这个例子中,设置为 3 次。
  • http.retries.retryOn 定义了在哪些故障情况下,Istio 应该重试请求。在这个例子中,设置为 resetconnect-failureretriable-status-codes503。这意味着当出现连接重置、连接失败、可重试的 HTTP 状态码或 503 错误时,Istio 将重试请求。
  • http.route.destination.host 定义了路由的目标服务。在这个例子中,目标服务为 magicboard
  • http.route.destination.subset 定义了路由的目标服务的子集版本,即 v04210419
  • http.timeout 定义了路由到目标服务的请求超时时间,这里设置为 10 秒。

这些配置可用于确保流量路由到正确的服务版本,并在出现故障时实现故障恢复。通过指定不同的网关和主机名,Istio 可以将流量路由到不同的虚拟服务中,从而实现对流量的细粒度控制。

 

 

目标规则中这段代码的含义“
spec:
  host: magicboard
  subsets:
    - labels:
        version: v04210419
      name: v04210419
  trafficPolicy:
    connectionPool:
      http:
        idleTimeout: 1800s
        maxRetries: 3
      tcp:
        connectTimeout: 1s
        maxConnections: 500
        tcpKeepalive:
          interval: 3s
          probes: 2
          time: 5s”

这段代码是 Istio 中目标规则的配置,它指定了服务的子集和流量策略的一些属性:

  • spec.host 定义了服务的主机名。在这个例子中,服务的主机名为 magicboard
  • spec.subsets 定义了服务的子集。在这个例子中,定义了一个名为 v04210419 的子集,并使用 version 标签来匹配这个子集。这意味着服务的标签中需要包含 version=v04210419,才会路由到这个子集中的服务实例。
  • trafficPolicy.connectionPool 定义了服务的连接池策略。http.idleTimeout 定义了 HTTP 连接的空闲超时时间,设置为 1800 秒。http.maxRetries 定义了在请求失败时 Istio 应该重试多少次。在这个例子中,设置为 3 次。tcp.connectTimeout 定义了 TCP 连接的超时时间,设置为 1 秒。tcp.maxConnections 定义了连接池中保留的最大连接数,设置为 500。tcpKeepalive.interval 定义了 TCP keepalive 消息的发送间隔,设置为 3 秒。tcpKeepalive.probes 定义了 TCP keepalive 消息的发送次数,设置为 2 次。tcpKeepalive.time 定义了 TCP keepalive 消息的超时时间,设置为 5 秒。

这些配置可用于优化服务的连接池,以及定义流量的一些策略,如重试次数、连接超时时间等。通过使用子集,Istio 可以将服务实例分为多个版本或分组,并对它们应用不同的流量策略。

 

istio中虚拟服务和目标规则里配置的超时有什么区别?

虚拟服务和目标规则中的超时配置的主要区别是它们的作用范围不同。

在 Istio 中,虚拟服务定义了从应用程序到 Istio 代理的流量规则,而目标规则定义了从 Istio 代理到服务实例的流量规则。因此,在虚拟服务中配置的超时适用于应用程序到 Istio 代理的流量,而在目标规则中配置的超时适用于 Istio 代理到服务实例的流量。

具体来说,虚拟服务中的超时配置定义了在将请求从应用程序路由到服务实例之前,Istio 代理需要等待的最长时间。如果超过这个时间,Istio 将终止请求并返回错误响应。

而目标规则中的超时配置定义了在将请求从 Istio 代理发送到服务实例之前,Istio 代理需要等待的最长时间。如果超过这个时间,Istio 代理将关闭与服务实例的连接并返回错误响应。

因此,虚拟服务和目标规则中的超时配置通常应该根据不同的需求进行设置,以便在服务层面和应用程序层面都能够合理地处理超时情况。

 

 

虚拟服务中这段代码含义" 
 - fault:
      delay:
        percent: 100
        fixedDelay: 2s"

这段代码是 Istio 中虚拟服务的故障注入配置,它指定了一种故障类型,即延迟注入故障:

  • fault.delay.percent 定义了要注入故障的百分比。在这个例子中,100% 的请求将受到延迟注入故障。
  • fault.delay.fixedDelay 定义了延迟的时间长度。在这个例子中,延迟时间为 2 秒。

这意味着,在使用这个虚拟服务的过程中,所有请求都将受到 2 秒的延迟。延迟注入故障是一种常见的故障注入策略,它可以模拟网络延迟或服务处理请求的延迟,以测试系统的鲁棒性和容错性。在 Istio 中,可以使用虚拟服务来配置各种类型的故障注入策略,以帮助测试和评估应用程序的稳定性。

 

标签:虚拟,服务,定义,istio,Istio,详解,magicboard,超时
From: https://www.cnblogs.com/liruixin/p/17349044.html

相关文章

  • 详解Python当中的pip常用命令
    相信对于大多数熟悉Python的人来说,一定都听说并且使用过pip这个工具,但是对它的了解可能还不一定是非常的透彻,今天小编就来为大家介绍10个使用pip的小技巧,相信对大家以后管理和使用Python当中的标准库会有帮助。安装当然在Python3.4版本之后以及Python2.7.9版本之后,官网的安装......
  • pg_setting详解
    示例参数max_connectionsselect*frompg_settingswherename='max_connections';-[RECORD1]---+-----------------------------------------------------name|max_connectionssetting|14unit|category|Connect......
  • 【v4l2】Linux多媒体框架 - videobuf2详解
    框架分析框架可以分为两部分看:控制流+数据流,之前已经大概的描述了控制流,数据流部分就是videobuffer,V4l2buffer的管理是通过videobuf2来完成的,它充当于用户空间和驱动空间之间的中间层,并提供模块化的内存管理功能。上图大体包含了videobuf2的框架1.vb2_queue:核心的数据结构,......
  • 【c&c++】vector 详解(C++)
    C++STL中的verctor好比是C语言中的数组,但是vector又具有数组没有的一些高级功能。与数组相比,vector就是一个可以不用再初始化就必须制定大小的边长数组,当然了,它还有许多高级功能。1.头文件#include<vector>2.初始化 如果vector的元素类型是int,默认初始化为0;如果vector元......
  • 【C++入门】类和对象(一) 详解(class、struct、类的定义、类的实例化、类的封装、对象
    1.面向过程和面向对象初步认识面向过程更加关注解决问题的过程和步骤。而面向对象关注的是对象,对一个事情拆分成不同的对象,靠对象之间的交互实现。例如:外卖系统面向过程:上架→点餐→派单→送餐注重过程步骤面向对象:(更加贴近现实之间的业务逻辑交互)骑手→商家←用户注重对象和对象......
  • Dialect及Operation详解
    参考资料:[MLIR]Dialect及Operation详解-知乎(zhihu.com)2. Dialect及Operation2.1Dialect2.1.1Dialect是什么?从源程序到目标程序,要经过一系列的抽象以及分析,通过LoweringPass来实现从一个IR到另一个IR的转换。但IR之间的转换需要统一格式,统一IR的第一步就是要统一......
  • 制作tld文件及应用详解
    制作tld文件及应用详解1、开个环境:myeclipse6.5+tomcat6.0.23所需组件jree5.02、index.jsp顶部添加:<%@tagliburi="/cmszxm"prefix="cms"%><tablewidth="800"border="0"align="center"cellpadding="0"cellspaci......
  • 订单超时处理
    JDK自带的延时队列把订单插入DelayQueue中,以超时时间作为排序条件,将订单按照超时时间从小到大排序。起一个线程不停轮询队列的头部,如果订单的超时时间到了,就出队进行超时处理,并更新订单状态到数据库中。为了防止机器重启导致内存中的DelayQueue数据丢失,每次机器启动的时候,需要......
  • cpu居然不下,排查诊断详解
    客户端登录服务器,使用非常卡顿,查看服务器使用情况有进程占用cpu非常严重查看进程所在目录[root@176-18-0-10~]#pwdx12681268:/usr/local/games/.cache查看病毒目录和执行文件内容[root@176-10-0-10~]#ls/usr/local/games/.cacheah32h64runss32stak3stakce......
  • MAC地址详解
    MAC地址MAC地址(MediaAccessControl),即媒体访问控制地址,在不同的使用场景下有不同的别名,比如局域网地址(LANAddress),以太网地址(EthernetAddress),物理地址(PhysicalAddress),硬件地址(HardwareAddress)等。MAC地址作用于数据链路层,用来在局域网中唯一标识一个网络设备接口。网络设备制......