全链路在线生产数据库压测利器:Apache ShardingSphere 影子库特性升级

本文介绍了Apache ShardingSphere的影子库特性在全链路在线生产数据库压测中的应用,旨在解决数据污染和性能问题。通过影子库功能的升级,用户可以更方便地进行压测环境配置,实现压测数据隔离。同时,文章展示了影子库在电商下单业务压测中的实战例子,并提到了CyborgFlow项目作为全链路在线压测的完整解决方案。
摘要由CSDN通过智能技术生成

2b13dfe334cfd335abfca78901cb3681.png

侯阳

SphereEx 中间件研发工程师,Apache ShardingSphere Contributor。

目前专注于 ShadowDB 及全链路压测相关的设计和研发。

什么是全链路压测

随着互联网行业的快速发展,业务也进入了快速扩张阶段,多变的用户需求对整个系统的稳定性冲击可想而知。比如外卖平台大量用户产生的订单集中分布在中午和傍晚两个时间段,再比如电商平台的购物节、秒杀活动等。

每种业务都由一系列不同的业务系统来提供服务,每个业务系统都分布式地部署在不同的机器上。“流量规划” 既能保障系统稳定性、又能节约成本对于技术团队来说是一重大难题,为了精准地获取到单台机器的服务能力,压力测试要在生产环境进行。既能保证环境的真实性,也能保证流量的真实性,大大提高“流量规划”的准确性。

影子库与全链路压测

但在线上业务系统做压测,风险不言而喻,比如数据污染问题或是性能问题。试想一下,如果压测结束后用户发现自己订单丢失了或是凭空多出一批待支付的订单,是否极大影响用户体验?

全链路在线压测是一项复杂而庞大的工作,需要各个微服务、中间件之间配合完成。Apache ShardingSphere 关注于全链路在线压测场景下,数据库层面的解决方案。推出压测影子库功能,借助于 ShardingSphere 强大的 SQL 解析能力,对执行 SQL 进行影子判定,同时结合影子算法灵活的配置,满足复杂业务场景的在线压测需求。压测流量路由到影子库,线上正常流量路由到生产库,从而帮助用户对压测数据进行隔离,解决数据污染问题。

影子库功能升级

影子库功能最早实现于 v4.1.0 时期,通过添加一个逻辑的影子列,Apache ShardingSphere 通过解析执行 SQL,对其进行路由并改写,删除逻辑的影子列与列值。用户无需关注具体过程,使用时仅对 SQL 进行相应改造,添加影子字段与相应的配置即可。

添加影子列的方式有两个痛点:

1. 用户在进行压力测试前需要根据实际的业务需求,对压测相关 SQL 进行相应改造。

2. SQL 改写操作会增加执行损毁,降低压测结果的准确性。

经过 ShardingSphere 社区的讨论,决定对影子库功能进行重构。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值