分布式系统故障容灾治理总结
最近刚好得闲来整理一下自己这几年工作的经验,这篇文章将会整理总结对于分布式系统的容灾配置的经验与思考。
思路
设想现在有一个系统处于整个链路的中游,上游对该系统有依赖,且该系统对下游也有依赖
我们的目的是为了保障链路的可靠性,所以此时我们应该从以下几点去思考:
1.如果上游系统突然有海量请求袭来,我们应该怎么处理?
2.如果下游系统崩了或者接口耗时突增,我们应该怎么处理?
Tips:下游系统可能不仅是其他API服务,也可能是Redis、Kafka等中间件系统。
核心思想
我们做分布式系统故障容灾治理的核心思想是当我们系统统的上下游发生故障时,要最大程度的保证我们系统的可用性,保证系统不发生崩溃。
故障场景
上下游系统出故障/预期外容灾时其实可以分为以下几种情况:
1.上游突然发起海量请求
这个时候我们的系统会收到超过平时N倍的请求,此时会对系统的网络连接池、数据库连接池及其他中间件连接的线程池发起挑战。遇到这种情况我们可以设想最坏的场景:即我们接口的响应速度比请求产生的速度慢,那么请求会越来越多,产生挤压,甚至产生雪崩效应,导致下游系统也被拖垮。所以我们要采用“快速失败”的策略:
a.设置合理的连接超时时间
b.将等待超时的连接丢弃(等待时间过久的连接可能已经失效)
c.设置合理的网络连接池、数据库连接池及其他中间件连接池最大连接数
d.如果可以的话,对每一个对外暴露的接口或者控制器设置最大连接数
e.将接口降级,即只保留核心逻辑,比如下单接口此时只执行核心下单逻辑,其他非必要逻辑暂时不执行
f.将接口熔断,如果接口非核心接口,则可以将接口暂时禁用
2.下游系统崩溃/响应速度变慢
这个时候我们调用下游的请求耗时就会增大,甚至可能每次请求都会耗时最大Timeout,此时我们系统的接口耗时也可能因此增大,设想最坏的场景:下游每次请求都耗时max_timeout,而上游对我们设置的max_timeout可能也是此时接口的耗时,那么上游有可能会多次重试,甚至导致出现场景一“上游突然发起海量请求”的情况。为了保证我们系统的可用性,我们依然需要采用“快速失败”的策略:
a.对下游接口返回设置合理的最大超时时间
b.设置合理的重试次数,不采用无限重试策略,尽量在业务代码中实现重试逻辑
c.设置合理的网络连接池、数据库连接池及其他中间件连接池最大连接数
d.在下游接口返回失败时,如果非核心数据,可以采用降级策略,将这部分数据忽略
e.如果在某段时间内该下游接口失败或超时次数超过了限制,则跳过调用该接口一段时间
方法总结
其实从上面可以看出来当上游系统请求突增时可能会导致下游系统崩溃/响应速度变慢,当下游系统崩溃/响应速度变慢时也可能会导致上游系统请求增多,所以对分布式系统进行故障容灾处理的策略可以认为是相同的:
a.合理设置系统对外的服务和调用下游的连接最大超时时间
b.将等待超时的连接从连接池中丢弃
c.设置合理的重试次数,不采用无限重试策略,尽量在业务代码中实现重试逻辑
d.设置合理的网络连接池、数据库连接池及其他中间件连接池最大连接数
e.如果可以的话,对每一个对外暴露的接口或者控制器设置最大连接数
f.采用降级和熔断策略,最大化保证核心流程可用
以上就是对于分布式系统故障容灾处理的总结,不仅是在治理的时候,我们在平时设置各种参数的时候也需要考虑到这些问题,保证系统的可用性及稳定性。
分布式系统故障容灾治理总结相关推荐
- 政务系统故障容灾备份解燃眉之急
建军节前夕,军民融合的气氛愈加热烈,然而就在周日(7月31日)下午,罗定市经济和信息化局(以下简称"罗定经信局")政务系统因生产服务器存储突然损坏而无法正常运行,市委促进双拥工作的 ...
- 支付宝的高可用与容灾架构演进
http://mp.weixin.qq.com/s?__biz=MjM5MDE0Mjc4MA==&mid=402390133&idx=1&sn=395cf6e500ea912f ...
- GBase 8s分布式功能之异地容灾
异地容灾即HG节点在远程存在备份,所有HG节点的异步备份节点承担查询.分析等次要业务场景.GBase 8s节点通过GBase 8s HAC高可用机制实现远程异步复制,支持多台HAC备机,进一步提高高可 ...
- 如何构建故障与危机的处理能力?《高可用及容灾架构体系化建设》下篇
如何建设全面的高可用及容灾架构体系,是一个涉及到广泛领域的话题,将分成上.下两篇呈现给读者.本文将在上篇的架构基础上,构建完整的故障与危机的处理能力,同时通过持续运营与组织保障机制的协同,打造出全面的 ...
- 重新理解“无容灾不上云”:应用多活将成为云原生容灾新趋势
作者:Tina 互联网技术发展到了 2021 年,上云也更加普遍,但宕机事件却似乎没怎么减少. 这一年 10 月,拥有 30 亿用户的脸书 (Facebook) 遭遇大规模宕机,中断服务约 7 小时后 ...
- EDAS微服务应用同城容灾最佳实践
简介:大多数业务应用只要做到同城双活,就可以避免掉大多数数据中心不可用故障.本实践就是帮助大家高效.低成本地实现自己的业务应用具备同城双活容灾能力. 作者:神鱼,阿里云解决方案架构师 前言 上云目前已 ...
- 【华为云技术分享】云小课 | SAP容灾一点通
许多企业已经在华为云上部署了SAP HANA系统来运行它们的业务,为了保障SAP业务的连续性,SAP解决方案所提供的高可用(HA)和灾难恢复(DR)方案是这些企业选择云上部署的重要因素.除了SAP软件 ...
- 第九篇:稳定性之面向失败设计【可用性架构设计、可用性容灾】
前言 在互联网系统中,每个系统都有服务的上线,所以当流量超过服务极限能力时,系统可能会出现卡死.崩溃的情况,那么就需要各种手段或者策略,来保证系统的稳定性.可用性,系统以牺牲部分请求或延迟处理,来提供 ...
- 怎么做硬盘数据容灾备份,数据容灾备份方案
最关键的问题在于如何利用数据备份和容灾策略尽快恢复业务系统,恢复原有的业务数据,使其能正常运行.为了能在需要的时候恢复数据,企业必须建立自己的数据备份与容灾系统. 数据备份是容灾的基础 ...
- 徐州社保容灾备份系统集成和设备采购goldengate
一.本项目中小型机.磁盘陈列.服务器.光纤交换机.数据库复制软件财政部门已审核同意购买进口产品,其余产品采购的是非进口产品 二.本项目不接受超过580万元的投标报价. 三.系统现状 徐州市劳动和社会保 ...
最新文章
- java 转型概念_转型(java)(.net)
- 如何设计一门语言(六)——exception和error code
- java判断线程是否死锁_c++多线程锁 Mutex 自动判断死锁
- IDEA Maven项目左边栏只能看到pom文件
- 五、Docker+Sqlserver
- Day01 - 打开Linux大门
- Java-图书管理系统(控制台程序)
- MySQL安装及可视化工具使用
- 受微软信任的交叉证书将在2021年4月到期,代码签名证书将无法签内核驱动,安信教你如何才能再给驱动签名
- html能计算吗,使用(JavaScript和HTML)计算总数
- J.A.R.V.I.S.
- Rockchip | 启动引导的各个阶段及其对应固件
- Openvpn 客户端路由配置
- Android uses-permission 权限大全
- shell脚本:遍历指定文件夹下.jar后缀的文件,并备份到目标文件夹
- 变脸软件成犯罪帮凶​,上万个限用微信号被“复活”
- 微博爬虫及舆情分析-4.用户舆情分析
- [BZOJ4889][洛谷P3759][TJOI2017]不勤劳的图书管理员 分块+树状数组
- 中国的手机号码格式化/分类工具
- NBIOT模块 BC26 openCPU LWM2M协议传输数据到OneNet平台
热门文章
- java菱形_Java 之 菱形
- Altera的单时钟同步FIFO,带empty和full端口
- 输入法兼容 android,搜狗输入法5.1版发布 兼容Android 4.4
- 直流屏电源模块GF22007-2高频充电模块R22007
- 有赞搜索系统的技术内幕
- LEARNING ACTIONABLE REPRESENTATIONS WITH GOAL-CONDITIONED POLICIES
- 常用网络故障排除命令介绍
- sql升级重启计算机失败win10,win10纯净版安装sql server 2008重启失败的解决办法
- Shattered Cake
- 献给正在纠结的朋友——转产品还是转测试