NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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

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

评论

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

布式系统消息异常该何去何从

架构师修行之路

分布式 异步

我们该怎么保护手机屏幕前的父母?

徐说科技

手机 短视频

企业中台化落地:从战略分析到战术实践及架构演进过程

Barry的异想世界

架构设计 策略模式 模板方法模式 中台架构 领域驱动设计DDD

认证、授权、鉴权和权限控制

哈库拉玛塔塔

spring security 用户权限 鉴权 权限

记录问题 INSERT INTO table ... SELECT ... FROM dual WHERE not exists (...)问题

转山转水

sql SQL语法 sql查询

从一段 Dubbo 源码到 CPU 分支预测的一次探险之旅

yes

dubbo cpu

浮点数的秘密

C语言与CPP编程

c c++ 编程语言 浮点数

不草率,你只管下载资料,剩下的交给「哇哦」

小Q

Java 学习 架构 面试 分布式

oeasy教您玩转 linux 010212 管道 pipe

o

以大数据为依托提升基层治理效能

CECBC

大数据 信息化管理

Spring Security 主要类解释

哈库拉玛塔塔

springsecurity

Golang领域模型-实体

奔奔奔跑

架构 微服务 领域驱动设计 DDD Go 语言

LeetCode 169. Majority Element

liu_liu

算法 LeetCo

Go: 理解 Sync.Pool 的设计

陈思敏捷

sync sync.pool pool Go 语言

spark总结

纯纯

计算机的时钟(三):向量时钟

ElvinYang

week11--作业

Geek_165f3d

为什么每个微服务要有自己独立的数据库?

码猿外

数据库 架构 微服务

【高并发】面试官:讲讲什么是缓存穿透?击穿?雪崩?如何解决?

冰河

缓存 穿透 击穿 雪崩 签约计划第二季

HashMap将cpu打满始末

hashmap 线程安全 cpu 100% cpu飙满

TOGAF认证课由2天变化为5天的思考

周金根

企业架构 TOGAF

业务架构学习内容有哪些?

周金根

BIZBOK 业务架构

金沙账号审核不通过维护不给提现风控怎么回事?怎么办

过山太阳

内容审核 提现不了

不使用Raft算法,就能简单做集群leader选举

架构师修行之路

分布式 架构师

我理解的面向对象(ObjectiveSql 实践)

Braisdom

Java ORM框架 ORM

区块链应用层——生态体系的上层建筑

CECBC

区块链技术 生态体系

区块链激励层——区块链生态建设的驱动力量

CECBC

区块链技术 驱动力量

重新学习了一遍ThreadLocal

熊斌

学习

华为与第四范式,正在酝酿一个帮企业跳出AI悖论的“秘密计划”

脑极体

Java四种引用类型:强引用、软引用、弱引用、虚引用

简爱W

SpringCloud轻松集成Dubbo实现RPC调用

Barry的异想世界

微服务 dubbo nacos RPC spring cloud alibaba

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