写点什么

中国工商银行基于生产流量的创新探索及实践

  • 2023-10-30
    北京
  • 本文字数:3180 字

    阅读完需:约 10 分钟

大小:1.61M时长:09:23
中国工商银行基于生产流量的创新探索及实践

作者 | 中国工商银行金融科技研究院云计算实验室


随着互联网金融的高速发展,金融产品和服务模式不断创新,业务规模呈现爆炸式增长态势,新老业务迭代加速,在业务迭代升级或系统重构时,如何确保业务架构调整后的功能连续性,是常规测试工具面临的难题。相较于传统测试数据,生产流量具有多样性的特征,利用生产流量进行功能性验证能够最大程度提升验证效果,保障架构转型过程的安全性和稳定性。在这样的背景下,流量录制回放技术应运而生。


流量录制回放的行业现状


由于传统的测试数据缺乏真实性和多样性,测试案例覆盖度往往无法满足实际的需求,为此互联网头部企业提出通过流量录制回放工具弥补传统自动化测试系统的不足,并以此衍生出了多种方案,其中较为有代表性的工具和产品有 GoReplay、TcpCopy、Jvm-Sandbox-Repeater、阿里云引擎回归测试平台等。这些工具都是由用户层、流量采集、数据持久化模块所组成(如图 1 所示),其中服务端提供了流量录制规则配置和数据分析的能力,用户根据自身需求分析录制场景和录制规则,并基于录制工具开展生产流量录制;采集端则根据业务提供的录制规则进行数据收集和聚合并转发给存储节点进行持久化;回放端主要提供了实时回放、用例沉淀、压测模型转换、链路分析、依赖分析等能力。此外,持久化的流量数据可根据业务需求进行差异化定制,并应用于在线巡检、变更影响面评估、智能用例推荐、强弱依赖识别、业务模型评估、覆盖率分析等场景,从而形成围绕流量的运维生态。



图 1 业界流量录制回放业务架构


中国工商银行在流量录制回放领域的探索


随着工商银行分布式转型工作深入推进,开放平台交易量爆发式增长,分布式架构错综复杂的调用链给运维体系带来巨大挑战。工商银行借鉴行业先进经验,打造了流量录制回放平台,从六个方面对流量录制回放技术进行探索和实践。


字节码增强方式录制,多维度可定制化任务管理


针对工商银行内部技术框架的多样性,相较于其他录制方式,字节码增强方式因其无侵入特性,具有更高的包容性,可以支持以较低的成本对应用服务进行拦截,进而实现服务请求响应报文、链路特征、交易耗时等信息的录制。


平台提供了应用、集群、容器、服务、交易时间等多种维度的录制能力(如图 2 所示),用户可根据自身诉求定制录制规则,以任务的形式灵活的控制录制时间段、设置灰度模式、采集链路资源等,实现多维度流量灵活录制。精准的录制任务投放,不仅降低了录制链路的处理压力,还能帮助用户有效控制录制工具的影响范围,降低性能损耗,同时保障应用节点安全稳定。



图 2 字节码增强录制与定制化任务管理


梳理核心链路,构建流量录放模型


核心链路的梳理是整个流量录放工作的重中之重,能否将核心链路梳理好,直接决定其能否保证录制链路和数据的完整性以及能否达到录放的预期效果。在分布式架构下,工商银行利用链路追踪监控技术,通过流量染色和拓扑分析机制,形成面向业务场景的全链路拓扑结构,业务系统再根据梳理出来的目标链路拓扑进行梳理以及性能容量评估,最终得出流量录放模型,以最大程度还原生产交易场景。


  1. 录制链路梳理:业务系统通过链路拓扑分析,根据自身需求,梳理需要录制的资源信息以及上下游依赖,并以此可衍生出录制任务的维度和配置。

  2. 性能容量评估:为保证生产录制过程不会影响日常交易,生产录制前,业务系统必须在测试环境进行性能容量评估,为录制工具预留一定的资源。


建立流量跨域自动化传输机制


为了避免流量录制回传过程中出现敏感信息泄露,工商银行提供了配置化的脱敏能力,可以基于用户配置实现针对性脱敏,建立生产录制流量跨域回传测试环境的常态化运行机制(如图 3 所示)。针对小批量录制数据,平台支持用户在线下载并手工导入测试环境。针对海量数据报文,平台支持后台自动生成批量文件、传输并导入测试环境,该方式具备数据分段传输、断点续传、完整性检查等功能特性。


