文档章节

istio 处理失败 (理论)

xiaomin0322
 xiaomin0322
发布于 07/18 14:37
字数 905
阅读 16
收藏 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
粉丝 109
博文 3550
码字总数 165463
作品 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

没有更多内容

加载失败,请刷新页面

加载更多

区块链入门教程以太坊源码分析ethdb源码分析

兄弟连区块链入门教程以太坊源码分析ethdb源码分析,2018年下半年,区块链行业正逐渐褪去发展之初的浮躁、回归理性,表面上看相关人才需求与身价似乎正在回落。但事实上,正是初期泡沫的渐退...

兄弟连区块链入门教程
20分钟前
1
0
Eclipse下忽略掉node_modules目录相关配置

https://blog.csdn.net/yzf913214/article/details/72872523

张宏亮1982
21分钟前
1
0
在Python-dataframe中如何把出生日期转化为年龄?

我们在做数据挖掘项目或大数据竞赛时,如果个体是人的时候,获得的数据中可能有出生日期的Series,举个简单例子,比如这样的一些数: # -*- coding: utf-8 -*- import pandas as pd from ...

Mr_zebra
24分钟前
1
0
Android入门—activity生命周期

activity生命周期如下所示: onCreate()方法 创建activity时使用onStart()方法 当activity界面变为用户可见时调用onResume()方法 当activity界面获取到焦点时调用(界面按钮可点击,...

haoyuehong
26分钟前
1
0
使用C++ Builder 6编译产生错误

错误提示: [C++ Error] E2075 Incorrect project override option: Files\Borland\CBuilder6\lib\vcl60.csm[C++ Error] E2075 Incorrect project override option: Files\Borland\CBuilde......

simpower
28分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部