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

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,一经查实,立即删除!

相关文章

AI人工智能讲师叶梓:语言模型的推理、行动与规划:LATS框架的探索与实践

在人工智能的发展历程中,语言模型的推理、行动和规划能力一直是研究的重点。近期,一种名为LATS(语言智能树搜索)的通用框架引起了广泛关注,它成功地将大型语言模型(LLMs)的规划、行动和推理能力…

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

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

Mockito单元测试

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

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

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

网络字节序

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

Hive:trunc函数

一、日期 TRUNC函数为指定元素而截去的日期值。 其具体的语法格式:TRUNC(date[,fmt]) 其中: date 一个日期值 fmt 日期格式 -- 如果当日日期是:2022-11-02 select trunc(2022-11-02,MM)        --2022-11-01 …

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…

Paper 4问 迅速理清框架

读paper的时候带这个思路去读 1.What is the research problem, and what is the significance of the research? 2.What is state-of-the-art research status of the research problem? 3.Describe the methodology of the paper, and describe the advantage of the prop…

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…

特殊统计SQL实例分析:活动答题记录表的多维度统计

特殊统计SQL实例分析:活动答题记录表的多维度统计 引言数据表结构应用场景与SQL查询实例问题一:活动7天,每人每天有3次机会,每次机会答5道题,每5道题一个批次,答对有状态status为Y。现在需要获取活动期间每…

flutter知识点---手势识别原理

Flutter 的手势识别原理涉及事件分发、手势检测、手势识别器(GestureRecognizer)以及手势识别组件(如 GestureDetector)的协同工作。以下是对这一原理的说明: 事件分发 事件捕获: 用户与屏幕交互产生的触摸…

ARM学习

uart.c #include "uart4.h" void uart4_config() {//使能GPIOB\GPIOG\UART4的外设时钟RCC->MP_AHB4ENSETR | (0x1<<1);RCC->MP_AHB4ENSETR | (0x1<<6);RCC->MP_APB1ENSETR | (0x1<<16);//设置PG11和PB2为管脚复用功能//PB2GPIOB->MOD…

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

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

【架构-13】云原生架构

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