保证数据不丢失、业务不中断是证券公司开展业务的两条底线。随着业务不断发展,用户体量持续增长,业务场景越来越复杂,系统架构为满足业务需求,已从传统的单节点架构逐渐转变为分布式架构和集群架构。技术变革的同时,带来的是系统运行不稳定因素的累积。如何有效降低系统运行的不稳定因素,提升系统业务连续性,保障客户服务水平,成为数字化转型工作中的一项重要任务。
国投证券业务稳定性保障工作贯穿于研发、测试、运维的全生命周期,针对故障预防、故障感知、故障处置、故障改进构建了系列化稳定性保障工具。其中,如何通过有效手段提前发现系统运行风险,在造成业务影响之前消除风险隐患,做到防患于未然,成为了系统保障人员持续思考的问题。
关键词:故障预防;盘前巡检;低代码;智能感知;混沌工程
一、业务稳定性保障的思考
证券业务交易链路长、环节多,整个交易链路包括终端、运营商网络、渠道系统、资金存管、柜台系统、报盘系统、交易所网关,成交回报等环节,每个环节都需要保持高效、稳定。同时,业务系统具有传统架构与分布式架构、外部采购与自研开发方式并存,实时性、准确性要求高等特点,为系统的稳定性保障带来了较高的挑战。
传统的运维保障手段往往聚焦于事中监控告警和应急处置能力的建设,但故障的预防和提前识别,才是一种投入小、回报大的系统稳定性保障方法。
国投证券通过盘前巡检,做好开市前的各项准备状态检查;通过业务感知,先于用户发现问题;通过混沌演练,提前识别系统风险并进行改进。综合上述手段的应用,有效降低了故障发生的可能性,为故障处置争取宝贵的时间,做到防患于未然,最大化提升了业务的稳定性。
二、故障预防工具能力建设
在数智化运维体系的建设中,国投证券已渐进式构建集中监控、统一自动化、CMDB(配置管理数据库)、RPA(机器人流程自动化)、运维大数据等各类运维工具平台,基础运维平台能力不断提升,但仍需要打通各类运维工具平台的信息孤岛和操作限制,实现更复杂的运维业务场景。
开发团队往往聚焦于支持业务需求,缺乏对运维场景建设的支持,同时,传统的开发方式,存在运维场景从收集到交付周期长、敏捷性差的问题,因此,为实现数智化运维,国投证券建设了低代码平台,以可视化方式实现运维场景的快速构建,如下图所示。
图1 低代码平台
1)推进实现数字化运维,提升运维工作效率
国投证券基于低代码开发平台实现的运维场景层应用,目前已涵盖了券商典型的运维工作场景,包括灾备演练管理、重大版本升级管理、运维值班管理等。
灾备演练管理应用,实现了切换进度和结果的在线同步,将数据分析效率提升80%,同时将灾备切换过程中各协作沟通类事务线上可视化,支持多人员同时协作记录演练过程中发现的问题,促进灾备切换的高效有序进行。
重大版本升级管理应用,作为高时效性、高协作性表单,实现了对版本升级内容完整的过程管理和关联信息材料的汇总存档与查阅,实现实时执行进度展示及多人协作功能,提高了重大版本升级工作的数字化可观测性。
运维值班应用,将线下巡检线上化、标准化,满足了运维人员高时效性的表单需求,并已实际应用在每日的运维值班巡检中。巡检时可多端操作,同时运维人员可自助调整表单,约2-3天即可熟悉应用构建的模式和开发方法。
2)建设低门槛的运维场景快速交付平台
为满足持续优化从而提高开发效率的需求,国投证券运维场景快速交付平台已新增实现8个独立业务组件,39个可配置操作,月活用户量500+,开发实现31个运维场景层应用,近400个表单,170+张报表,已运作流程总量近3000条;高协作性方面,单个表单可支持同时编辑人数达20+人,日编辑表单条目数量峰值可达360+条,日编辑次数峰值可达1800+次。
目前,国投证券建设的低代码平台已演变为具备券商业务特点的低代码平台,运维人员能通过可视化方式实现运维场景的快速构建,同时满足高时效性、高协作性的各类运维工作场景的建设需求,为数智化运维的技术底座打下了基础。
随着业务复杂度、系统复杂度的不断提升,生产服务之间的协同、依赖关系显著增加,单个系统运维人员难以掌握全局情况,生产安全保障难度显著增大。同时,为满足快速变化的业务需求,业务系统版本的快速迭代已成为新的常态,而变更过程中由于程序质量、人工操作、参数配置等多种复杂因素造成的服务异常将直接影响到业务的正常开展,进而对业务监控提出了更高要求。为解决上述问题,我们开展了用户端业务智能感知平台的建设。
国投证券智能感知平台主要使用了RPA、OCR、NLP等三种核心技术,通过自动化实现APP功能可用性感知的操作,不仅成本较低,而且实际执行成功率接近100%。该平台通过截取系统底层内核的窗口句柄、消息和事件的方式来达到控制应用程序的各种操作,使用OCR技术对于窗口展示的图形进行识别,再结合页面坐标,可以精确输出鼠标点击、键盘输入和获取应用程序的反馈,进而获得页面要素;通过NLP将人类语言翻译成计算机可以理解的指令,实现了计算机能处理、理解以及运用人类语言的功能,最终实现如新股新债列表、国债理财深市列表数据、指定涨跌停价格、银证转账等以往需要客户反馈和人工验证才能发现的业务问题,实现精细化、全量化的业务监控。
通过用户端业务智能感知平台的建设,能够针对业务终端,基于真实账户百分百模拟用户实际操作,7*24小时全链路业务自动化监控,实现:
业务可用性实时感知:业务用例百分百覆盖(如买、卖、撤、查,以及各种高权限操作等),实时感知、实时告警,先于用户发现问题;
业务数据全方位验证:可及时发现如市场数据不同步、数据异常变动、多终端数据不一致、数据加载异常等问题;
业务流程多维度分析:通过APP纵向版本对比分析、同业横向业务对比分析、易错环节分析等,为业务提升和优化提供数据支撑。
图2 业务感知大屏
系统自2022年5月上线以来,实现A股、B股、港股、北交所、新三板、科创版、两融等业务功能的感知验证,其中交易模块28项,非交易模块约70项,基本实现全量功能覆盖。在生产线路方面交易和行情共涉及服务器站点52(国内49、海外3个)个,用户感知系统共实现验证用例合计超1100条,主动发现安全隐患超100次,其中,行情、交易类30余次,首页发现告警约50次,提高了系统全业务以及大量站点下的基本交易行情场景监控强度,有效提升故障排查和解决的效率,较好的保障了用户的体验。
混沌工程是一门新兴的技术学科,它的初衷是通过实验性的方法,让人们建立复杂分布式系统能够在生产中抵御突发事件能力的信心。
传统的稳定性保障手段,对于需要特定外界扰动才能触发的故障缺乏识别和修复的手段,只能在系统故障发生时对故障进行被动的响应,导致故障应对的进度和成本不可控,混沌工程通过主动注入的方式,在可控的前提下“通过失败来避免失败”,不但引入已知范围内的缺陷,还可以模拟多样化的现实事件、开展探索性的测试,来更好的了解系统的稳定性边界。
为满足混沌工程实验开展的需要,国投证券构建了具有多类型故障注入能力、演练活动自动化执行能力、实验防护技术能力、演练过程稳态指标自动分析能力、系统稳定性度量能力的混沌工程故障演练平台。具体包括:
1)原子故障模拟方面:实现了基础资源故障(如:宕机、重启、磁盘满、磁盘损坏、CPU负载、内存满,IO负载),网络资源故障(如:网络抖动、延迟、丢包、抖动、DNS解析故障、重复包),应用服务类故障:(如:进程杀死或暂停、内核崩溃、抛异常、篡改数据、资源占用、HTTP延迟),请求拦截型故障:(如:异常请求、请求处理延迟、连接池满、熔断限流、流量控制),以及各类数据库和中间件类故障:(如:Tomcat、JVM、Kafka、Nginx、Nacos、MongoDB、MySQL、Oracle等)。
2)演练场景编排方面:基于原子故障库,灵活地编排和组合任意原子故障,调整各原子故障自身参数来创建演练场景,可按照串行、并行执行等方式设定执行逻辑,满足复杂故障模拟的需求。
3)演练过程防护方面:支持演练过程中的手工终止、超时终止、阈值终止,确保了执行过程的爆炸半径可控。
4)演练活动观测方面:支持与运维监控平台的集成对接,可获取实验过程中的业务稳态指标,同时提供状态验证、观测感知、数据展示等功能,实现混沌工程实验执行过程的自动化分析和可视化展示。
5)演练结果分析方面:构建了系统架构韧性分析、监控告警能力分析、应急处置能力分析报表,实现演练报告的自动生成和演练结果的数据化分析。
图3 混沌工程平台
实际应用中,根据系统架构和业务特性,设计了满足稳定性测试要求的场景库,并应用在架构、开发、测试、运维、业务等多个层面,有效地检验了系统架构的韧性,提前发现系统风险点,保障了系统稳定性。全年开展混沌工程试验1000余次,发现技术风险20多个,通过实践证明了混沌工程理念在提升系统架构韧性,减少生产事故概率方面是卓有成效的。
三、生产故障预防实践
通过将低代码平台的运维场景化构建能力、用户端业务智能感知平台的业务实时感知能力,混沌工程故障演练平台的主动故障注入能力进行协同应用,在盘前业务巡检、重大版本升级保障、灾备应急能力提升、系统架构风险排查、监控告警能力验证等方面带来了良好的应用成效。
图4 预防实践能力
通过用户端智能感知平台,在A股交易日8:30-9:15、港股通8:30-9:00的开盘前,对各交易品种进行委托,检测券商提交委托到交易所的通道是否正常。同时检测每个站点是否可以正常委托、查询及资金持仓数据是否正常加载,进而分析执行记录,找出潜在的安全隐患。
通过低代码平台构建的运维值班管理系统,可多端操作、记录巡检结果,满足了用户的各种个性化需求,通过把频繁修改操作步骤、增加上下文依赖等功能给到运维团队自行配置和维护,有效支撑了盘前巡检的各项检查信息上报、汇总、总结工作。
盘前巡检工作的开展,有效降低了因程序运行状态、外部依赖、系统参数配置等问题造成的系统稳定性问题。
每次版本升级发布前,通过业务智能感知平台,在交易日进行全量回归测试,通过业务数据对比和验证,全场景检测新版本是否存在安全隐患,在系统上线前增加一道有效的防线。
在实际应用中,进行新版本与老版本APP端进行相关数据的一致性对比。如:通过登录两个版本应用,获取相关账户资产等信息,来检查数据一致性。通过分析比较,两个版本用户账户股票信息完全相同,但其他相关界面有显示数据不一样的情况,有效发现了待发布版本的潜在问题,做到防患于未然,进一步避免缺陷逃逸到生产环境中去。
图5 不同版本的对比
在业务系统有功能升级、后端柜台系统进行大版本迭代时,通过业务智能感知系统进行升级前后的对比测试,以验证升级后业务服务是否恢复正常。从功能的可用性、业务功能的感知提升与下降、账户数据一致性的角度进行对比验证,并生成对比分析报表,直观展示升级后服务恢复情况。在2022年共进行了12次数据对比校验测试,大幅提升了生产环境的回归验证效率,节省了公司的人力验证成本。
通过用户端业务智能感知系统对PC通达信网上交易、安翼网上交易两个应用进行感知覆盖,感知不同站点可用性和不同城市的访问站点线路的网络情况。PC设备分为两组,线路站点感知设备和PC端业务实时感知设备,分别用作PC站点线路全覆盖,保证感知监测的站点可用性和全功能测试。
通过用户侧发起站点感知,从不同应用接入相应的生产线路站点,通过真实模式客户的登录、查询等操作来监测交易、行情站点功能的可用性。目前已实现上海、科技园、东莞3地的证券交易站点、信用交易站点的行情站点可用性感知要求,以及103个非IPv6站点的感知。通过20分钟一轮次的站点感知,及时发现站点接入不可用的风险,提升了客户服务能力。
图6 站点感知大屏
目前,行业内大多数的应急演练活动主要还是基于同城异地灾备的级别开展,仅仅是对最极端的情况做了保障,同时存在着准备周期长、场景不够深、实施成本高、自动化率较低等特点,往往形式多于实质。但业内实际生产运维过程中,大多数生产故障都是因系统应用的局部问题失控,而引发为全局性业务连续性中断。
为解决上述问题,我们基于低代码平台、业务智能感知平台、混沌工程故障演练平台,形成了一套高效的应急演练机制,将应急演练高效化、常态化。
图7 演练数据自动记录
通过低代码平台搭建灾备演练应用,用于连接各团队在灾备演练的前、中、后的所有协同工作。通过平台内配置,可快速完成相关系统的对接,包括演练前的准备协作、切换过程中展示切换进展、自动记录关键节点信息、切换后的问题总结记录,完成数据的记录及展示,便于后续翻盘总结。
基于混沌工程故障演练平台的能力,通过原子故障编排出真实的生产故障进行演练。国投证券以多个客户渠道端系统为试点,对证券行业的行情、交易、资讯三大业务开展了系统稳定性演练,评估系统稳定性。在试点系统实践的过程中,发现了两大类可靠性风险,并推动相应团队对风险完善了应急预案和系统应用韧性增强。同时,对公司的应急演练活动进行全方位的能力提升,为保障公司核心系统业务连续运行助力。
图8 原子故障
演练过程中,通过业务感知大屏、站点感知大屏,全面展示线路、业务运行情况,实现演练中的业务监控、演练恢复后的业务验证,极大提升了应急演练业务验证的效率,解决了传统应急演练时靠人工验证业务可用性效率低的问题。
负载均衡是指将系统的工作负载均匀地分配到集群中的各个节点上,以实现系统的高可用性、高性能和高扩展性。对于大型分布式系统来说,负载均衡对于系统的稳定性和可靠性至关重要。
在集群负载均衡的故障场景演练中,我们发现个别故障场景使集群的均衡策略失效,导致50%的访问是失效的,如下图如示:
图9 50%访问失效
当一个节点的应用挂起时,如果负载均衡策略没有能够及时发现异常节点并动态调整流量,就会导致用户请求无法成功地导向到可用节点,从而影响系统的稳定性和可靠性。因此,优化负载均衡策略对于保障系统的高可用性和高性能至关重要。
通过负载均衡的演练,我们明确需要优化集群的负载均衡策略。首先,需要对负载均衡算法进行优化,比如选择适合当前场景的算法,并实时监控节点的状态和负载情况,以便及时进行流量调整和节点故障处理。其次,需要建立一套完善的监控体系,对系统的各个节点进行监控和告警,及时发现和解决潜在的问题,保障系统的可靠性和稳定性。
优化负载均衡策略对于系统的稳定性和可靠性至关重要。通过关注生产环境配置、优化算法、实时监控节点状态和建立监控体系等措施,可以提高负载均衡策略的效率和可靠性,保障系统的高可用性和高性能。
系统监控是指对计算机系统、应用程序和网络等各个层面进行实时监控、数据收集和分析,以评估它们的性能、可用性、安全性和稳定性等方面的表现,并及时发现和解决潜在的问题和风险。
开发商提供软件系统的同时,也会提供监控工具,我们自己也建设了监控工具来保证软件系统的稳定性和可靠性。然而,在实际应用过程中,监控工具的全面性、有效性、及时性和准确性往往没有进行验证和调整。
在进行故障演练时,我们发现一些系统监控不到位的地方,例如监控指标设置不合理、监控频率不够、监控报警设置不当等。这些问题可能导致监控信息不准确或者延迟,从而不能及时发现问题,给系统稳定性和可靠性带来潜在风险。当演练注入CPU占用100%的故障时,在5分钟内,发现开发商提供的监控小工具没有报警信息,自建的基础设施的监控没有报警信息,另一套监控工具及时告警但没有推送到统一监控平台,如下图所示:
图10 监控工具无报警
根据实验结果,从如下原因进行排查:
监控指标设置不合理:监控工具可能没有设置合适的指标来监测CPU使用率,导致无法及时发现CPU负载过高的问题。
监控频率不够:监控工具可能设置的监控频率不够高,导致无法及时捕捉到CPU负载过高的瞬间。
报警设置不当:监控工具可能没有设置合适的报警阈值,或者设置了错误的报警方式,导致无法及时发出警报。
监控工具本身的问题:监控工具可能存在程序错误、配置错误等问题,导致无法正常工作。
在开发和运维软件系统时,我们需要重视监控工具的设计和实施,通过故障演练对监控的全面性、有效性、及时性和准确性进行验证。通过不断完善监控工具,可以提高系统的稳定性和可靠性,减少系统故障和损失的发生,保障系统的正常运行。
四、展望
通过低代码平台、用户端业务智能感知系统、混沌工程故障演练平台的应用,实现盘前巡检、保障重大版本升级,先于用户发现问题,并实现应急演练应用的快速搭建、系统故障的高效模拟,极大地提升了系统稳定性风险的提前发现率。
下一步,我们将进一步扩大系统的应用范围,拓展业务智能感知平台在多终端、多业务的应用,扩大国投证券PC端应用功能的感知覆盖,补充重点功能界面及其子菜单的重点覆盖,对目前国投证券PC生产环境测试的缺失进行有效补充,实现PC线路站点可用性的全覆盖;从混沌工程的平台能力、组织保障、实施流程、演练形式、演练文化等方面,提升混沌工程实验场景的覆盖度和应用深度,开展信创等稳定性保障能力建设,进一步实现故障演练的常态化,多措并举提升系统稳定性风险的事前预防能力,进而提升业务服务水平,支撑好公司业务发展。
参考资料
[1] Rosenthal C,Jones N 混沌工程:复杂系统韧性实现之道 [M].吾真本,黄帅,译北京:机械工业出版社,2021.
[2]王宪刚,孙晓璇.分布式核心系统混沌测试探索与实践[J].金融电子化,2022,(02):75-76.
[3]吴冕冠混沌工程的应用研究与探索J.中国金融电脑,2020(09):80-83.
如果字段的最大可能长度超过255字节,那么长度值可能…
只能说作者太用心了,优秀
感谢详解
一般干个7-8年(即30岁左右),能做到年入40w-50w;有…
230721