中电金信:夯实云原生时代的系统韧性建设——中电金信混沌工程金融业实践

IT系统建设在经历过单机、集中、分布式的演变历程后,系统运维演练、故障模拟测试的复杂度也不断提高。在复杂的分布式系统中,基础设施、应用平台都可能产生不可预知的故障,在不能确知故障根源的情况下,我们无法阻止故障的发生。更恰当的思路是致力于这些风险发生之前,模拟和演练故障触发的场景,识别和了解故障触发的规律和影响,再有针对性地进行加固、防范,从而规避故障发生所造成的严重后果。基于混沌工程技术开展的混沌工程测试,更加系统化模拟了真实场景下可能出现的故障(或故障组合),能够达到检测、验证、分析被测分布式应用环境的健壮性和边界,尤其在当前全栈全域技术自主可控趋势的背景下,复杂故障的场景组合选取就成为迫切需要解决的痛点问题。

01 混沌工程演练的场景探索

为了能更加系统化模拟真实场景下可能出现的故障,解决全栈全域技术信创趋势背景下,复杂故障的组合场景选取的痛点,混沌工程平台产品在技术能力、实践方法论及故障设计方面可以进行如下针对性的探索。

■ 在技术能力方面。混沌工程平台应在具备IaaS、PaaS、SaaS三个系统层级故障模拟能力的基础上,进一步完成服务支撑层的整合搭建,例如引入压测全流程管理、可视化监控能力、自动化混沌测试等模块,使得产品功能更加丰富;可以支持架构选型、全链路压测、混沌工程测试、运维红蓝对抗演练四大重点业务场景;另外应开展自动化混沌工程技术的落地实践,为行业客户提供功能更加完备的智能化平台。

■ 在混沌工程实践方法论层面。以成熟的流程制度牵引混沌工程的实施过程,流程需涵盖测试、开发单位、架构、需求、运维等多个专业部门在实施过程中的分工与责任落实。中电金信在整个混沌工程测试的实施过程中,总结出混沌实施七步法,包含目标确定、稳态指标制定、故障设计、流程编排、实验执行、结果分析、修复验证,这个七步法贯穿了整个流程,保障了实施过程的高效有序。在七步法中,最关键的一步是“故障设计”这个环节——决定了我们要测试哪些故障案例,按照什么优先级的顺序,测试的方法步骤是什么。

■ 在故障设计方面。需要以完备的框架来牵引场景挖掘和故障设计。根据多年的实践经验,中电金信沉淀出故障设计指南,引入FMEA理念指导具体系统、具体场景风险优先级的评估,并结合金融领域混沌工程标准用例集和指标评估体系,使得混沌工程的落地不必从0到1开始,极大地降低了实施门槛,实现了在对具体系统定制化故障场景设计的同时,可以应用更少的故障场景发现更多的系统风险隐患。

02 典型案例

以华南某银行新手机银行项目为例,具体分析如何实施针对分布式银行核心业务系统的混沌工程实验——如何制定目标、设计故障、有效执行、关注指标以及效果评估。

■ 项目概述。华南某银行个人手机银行系统于2012年规划建设,基于“传统单体架构”,手机银行承载了账户管理、贷款、理财等基本功能和客户服务能力。面临客户量增长、客户快速变化的多元化需求以及信创相关安全问题,客户决定于2023年启动新一代手机银行系统建设,新系统基于全栈信创的金融交易云底座,部署于K8s容器云环境。手机银行属于重要对客系统,对系统稳定性提出了更高要求,因此在上线前,通过混沌工程保障和提升手机银行系统的稳定性能力,通过在测试环节对手机银行系统进行高可用能力准出,验证和提高系统的韧性,验证容器编排合理性,保障新手机银行系统平稳上线。

■ 实施方案。主要采用两步走的方法进行系统测试。

(1)平台搭建,主要工作为建立混沌测试系统化的流程,为系统上线沉淀经验。搭建一套混沌工程测试系统用于进行各类故障的模拟,并编写故障测试案例用于场景适配。本项目中所搭建的混沌工程平台涵盖基础设施、平台、应用各层进行故障注入的同时实现测试过程、结果的可视化展示,平台部署架构如图所示。

图片

图 平台部署架构

平台主要由基础管理模块和功能模块组合。基础管理模块:包括环境管理、系统管理、事件管理等,涵盖机器管理、应用管理、部署单元管理、K8s集群管理、用户管理、权限管理、角色管理、菜单管理、系统资源实验事件和应用实验事件管理等子模块。功能模块:包括测试管理、演练管理等子模块,其中测试管理模块支持测试计划的管理编排,支持发压脚本、常规实验场景、实验任务执行队列、压力机资源、监控跟踪、实验报告信息查看、测试场景信息统计分析、并发实验监控、可观测性及压测全流程管理、自动化故障设计和实验案例生成、自动化实验报告生成等功能。

