语言选择: 简体中文简体中文 line EnglishEnglish

行业资讯

易发真人手机版如何自动化混沌工程进一步提升分布式系统的稳定性

  易发真人网页版2022年是“十四五”规划的关键之年,各行各业都在探索数字化转型中的新机遇。银行数字化转型的重量级指导文件——中国人民银行的《金融科技发展规划(2022—2025年)》(以下简称“发展规划”)和银保监会的《关于银行业保险业数字化转型的指导意见》(以下简称“指导意见”)先后印发,这对在积极筹备数字化转型工作的各类银行而言,正是2022年开年布局的最好指导。文件明确提出要“加快金融机构数字化转型”以及“推动传统架构向分布式架构转型”。对于金融企业而言,数字化转型早已成为必答题,银行、保险、证券等金融企业都在积极破局求变,纷纷向分布式架构转型,驶入数字化转型的“快车道”。

  但是从传统IOE架构向分布式转型也存在很多的风险。分布式架构和云计算的运用,无论是服务器、系统和服务规模,还是架构复杂度都在上升,同时,大量使用x86架构的PC服务器,相对于传统IOE架构,PC服务的硬件自身的可靠性也在下降。另外系统开发越来越快,业务变化频繁,业务复杂度高,用户多,并发性高,系统运行过程中的风险可能隐藏在某些“看不见,摸不着”的微小环节和部位,可能是一个运维端口,也可能是一条命令的下发通道,业务连续性保障难度也越来越大。

  为了在复杂的分布式系统架构下保障业务连续性,一方面,我们应该通过被动的生产事故分析以及故障模拟演练,尽可能多地去发掘引发故障的原因和场景,对于故障原因明晰且能够修复的,应该及时加以修正;另一方面,对于故障原因随机无法确认的,应该通过主动的故障注入模拟,验证系统是否存在有效的容灾机制,防止故障影响进一步扩大,使应用能够及时恢复正常并继续提供服务;最后,在以上条件都已满足的基础上,通过大规模成体系自动化的混沌工程演练,自主探索那些我们尚未知晓,但对于系统健壮性存在潜在影响的领域。

  这种通过主动模拟故障,来验证系统的稳定性的方法是混沌工程。易发真人手机版混沌工程是在分布式系统上进行实验的学科,目的是建立对系统抵御生产环境中扰动的能力和信心。混沌工程起源于2010年Netflix创建的ChaosMonkey,它随机性地在系统中注入故障,模拟相关场景,尽可能多地识别出故障易出环节,从而可以有针对性地提出解决方案,易发真人手机版并对系统进行加固和防范。

  根据中国信通院2021年11月发布国内首个《中国混沌工程调查报告》的结论:混沌工程在企业内部的渗透率偏低,使用阶段也比较初级。混沌工程在企业内部的渗透率偏低:超过3成企业使用混沌工程的产品比例低于25%,仅8.68%的企业内部应用混沌工程的占比超过75%。企业内部的很多使用场景、产品尚未采纳混沌工程,未来有较大渗透空间。大部分还不能做到完全自动化,需要人为地去设计测试案例,再执行案例,存在测试效率低下,耗费较大人力的问题。我们现在很多业务的版本迭代速度非常快,如果每发布一个版本,我们都要去跟进、做实验,会产生极高的人工成本,所以我们需要去做一些自动化的实验。

  下面以某银行的一个应用为例,该应用涉及A、B、C、D四个服务,以及数据库和kafka的基础IT组件。在没有自动化的情况下,混沌工程测试人员需要查阅资料了解该应用的服务架构、IT基础架构、服务之间的依赖关系等,然后对每一个服务和IT组件编写故障测试案例,最终执行测试。对测试人员的能力要求高,易发真人手机版做一次完整的测试需要准备很长时间,限制了混沌工程的开展。

  通过可观测性的架构感知能力,发现被测覆盖主机、网络、系统、设备、应用等对象,可观测性的好处是可以实时的获取应用的真实运行的状态,减少了测试人员查阅技术文档的工作。

  通过这种图,可以看到服务之间的调用关系:A服务调用B服务,B服务调用C服务,C服务调用D服务。也可以看到IT基础架构:该应用涉及四个应用容器,和数据库IP1,数据库IP2,数据库IP3,缓存服务器IP4。

  根据发现的服务、设备等组件,结合故障专家库,生成对应的故障点上涉及的故障类型,形成故障测试案例。故障专家库是一个根据生产和经验设定的专家库,包含了不同应用和组件的可能发生的各种故障。故障专家库可以从历史事故中进行统计,也可以依赖有经验的运维专家来评定。常见的故障经验库如下:

  l 数据库故障:IP1、IP2、IP3这三个数据库每个数据库可能发生4种故障,一共就是12种故障

  针对例子中的应用,一共存在49种可能的单一的故障。这么多故障如果都进行混沌工程,那么成本很高。如何对众多的故障进行评估,找到最有价值的故障?

  混沌工程测试的过程中,对各种可能的故障进行识别后,还要对每个故障进行评估,这一步是很重要的,只有准确的对每个故障进行评价,才可以分清故障的重要程度并确定需要预防和改善的优先级,才能提出并采取对应的应对措施。可以参考FMEA的失效模式评估与决策方法。

  FMEA,中文译为潜在故障模式影响分析,是一种广泛使用的事前预防的重要定性分析方法。它针对某一产品的组件或某个过程,列举和探究其可能存在的潜在故障模式,并确定各个故障模式所造成的影响,以便进行事前预防和应对。FMEA最重要的作用是分析通过对风险度进行计算,从而对故障风险进行了量化,并提供了评定故障等级的标准。根据风险度数值的大小,对所有故障进行降序排序,就能够确定故障应对的优先顺序,为合理应对系统的故障提供依据,从而引导有限的资源优先去应对排名较高的关键故障。

  如何评价失效模式的影响大小、需要引入“致命度”这一概念。“致命度”是用来评估失效模式所造成的破坏的指标。FMEA分析可以量化各类失效模式的致命度,并对其进行降序排序。在预防和改善时,只需重点预防和改善致命度较高、排名较靠前的失效模式。

  l 故障严重度指特定故障模式发生后对业务功能、经济性所造成影响的严重程度。此要素可以量化进行评价

  致命度的数值越大,则该故障模式所造成的破坏越大,应对其进行预防和改善。算出各个故障模式的致命度以后,就可以对故障模式进行降序排序。通常情况下,排名前的故障模式引发的致命度占总致命度数值的80%以上,需针对前20%的关键少数采取预防和改善措施,效果较为明显。

  可以看出A服务和B服务的故障类型是一样,但是每个故障的发生度和严重程度不一样,导致同样的故障所造成的的致命度是不一样的。对致命度排序后,选择排名前20%的故障,本文例子中的49个故障选取其中最关键的10个故障进行混沌工程,大幅减少了工作量。

  金融企业一般都会有自动化测试平台,可以将混沌工程的流程编排成自动化任务,每天进行测试,减少人工手动完成。通常把混沌实验和DevOps流水线集成起来,每发布一次版本都会自动调用混沌平台的固定测试任务去执行。这样的话,无论每次在何时何地发布版本,实验都会被自动地引用执行,大大降低了我们实验的人力成本,提高了实验效率。

  简化了测试人员手工操作,提升测试效率。没有自动化的方法,混沌工程一个故障演练下来至少是小时级以上的。有了自动化的方法,做实验的效率大大提升了。编排一个实验,编排它的靶点、实验配置、观测指标,几乎可以做到分钟级。几分钟时间,我们就可以把整个实验编排出来,然后一边做实验一边观察效果,同时去发现问题、分析问题,大大缩短了实验时间。

  降低混沌测试门槛。不需要测试人员对应用和基础架构有深入的了解,就可以方便的进行混沌工程测试。

  目前国内金融企业在混沌工程落地已经取得了一些成绩。北京银行基于云原生、分布式架构自主研发的顺天技术平台以混沌工程为抓手积极推动数字化转型中的信息科技稳定性保障能力建设,通过技术创新驱动金融业务敏捷升级,进一步助力业务连续性水平提升,走出一条“敏稳双态”的金融科技创新发展之路。2021年北京银行在生产环境上云部署28套业务系统,其中分布式核心系统、柜员系统、网银系统等7套重要业务系统开展了混沌工程实践,混沌工程覆盖率达25%。工程实践模拟了175个带有银行业务属性的故障场景,在执行过程中所有场景的测试过程、验证过程、监控观测过程全部使用自动化工具完成,通过工具开发、自动化脚本开发、编排程序开发完成自动化能力建设,合计积累了70余个自动化测试场景、120余个程序脚本、18项自动化原子故障注入模型,为银行业务系统规模化故障模拟演练提供了自动化工具支撑。

  总结来说,简单、低成本、自动化的混沌工程平台能够支持大规模、常态化的系统稳定性测试,保证银行向分布式系统、云原生架构的顺利升级,加快金融机构数字化转型。返回搜狐,查看更多