您好!
欢迎来到京东云开发者社区
登录
首页
博文
课程
大赛
工具
用户中心
开源
首页
博文
课程
大赛
工具
开源
更多
用户中心
开发者社区
>
博文
>
影子库压测
分享
打开微信扫码分享
点击前往QQ分享
点击前往微博分享
点击复制链接
影子库压测
Apache ShardingSphere
2021-01-19
IP归属:未知
20960浏览
# 概述 ## 背景 在基于微服务的分布式应用架构下,由于整体服务都是通过一系列的微服务调用、中间件调用来完成业务需求,所以对于单个服务的压测已经不能代表真实场景。 而在线下环境中,如果重新搭建一整套与生产环境类似的压测环境,成本太高,并且往往无法模拟线上环境的体量以及复杂度。 这种场景下,业内通常选择全链路压测的方式,即在生产环境进行压测,这样所获得的测试结果能够较为准确地反应系统真实容量水平和性能。 ## 挑战 全链路压测是一项复杂而庞大的工作,需要各个中间件、微服务之间相应的调整与配合,以应对不同流量以及压测标识的透传,通常应该有一整套压测平台与测试计划。 其中,在数据库层面,为了保证生产数据的可靠性与完整性,做好数据隔离,需要将压测的数据请求打入影子库,以防压测数据写入生产数据库而对真实数据造成污染。 这就要求业务应用在执行 SQL 前,能够根据透传的压测标识,做好数据分类,将相应的 SQL 路由到与之对应的数据源。 ## 目标 Apache ShardingSphere 关注于全链路压测场景下,数据库层面的解决方案。 基于内核的 SQL 解析能力,以及可插拔平台架构,实现压测数据与生产数据的隔离,帮助应用自动路由,支持全链路压测,是 Apache ShardingSphere 影子数据库模块的主要设计目标。 # 核心概念 ## 影子字段 判断该条 SQL 是否需要路由到影子数据库,为逻辑字段,数据库中不存在。 ## 生产数据库 生产数据使用的数据库。 ## 影子数据库 进行压测数据隔离的影子数据库,与生产数据库应当使用相同的配置。 # 实现原理 ### 整体架构 Apache ShardingSphere 通过解析 SQL,根据配置文件中用户设置的影子规则,对传入的 SQL 进行路由并改写,删除影子字段与字段值。用户无需关注具体过程, 使用时仅对 SQL 进行相应改造,添加影子字段与相应的配置即可。 ![](//img1.jcloudcs.com/developer.jdcloud.com/d3f605f5-fb84-4e5e-b091-9e5383ebf4fe20210119104512.png) ## 影子规则 影子规则包含影子字段及映射关系。 ![](//img1.jcloudcs.com/developer.jdcloud.com/d6320114-54c2-4838-a95e-9e17e70396f720210119104528.png) ## 处理过程 以 INSERT 语句为例,在写入数据时,Apache ShardingSphere 会对 SQL 进行解析,再根据配置文件中的规则,构造一条路由链。在当前版本的功能中, 影子功能处于路由链中的最后一个执行单元,即,如果有其他需要路由的规则存在,如分片,Apache ShardingSphere 会首先根据分片规则,路由到某一个数据库,再 执行影子路由,将影子数据路由到与之对应的影子库,生产数据则维持不变。 接着对 SQL 进行改写,由于影子字段为逻辑字段,在数据库中实际不存在,所以在改写过程中会删除这个字段及其对应的参数。 DML 语句的处理过程同理,对于非 DML 语句,如创建数据表等,会在生产数据库与影子数据库分别执行。 ![](//img1.jcloudcs.com/developer.jdcloud.com/f6828a4d-b777-4034-8422-5cb633dfbca020210119104547.png)
原创文章,需联系作者,授权转载
上一篇:测试引擎——序章
下一篇:数据加密——实现原理
Apache ShardingSphere
文章数
96
阅读量
231327
作者其他文章
01
突破关系型数据库桎梏:云原生数据库中间件核心剖析
数据库技术的发展与变革方兴未艾,NewSQL的出现,只是将各种所需技术组合在一起,而这些技术组合在一起所实现的核心功能,推动着云原生数据库的发展。 NewSQL的三种分类中,新架构和云数据库涉及了太多与数据库相关的底层实现,为了保证本文的范围不至太过发散,我们重点介绍透明化分片数据库中间件的核心功能与实现原理,另外两种类型的NewSQL在核心功能上类似,但实现原理会有所差别。
01
Apache ShardingSphere数据脱敏全解决方案详解(上)
Apache ShardingSphere针对新业务上线、旧业务改造分别提供了相应的全套脱敏解决方案。
01
Shardingsphere整合Narayana对XA分布式事务的支持(4)
ShardingSphere对于XA方案,提供了一套SPI解决方案,对Narayana进行了整合,Narayana初始化流程,开始事务流程,获取连接流程,提交事务流程,回滚事务流程。
01
从中间件到分布式数据库生态,ShardingSphere 5.x革新变旧
5.x 是 Apache ShardingSphere从分库分表中间件向分布式数据库生态转化的里程碑,从 4.x 版本后期开始打磨的可插拔架构在 5.x 版本已逐渐成型,项目的设计理念和 API 都进行了大幅提升。欢迎大家测试使用!
最新回复
丨
点赞排行
共0条评论
Apache ShardingSphere
文章数
96
阅读量
231327
作者其他文章
01
突破关系型数据库桎梏:云原生数据库中间件核心剖析
01
Apache ShardingSphere数据脱敏全解决方案详解(上)
01
Shardingsphere整合Narayana对XA分布式事务的支持(4)
01
从中间件到分布式数据库生态,ShardingSphere 5.x革新变旧
添加企业微信
获取1V1专业服务
扫码关注
京东云开发者公众号