(2)故障模拟,主要工作为模拟各类故障,暴露隐患和缺陷。仿真模拟硬件故障/软件故障/网络故障/人为故障/异常/攻击等状态,观测系统在CPU/内存/网络等故障发生时处理状态。

实际项目推进中,通过需求调研,选取了16支高频交易提供压力注入,通过源启混沌工程平台的压力发起能力进行交易数据模拟,针对系统响应时间、TPS、成功率等业务指标和CPU、内存、网络、IO等系统指标进行采集,经由平台集成的监控体系予以图形化展示,并最终形成阶段性测试报告,对系统画像进行呈现。

其中,针对该手机银行系统的PaaS底座和SaaS服务中的机制与特性,共设计编写超过150个案例,涉及的故障场景包括:进程拉起服务的启停、系统宕机、宕网卡、停应用、停服务、进程挂起、JVM异常、Druid数据库连接池打满、模拟机房故障后的集群切换等。

以上所有案例均由源启混沌工程平台执行,有效验证了容器环境下的多项系统高可用能力。

■ 应用成效。在自主可控软硬件运行环境中,源启混沌工程平台完成了对部署于K8s容器云平台的分布式架构新手机银行完备的可用性测试,对增强系统稳定性、提高系统质量,具备实际效益和重要意义。通过本次测试,验证了容器环境下的集群高可用性、负载均衡有效性、故障转移有效性、服务注册&服务发现有效性、服务自我拉起、超时有效性、强弱依赖有效性、数据库集群有效性、批量服务高可用能力。

另外在混沌测试执行过程中,发现了一系列与K8s容器相关的问题,涵盖PaaS组件以及SaaS应用等。根据发现的问题,后期编制形成符合高可用等要求的项目上线规定,对上线的K8s容器管理的组件、业务应用的探活方式以及探活的各配置参数都有了指导性建议。

截至目前,共执行实验场景150余项,累计实验500多次,编制混沌测试结果分析明细报告12份,总计1000页+,汇总编制混沌测试汇总报告1份,发现系统问题58项,并给出相应的优化建议或解决方案。

■ 创新经验。以高可用测试的具体能力项(如负载均衡有效性、强弱依赖有效性)为基本单元,按照测试场景需求,将原子混沌工程故障场景进行有效组合。并应用混沌工程平台完成多个维度的高可用能力项测试工作。

实现对测试缺陷管理的全过程管理,支持测试缺陷全过程的跟踪、状态修改,对测试缺陷进行管理和汇总。

在测试工作中引入自动化能力,将系统架构内置于平台库中,并基于高可用专家库模板功能,实现自动化故障设计和实验案例生成,并在实验执行完成后自动化生成实验报告。报告维度包括:测试案例、测试实验、业务指标观察、系统资源指标观测、实验结果分析、测试缺陷的关键环节数据依据等。有效降低人工重复的工作内容,大幅提高混沌工程的实施效能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/818814.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

3D可视化技术:研发基地的科技新篇章

在科技日新月异的今天,我们生活在一个充满无限可能性的时代。而在这个时代中,3D可视化技术正以其独特的魅力,引领着科技领域的新一轮变革。 3D可视化技术通过三维图像的方式,将现实世界或虚拟世界中的物体、场景等以立体、逼真的形…

Mockito单元测试

