文档章节

istio 处理失败 (理论)

xiaomin0322
 xiaomin0322
发布于 07/18 14:37
字数 905
阅读 4
收藏 0

Envoy提供了一套开箱即用的选择加入故障恢复功能,可以通过应用程序中的服务进行利用。功能包括:

  1. 超时

  2. 具有超时预算和重试之间的可变抖动的有界重试

  3. 限制并发连接数和对上游服务的请求

  4. 对负载平衡池的每个成员进行主动(定期)运行状况检查

  5. 细粒度断路器(被动健康检查) - 在负载平衡池中按实例应用

可以通过Istio的流量管理规则在运行时动态配置这些功能。

重试之间的抖动最小化重试对重载上游服务的影响,而超时预算确保调用服务在可预测的时间范围内获得响应(成功/失败)。

主动和被动运行状况检查(上面的4和5)的组合可以最大限度地减少在负载平衡池中访问不健康实例的可能性。当与平台级运行状况检查(例如Kubernetes或Mesos支持的运行状况检查)结合使用时,应用程序可以确保可以快速清除不健康的容器/容器/ VM,从而最大限度地减少请求失败和延迟影响。

这些功能共同使服务网格能够容忍故障节点并防止本地故障与其他节点级联不稳定。

微调

Istio的流量管理规则允许运营商为每个服务/版本设置故障恢复的全局默认值。但是,服务的使用者还可以通过特殊的HTTP标头提供请求级覆盖来覆盖超时重试默认值。使用Envoy代理实现,标题分别为x-envoy-upstream-rq-timeout-msx-envoy-max-retries

常问问题

问:在Istio中运行时,应用程序是否仍能处理故障?

是。Istio提高了网格中服务的可靠性和可用性。但是,应用程序需要处理故障(错误)并采取适当的回退操作。例如,当负载平衡池中的所有实例都出现故障时,Envoy将返回HTTP 503.应用程序负责实现处理来自上游服务的HTTP 503错误代码所需的任何回退逻辑。

问:Envoy的故障恢复功能是否会破坏已经使用容错库的应用程序(例如Hystrix)?

不,特使对应用程序完全透明。Envoy返回的故障响应无法与进行呼叫的上游服务返回的故障响应区分开来。

问:在使用应用程序级库和Envoy的同时如何处理失败?

给定相同目标服务的两个故障恢复策略(例如,两个超时 - 一个在Envoy中设置,另一个在应用程序的库中),当发生故障时将触发两个更严格的限制。例如,如果应用程序为服务的API调用设置了5秒超时,而运算符配置了10秒超时,则应用程序的超时将首先启动。同样,如果Envoy的断路器在应用程序的断路器之前触发,那么对该服务的API调用将从Envoy获得503。

https://istio.io/docs/concepts/traffic-management/handling-failures/

© 著作权归作者所有

共有 人打赏支持
xiaomin0322
粉丝 87
博文 3486
码字总数 158496
作品 0
上海
架构师
istio 服务发现和负载平衡(理论)

此页面描述了Istio负载如何平衡服务网格中服务实例的流量。 服务注册: Istio假定存在服务注册表以跟踪应用程序中服务的pod / VM。它还假定服务的新实例自动注册到服务注册表,并自动删除不健...

xiaomin0322
07/18
0
0
istio 监控,遥测 (理论)

Istio提供了一种灵活的模型来强制执行授权策略并收集网格中服务的遥测。 基础架构后端旨在提供用于构建服务的支持功能。它们包括诸如访问控制系统,遥测捕获系统,配额执行系统,计费系统等之...

xiaomin0322
07/18
0
0
微服务运维减负:Istio Service Mesh原理+实战

作者介绍 王青,JFrog中国首席架构师,曾在新浪、爱奇艺、IBM、HPE、VIPKID从事架构研发与咨询,曾在中兴通讯、宜人贷、顺丰、易保科技等大型企业从事DevOps落地。专注于微服务架构、持续集成...

DBAplus社群
04/25
0
0
istio中的流量管理的核心组件是Pilot(理论)

用于Istio中的流量管理的核心组件是Pilot,它管理和配置在特定Istio服务网格中部署的所有Envoy代理实例。它允许您指定要用于在Envoy代理之间路由流量的规则,以及配置故障恢复功能(如超时,...

xiaomin0322
07/18
0
0
istio源码分析之pilot-discovery模块分析

本文分析的istio代码版本为0.8.0,commit为0cd8d67,commit时间为2018年6月18日。 本文为之一: Service Mesh深度学习系列part1—istio源码分析之pilot-agent模块分析 Service Mesh深度学习系...

xiaomin0322
07/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

JS三元运算示例

1. topFlag=topFlag ==0?1:0; 等于 if(topFlag=00){ topFlag=1; }else if(topFlag == 1){ topFlag=0; } 2. 5>3?alert('5大'):alert('3大'); 即 if(5>3){alert('5大')}else{alert('3大')}; 注......

森火
今天
0
0
利用Slf4j的MDC跟踪方法调用链

why? 一个web项目通常提供很多URL访问地址, 项目一般都是分层处理,例如Controller——>Service——>DAO。 如果想根据日志查看用户一次请求都走了哪些方法(多数是查错误)。 如果系统是多人...

杨春炼
今天
9
0
Maven介绍及安装

Maven介绍及安装 以下内容是本人早期学习时的笔记,可能比较详实繁琐,现在复习一下Maven,顺便将内容抛出来,供大家一起学习进步。 一、Maven简介 Maven是Apache旗下的一款项目管理工具,是...

星汉
今天
0
0
小程序Aes解密

主要步骤: 1、下载AES源码(JS版) 2、在小程序中新建一个公共的文件夹,把AES源码拷贝进去(注意:需要暴露接口 module.exports = CryptoJS;) 3、添加一个用于加密解密的公共JS,可取名为...

Mr_Tea伯奕
今天
0
0
Go实现文件传输(基本传输可用)

发送端 package mainimport ("fmt""os""net""io")func SendFile(path string, connect net.Conn){file, oerr :=os.Open(path)if oerr !=nil{fmt.Println("Open", oerr)......

CHONGCHEN
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部