写点什么

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

  • 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:103690

评论

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

一个简单的例子教会您使用 javap

汪子熙

Java 性能调试 28天写作 12月日更 javap

【Promise 源码学习】第十一篇 - Promise.all 的实现

Brave

源码 Promise 12月日更

Python Qt GUI设计:QTableView、QListView、QListWidet、QTableWidget、QTreeWidget和QTreeWidgetltem表格和树类(提升篇—1)

不脱发的程序猿

Python qt GUI设计 Qt Company 表格和树类

Android C++系列:Linux线程(一)概念

轻口味

c++ android 28天写作 12月日更

世界女性科技群落(二):种姓制度与数字微光下的生长录

脑极体

linux常用命令-历史命令和自动补全

Java个体户

Linux

搭建K8s容器化应用的开发调试环境

xiaoboey

Docker Kubernetes k3s Telepresence Skaffold

关于元宇宙的一些认识

李印

学习笔记 元宇宙

为什么不要急着告诉孩子答案?

Justin

心理学 教育 28天写作

Vite2 + Vue3 + TypeScript + Pinia 搭建一套企业级的开发脚手架【值得收藏】

前端开发爱好者

typescript 大前端 Vue3 Vite2

渗透测试如何入门?

喀拉峻

网络安全 安全

34 K8S之ServiceAccount及X509数字证书

穿过生命散发芬芳

k8s 28天写作 12月日更

Flink 实践教程-进阶(1):维表关联

腾讯云大数据

flink 流计算 Oceanus

Flink 实践教程-进阶(2):复杂格式数据抽取

腾讯云大数据

flink 流计算 Oceanus

SAP 产品的 Field Extensibility

汪子熙

28天写作 扩展 ERP 12月日更 企业管理软件

创业研发团队的组织建设-软件工作流程

wood

创业 敏捷开发 28天写作

数据一致性

卢卡多多

数据一致性 28天写作 12月日更

元宇宙:虚实相生的网络世界

石云升

学习笔记 28天写作 元宇宙 12月日更

Golang Gin 框架之日志 DIY(七)

liuzhen007

28天写作 12月日更

<<长津湖>> 有感

Tiger

28天写作

浅谈应用架构设计思路

陈俊

应用架构 设计指南

Mac 常用远程连接 ubuntu 工具对比

悟空聊架构

28天写作 Mac 软件 悟空聊架构 12月日更 远程连接

如何调用潜意识有效收集演讲素材-从右脑到左脑的切换

将军-技术演讲力教练

如何设计微服务架构

天天向上

架构实战营

电子屏幕 or 风月宝鉴

mtfelix

Flink 实践教程-入门(9):Jar 作业开发

腾讯云大数据

flink 流计算 Oceanus

su 和 sudo,你用对了吗?

xcbeyond

Linux 28天写作 12月日更 sudo

JavaScript中的作用域和预解析

你好bk

JavaScript 大前端 ES6 HTML5, CSS3 12月日更

支付宝商户号稳定性解决方案

hackstoic

支付宝 解决方案 To B业务

实用机器学习笔记三:网页数据抓取

打工人!

机器学习 学习笔记 12月日更 实用机器学习

JavaScript数据结构之 Array

devpoint

JavaScript ES6 array 内容合集 签约计划第二季

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