【技术实现步骤摘要】
基于SQL引擎的全链路压测数据分流系统及方法
[0001]本专利技术涉及全链路压测
,具体涉及基于SQL引擎的全链路压测数据分流系统及方法。
技术介绍
[0002]全链路压测作为一种新兴的软件测试技术,直接在生产系统中做压力测试,旨在准确评估线上环境的性能。与常规的压力测试相比,全链路测试不再单独部署一套测试环境,而是直接在生产环境中,通过模拟海量用户真实请求(例如通过流量回放技术基于真实用户请求生成测试用例)对系统进行压力测试。通过全链路压测,不仅能够减少部署成本,还能够保证流量的真实性和环境的真实性,得出更可靠的压测结论。
[0003]在生产环境中进行测试,最重要的是保证线上服务不受影响,其核心问题之一是保证生产数据不受到污染,即通过测试生成的数据应与真实的生产数据能够区分开来。现有技术中,基于影子库技术的数据分流技术能够保证全链路压测过程中生产数据不受测试污染。影子库技术,即构建一个与生产库完全相同的数据库(称为影子库)用来存储测试数据。生产库是指生产环境中使用的数据库,用于存储生产数据。同一套生产环境系统可以对应多个不同的生产库。影子库是存储测试数据的数据库,与生产库一一对应。影子库与其对应的生产库通常具有相同的表数量、表结构、表名字及其他的系统配置。影子库中的表称为影子表。影子库技术的典型架构中,生产流量和测试流量同时流入生产环境系统中,生产环境系统执行一些业务处理后,在数据层将转化成SQL(Structured Query Language)语句。在数据分流过程中,对SQL语句进行分析,通过 ...
【技术保护点】
【技术特征摘要】
1.基于SQL引擎的全链路压测数据分流系统,其特征在于:包括解析器、配置管理器、路由器和执行器;解析器用于对接入流量的SQL语句进行解析,将SQL语句转化为抽象语法树;配置管理器用于设置配置文件,还用于解析配置文件得到配置信息,并将配置信息在内存中缓存起来供路由器使用;路由器用于根据配置信息和解析后的抽象语法树,得到路由结果,所述路由结果的内容包括将SQL语句路由到底层对应的数据库中;执行器用于获取路由器的路由结果,并通过数据库连接技术JDBC调用对应的数据库的接口,将SQL语句发送至对应的数据库中,供对应的数据库执行,所述对应的数据库为生产库或影子库;执行器还用于将执行的结果进行封装,并以标准JDBC数据库协议的方式返回给请求方。2.如权利要求1所述的基于SQL引擎的全链路压测数据分流系统,其特征在于:所述配置文件的内容包括生产库的属性、影子库的属性、影子表的属性及使用的影子算法;所述影子算法为基于列的影子路由算法或基于Hint的影子路由算法。3.如权利要求2所述的基于SQL引擎的全链路压测数据分流系统,其特征在于:当影子算法为基于列的影子路由算法时,所述配置文件的内容还包括路由规则,所述路由规则用于进行影子库匹配;路由器对SQL语句路由时,针对基于列的影子路由算法,路由器首先判断解析语法树ast中涉及的表集合T
ast
与配置文件中的影子表的集合T
config
是否有交集,如果没有交集,则直接将此SQL语句路由到生产库中,否则,遍历T
ast
∩T
config
中的每一张表t,若SQL语句中t的影子字段值符合任一路由规则,则将此SQL语句路由到影子库中,并提前结束迭代过程。4.如权利要求3所述的基于SQL引擎的全链路压测数据分流系统,其特征在于:当影子算法为基于Hint的影子路由算法时,所述配置文件的内容还包括hint影子标记f
config
;路由器对SQL语句路由时,针对基于Hint的影子路由算法,路由器逐一验证F
ast
中每一个键值对标记是否与f
config
相同,若相同则路由到影子库中;若所有标记都与f
config
不相同,则路由到生产库中;其中,F
ast
为抽象语法树ast的所有键值对标记集合。5.如权利要求4所述的基于SQL引擎的全链路压测数据分流系统,其特征在于:解析器还用于当影子算法为基于Hint的影子算法时,对配置文件中的hint影子标记f
config
进行解析,并生成一个单独的注解节点挂载到抽象语法树上。6.如权利要求1所述的基于SQL...
【专利技术属性】
技术研发人员:李瑞远,姜俊,刘钧文,王棚,陈超,张东霞,李文慧,
申请(专利权)人:重庆大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。