为解决环境间数据差异性问题,平台提供了多维度的自定义替换功能,用户可根据场景特色进行配置,以提升回放成功率,最终形成一套流量录制、脱敏、传输、替换的全自动化流程。



图 3 自动化脱敏传输与替换


具备高适配、高并发的回放能力


传统的流量回放模式主要将流量无序的压入应用容器,该方式无法保障服务调用先后顺序,可能引发事务不一致风险。工商银行基于生产采集的服务接口信息,实现了报文组装和服务接口模拟调用,根据流量录制时序进行回放,支持用户灵活设置录制数据段、回放速率等个性化回放配置,形成从流量录制到回放的一站式演练能力。


针对部分下游强依赖场景,工商银行支持根据其入口流量透传的链路信息查找对应的子调用响应并返回,降低下游依赖性的同时提高了回放的成功率和场景适配性。


形成多维度结果比对分析机制


为提升流量回放结果的可观测性,平台提供基于定制化规则的多维度比对分析能力,实现录制响应报文与回放响应报文的差异化感知。基于 ClickHouse 的实时分析架构,可支撑百亿级交易的实时比对聚合,及时反馈回放任务运行效果,进而形成程序架构质量评价。多维度的结果筛选和分析能力(如图 4 所示),可有效协助业务人员敏捷分析异常原因,并及时做出调整。用户针对异常的流量可施行二次回放,直至回放成功率达到 100%,保证业务迁移前后功能的一致性。



图 4 结果比对分析


场景化应用


工商银行目前已初步形成一站式的常态化演练机制,在灾备带压演练、仿真切流验证、测试环境回归测试等场景提供了关键的技术支撑,最终保障生产业务安全。截至目前,平台已完成二十余个应用系统的接入使用,其中测试环境已得到规模化应用,灾备环境和仿真环境也已顺利支撑个人结算、信用卡产品等重点应用的验证工作。


带压灾备演练


在应用架构转型背景下,为确保灾备环境的承载能力,工商银行利用生产真实流量在灾备云实施回放,检验应用核心交易和服务在灾备云环境的性能和功能情况。带压灾备演练主要操作流程如下:


应用根据自身交易场景,梳理录制灰度集群、服务、时间段、关联交易等录制链路信息。运维支持人员根据应用梳理的生产操作手册,提前完成数据库数据同步以及生产报文录制,待流量录制完成后将其回传到灾备环境。为保证灾备环境回放真实性,运维支持人员以倍速回放灰度流量的方式模拟生产高并发冲击对业务系统性能容量的影响。应用根据回放的比对结果分析回放的业务交易成功率以及系统的整体承载能力(如图 5 所示),并以此作为应用架构转型成功与否的评判标准之一。



图 5 回放结果大屏展示

仿真切流验证


在应用架构转型的背景下,为保证业务核心交易的安全平稳升级,工商银行将生产真实流量准实时回放到生产仿真环境,验证业务切流前后交易的一致性。


与灾备带压演练不同,运维人员完成数据库数据同步后,同时下发录制任务和回放任务,生产录制的流量完成存储后将被准实时回放到仿真环境,应用根据生产交易结果与仿真交易结果的比对分析,判断核心交易逻辑是否与切流前一致。

测试回归验证


为保证回归测试案例的真实性、多样性和覆盖完整性,工商银行将生产真实流量脱敏后回传到测试环境进行回放,模拟生产真实交易进行的场景,以回放比对分析结果作为评判功能迁移或升级前后是否一致的标准。随着生产和测试流量的持续积累,回放案例库可基本覆盖业务代码的所有分支,测试人员通过流量回放实现了应用业务系统的常态化回归测试,大幅提升测试效能。


未来展望


未来,工商银行流量录制回放平台将进一步与链路监控、服务限流、混沌工程等其他运维工具相结合,完善运维工具链和分布式监控运维体系,拓展工具使用场景,提升流量录放的价值和意义,为金融业务场景稳定性提供有力支撑。


好文推荐


智谱 AI“超 25 亿融资”的背后


