【稳定性】稳定性建设之弹性设计 | 京东物流技术团队

背景

随着业务的快速变化和技术的不断发展,系统面临着诸多挑战,例如流量峰值、依赖服务故障、硬件故障、网络中断、软件缺陷等,这些因素都可能影响到系统的正常运行。在这种背景下,弹性设计(Resilience Design)应运而生。弹性设计是一种系统的设计和构建方法,系统的设计原则应该本着不信任外部资源(外部API服务、网络设备、存储、消息等)100%可用的原则,在关键处理路径上针对上述可能发生故障的点进行容错加固设计,保护系统自身的可用性。它的目标是使系统能够在面临压力和不确定性时,保持服务可用性和性能,而不是简单地在问题出现后进行修复。弹性设计考虑到了系统可能会遭受的各种攻击,包括物理攻击、网络攻击、软件错误等,并采取了相应的预防措施。

弹性设计的核心思想是预见并应对系统可能面临的风险和挑战,这需要对系统的需求、架构、组件和服务进行深入的理解和管理。弹性设计还强调了自动化和快速响应的重要性,以便在问题发生时,能够迅速地检测到问题并采取相应的措施。

总的来说,弹性设计为系统稳定性建设提供了一种新的视角和方法,它有助于提高系统的可用性、性能和安全性,同时也降低了维护和修复的成本和风险。

一、故障隔离标准

1、故障隔离概念

故障隔离是指当系统中某些模块或者组件出现异常故障时,把这些故障通过某种方式隔离起来,让其不和其他的系统产生联系,即使这个被隔离的应用或者系统出现了问题,也不会波及其他的应用。故障隔离方案是一个应用系统实现高可用的重要组成部分。

2、故障隔离原因

系统必须具备防止故障从一个系统/组件传播到另一个系统/组件的能力。故障从一个系统/组件传播到另一个系统/组件通常有以下两种原因。

1.系统/组件间强依赖:如果系统/组件间存在强依赖,当一个系统/组件发生故障时,强依赖它的组件将无法正常工作。防止强依赖引发的故障传播,通常的手段是将强依赖转化为弱依赖或最弱依赖,比如设置合适的超时、捕获异常、同步依赖转异步依赖、提供备份组件等。

2.系统/组件间共享资源:如果系统/组件间存在共享的资源(如线程池、数据库连接池、网络连接池、内存区等),当一个系统/组件因为故障耗尽了共享的资源后,所有依赖该资源的系统/组件也都会发生故障。防止共享资源引发的故障传播,通常的手段是对组件的资源使用建立配额体系,或者为重要组件提供专用资源

二、访问量控制标准

访问量控制是指服务提供者或者服务使用者对服务资源有效的SLA控制,在做访问量控制设计时,需要关注以下几方面:

1.服务提供者必须给出本服务(包括系统调用服务、页面服务等)的访问策略,包括最大的访问能力、其它访问约束(如参数约束、单账户访问约束等),说明违反服务访问策略的后果。

2.服务提供者需要对违反服务访问策略的情况,实施管控措施。我们要求所有对外提供服务的系统(如对外服务的网关系统、对外服务的web系统等)必须具有防止外部访问过载的能力(即具备限流能力)。

3.渠道入口系统需要具备能够降级入口服务的能力,确保入口功能服务在出现异常时,在交易链路的最前段截断异常,防止影响扩大

4.服务调用方需要对关键场景下的非关键服务访问进行容错设计,常用的手段包括(熔断、降级)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值