文章目录 Mockito单元测试 为什么要使用Mock?导入依赖import导入包使用Mock模拟测试某个类中的某个方法是否可以成功执行使用Mock模拟某个类的方法,自己给这个方法返回我们指定的值使用Mock模拟某个方法调用后会抛出指定的异常使用Mock模拟测试某个类中的某个方法(…

04—常用方法和正则表达式

一、字符串 1.length 属性返回字符串的长度(字符数)。 2.在字符串中查找字符串 indexOf() 字符串使用 indexOf() 来定位字符串中某一个指定的字符首次出现的位置 如果没找到对应的字符函数返回-1 lastIndexOf() 方法在字符串末尾开始查找字符串出现的位置。 3.replace() 方…

网络字节序

什么是网络字节序 网络字节序是网络传输的过程中所采用的字节序,那么网络传输的过程中一般都采用什么字节序呢? 答案是大端字节序。 字节序分为大端和小端,他们代表多字节数值在内存中的存储方式。下面咱们讲解一下什么是大端,什么是小端? 大端字节序:数值的最高位字…

Linux安装docker(含Centos系统和Ubuntu系统)

一、Centos系统 1. 卸载旧版本依赖 sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine 2. 设置仓库 安装所需的软件包。yum-utils 提供了 yum-config-manager &…

实时传输,弹性优先——物联网通讯打造数据上传新标杆

随着信息技术的飞速发展,物联网技术已经成为连接物理世界和数字世界的桥梁。在物联网领域,数据上传的速度、稳定性和灵活性是评价通讯技术优劣的重要指标。近年来,物联网通讯在实时传输、弹性优先方面取得了显著进展,为数据上传树…

设计模式:时序图

设计模式:时序图 设计模式:时序图时序图元素(Sequence Diagram Elements)角色(Actor)对象(Object)生命线(Lifeline)控制焦点(Focus of Control&am…

Spring Boot 统一功能处理(三)

本篇主要介绍Spring Boot的统一异常处理。 目录 一、统一异常处理的使用 二、测试统一异常处理效果 三、浅析原理 ControllerAdvice简析 统一处理异常简析 一、统一异常处理的使用 在前面介绍统一数据返回时,我们在程序发生异常时会把整个报错信息都封装在da…

ELK日志收集和备份填坑实战 (滞后8个小时等时区问题)

ES的备份:ES快照备份 根据时间,每天零点在Linux机器crontab来调用api接口实现快照备份,通过快照备份,可以定准恢复到某一天的日志。 现象:(坑:但是恢复某一天日志,发现会少8小时的日…

《云原生安全攻防》-- 云原生攻防矩阵

在本节课程中,我们将开始学习如何从攻击者的角度思考,一起探讨常见的容器和K8s攻击手法,包含以下两个主要内容: 云原生环境的攻击路径: 了解云原生环境的整体攻击流程。 云原生攻防矩阵: 云原生环境攻击路径的全景视图&#xff0…

Python数据可视化库—Bokeh与Altair指南【第161篇—数据可视化】

👽发现宝藏 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 在数据科学和数据分析领域,数据可视化是一种强大的工具,可以帮助我们…

【数据库】表的增删改(CUD)

目录 一、insert 插入 1.单行插入: 2.多行插入: (1) insert into 插入: (2) replace into 替换插入: (3) 图片插入 : 二、update 修改 三、delete 删除 一、insert 插入 语法: INSERT INTO table_name…

服务器负载均衡SLB/加密原理

多台服务器提供相同的服务 SLB(server load balancing) 多台服务器对应一个虚拟地址,该地址是防火墙虚拟出来的。 服务器负载均衡功能仅支持IPV4协议 多通道协议仅支持FTP协议

【架构-13】云原生架构

云原生架构产生背景? (1)大量资源被占用且难以分享,上云后,云厂商提供统一的IaaS能力和云服务。 (2)提供极致性能的云原生算力。 (3)集成服务,构建管理数据、…

Android Studio通过修改文件gradle-wrapper.properties内容下载gradle

一、问题描述 在Android Studio中新建项目后会下载你所新建的项目的activity/gradle/wrapper目录下所配置的gradle-7.3.3-bin.zip包(笔者的是该版本包),而大多数时候会下载失败,如下 二、解决办法 新建工程后,取消下…

AI术语大全:AGI、LLM、GenAI、GPT、ChatGPT和AIGC是什么意思?

讲动人的故事,写懂人的代码 自2022年底ChatGPT在全球AI界闪亮登场以后,你是不是经常听到AGI、LLM、GenAI、GPT和AIGC这几个词,但总是分不清它们到底是什么意思? 今天,我就用简单的话来给你讲讲这些词到底是什么意思。 AI,人工智能(Artificial Intelligence),就是让机…

JavaWeb开发03-Mybatis入门-基础操作-XML映射文件-动态SQL

一、Mybatis-入门 Java程序控制数据库 1.入门 定义实体类:一定要和表中的字段一一对应 配置连接数据库数据 建立Mapper层语句,来获取数据库数据以及将其封装到user的list中去。 2.配置SQL提示 为了进行查询数据库中有哪些表,所以得连接数据…

【AngularJs】前端使用iframe预览pdf文件报错

<iframe style"width: 100%; height: 100%;" src"{{vm.previewUrl}}"></iframe> 出现报错信息&#xff1a;Cant interpolate: {{vm.previewUrl}} 在ctrl文件中信任该文件就可以了 vm.trustUrl $sce.trustAsResourceUrl(vm.previewUrl);//信任…

FPGA - 仲裁器的设计实现

一&#xff0c;为什么做仲裁 在多主单从的设计中&#xff0c;当多个源端同时发起传输请求时&#xff0c;这个时候就需要仲裁器来根据优先级来判断响应哪一个源端&#xff0c;向其传输数据。比如&#xff1a;以太网仲裁&#xff0c;DDR仲裁&#xff0c;光纤传图仲裁..... 二&a…

electron打包编译国产统信uos系统 arm架构 x86架构 linux mac等环境

electron v21版本以上统信UOS会提示gbm_bo_map错误&#xff0c;可使用v8~v21版本的electron 打包linux包需要再linux系统下运行编译&#xff0c;arch可以指定架构 如果要在统信uos上运行&#xff0c;需要打包成deb格式&#xff0c;在target中修改成deb 或者用第三方软件把app…