是时候彻底放弃“高分低能”的 Leetcode了:AI 时代的面试需要大变革!


B 站广州研发工作室解散;外媒曝光苹果中国区丑闻;OpenAI 被曝已叫停新大模型项目 | Q资讯


“MySQL 之父”的 MariaDB 要完蛋了?叫停两款核心产品并裁员 28%,分析师:该行为无异于自毁长城


2023-10-30 11:103755

评论

发布
暂无评论
发现更多内容

python版本管理工具DVC

AIWeker

人工智能 版本管理 11月月更 dvc

【web 开发基础】PHP 中数组的定义 (42)

迷彩

数据结构 数组 11月月更 数组的定义

Flink CDC 2.3 发布,持续优化性能,更多连接器支持增量快照,新增 Db2 支持

Apache Flink

大数据 flink 实时计算

华为云桌面Workspace,让云上工作更高效!

路过的憨憨

Python 操作Excel(xlrd和XlsxWrite)

度假的小鱼

11月月更 Python xlrd读取Excel Python xlrd

基于 Apache Flink Table Store 的全增量一体实时入湖

Apache Flink

大数据 flink 实时计算

“后 Hadoop 时代”,大数据从业者如何应对新技术趋势带来的挑战?

Apache Flink

大数据 flink 实时计算

华为云大数据平台,助力企业数字化转型成效明显

路过的憨憨

Python 操作Mysql

度假的小鱼

pymysql 11月月更 Python操作Mysql

【React技术】开发过程中遇到State和生命周期方法在类里面的运用

恒山其若陋兮

前端 11月月更

python小知识-内置方法和属性应用:反射和单例

AIWeker

Python python小知识 11月月更

2022-11-29:查找重复的电子邮箱。以下数据中a@b.com是重复的,请写出sql语句。 DROP TABLE IF EXISTS person; CREATE TABLE person (

福大大架构师每日一题

数据库 福大大

细说值传递、引用传递和地址传递

闫同学

编程语言 计算机基础 11月月更

制造业要用龙头带动整条产业链发展,阿里云智能制造加速器首次集结

B Impact

Flink Forward Asia 2022 主论坛概览

Apache Flink

大数据 flink 实时计算

【web 开发基础】PHP中使用array()语言结构新建数组(43)

迷彩

数据结构 array 11月月更 array() 新建数组

AI简报-重参数化RepVGG

AIWeker

深度学习 AI简报 11月月更

【web 开发基础】PHP中多维数组的声明 (44)

迷彩

数据结构 一维数组 二维数组 11月月更 多维数组

凝心聚力 开源共建 | 统信软件参与成立OpenKunlun开源固件社区

统信软件

开源 开源社区 开源技术

「Go易错集锦」正确使用defer避免代码重复

Go学堂

golang 程序员 个人成长 defer 11月月更

Python 操作mongodb库

度假的小鱼

mongodb 11月月更 Python 操作mongodb库

【React技术】JSX在企业级项目的运用and一个元素渲染demo

恒山其若陋兮

前端 11月月更

投入上百人、经历多次双 11,Flink 已经足够强大了吗?

Apache Flink

大数据 flink 实时计算

支持向量机-ROC曲线中的概率和阈值

烧灯续昼2002

Python 机器学习 算法 sklearn 11月月更

读《程序是怎样跑起来的》体会

听风go

读书笔记 后端 计算机 计算机原理 读书总结

深度学习-浅谈keras的扩展性

AIWeker

深度学习 keras 11月月更

一文了解 Go 标准库 strings 常用函数和方法

陈明勇

Go golang 字符串 11月月更 strings

支持向量机-SVC的模型评估指标

烧灯续昼2002

Python 机器学习 算法 sklearn 11月月更

【web 开发基础】PHP中的数组 (41)

迷彩

php 数据结构 11月月更 关联数组 索引数组

《2022开源大数据热力报告》发布,Flink 摘得「流处理」领域热力值 TOP1

Apache Flink

大数据 flink 实时计算

【web 开发基础】PHP中数组的遍历(45)

迷彩

数据结构 数组 foreach 11月月更 数组遍历

中国工商银行基于生产流量的创新探索及实践_云计算_工商银行云计算实验室_InfoQ精选文章