双11狂欢大促

盲盒赢 定制羽绒服

开启惊喜盲盒,抽取你的专属好礼

— 惊喜奖品抢先看 —

ShardingSphere 异构迁移最佳实践:将3.5亿量级的顾客系统 RTO 减少60倍

SphereEx SphereEx 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

Apache ShardingSphere 助力当当 3.5 亿用户量级顾客系统重构,由 PHP+SQL Server 技术栈无缝转型为 Java+ShardingSphere+MySQL,性能、可用性及维护性均得到显著提升,是 ShardingSphere 异构迁移最佳实践。

1

顾客系统背景

当当顾客系统主要负责账户的注册、登录、隐私数据维护等功能,历史技术栈为 PHP+SQL Server,是标准的集中式架构,如下图。

8270524640ec988544a3ff0e11a86dec.png

重构项目启动前,顾客系统的数个业务模块存在多个棘手的业务问题和技术挑战,如逻辑分散、吞吐量低及运维成本高等问题。为改善顾客的购物体验,当当技术团队决定对业务逻辑和底层数据架构进行优化,实现顾客系统多场景下的可用性、扩展性及综合提升等多个目标。在重构过程也实现了众多技术创新,如跨数据源双写、读写分离、智能网关及灰度发布等技术。

从需求设计、分库分表规划、逻辑优化、压测再到完全上线等多个环节,当当技术团队用半年的时间完成了基于 3.5 亿+用户的系统重构。

使用 Java 语言重构十余个模块,通过 ShardingSphere+ MySQL 构建分布式数据库解决方案,顺利完成异构数据库在线迁移,案例亮点如下。

  • 使用 Java 语言重构 PHP 业务代码;

  • 使用 ShardingSphere+MySQL 替换 SQL Server;

  • 在线完成 3.5 亿用户数据完整迁移;

  • 通过数据双写方案完成无缝上线。

2

痛点&挑战

业务痛点

在业务层面,顾客系统部分模块的注册和登录逻辑分散在各端,维护成本较高,且当时的技术架构对于性能的提升和高可用性存在着很大的局限性。

  • 不易维护:多平台注册和登录逻辑较为分散,业务维护复杂;

  • 性能受限:PHP+SQL Server 集中式技术架构,吞吐量不足;

  • 可用性&安全性差:

    • SQL Server 主备状态变化后,订阅库会失效,重新配置需要窗口时间;

    • SQL Server 运行在 Windows Server 上,病毒影响导致安全性差,且打补丁后升级启动时间长(>30min)。

挑战

  • 数据完整性

顾客系统拥有 3.5 亿+ 用户数据,在数据迁移过程中,需保证数据从 SQL Server 迁移到 MySQL 后的一致性及完整性;

  • API 透明

API 对调用方保持透明,确保调用方无改动,最小化变更界面;

  • 无缝切换

需要满足业务系统无缝切换,切换过程对业务无影响;

  • 时间紧迫

“618”和“11.11”促销活动前后会封网,因此需在两大促活动间、有限窗口的时间内完成切换,并紧接着面对“11.11”的验证。

3

解决方案

整体规划

为了改善顾客系统的可维护性、可用性及性能,研发团队重新梳理顾客系统的架构。

在应用层,统一各端的功能逻辑,提升业务可维护性。在数据库层,将集中式架构调整为分布式数据库架构,提升性能及可用性,即 ShardingSphere+MySQL 构建的开源分布式解决方案。

  • 应用层:随当当整体技术栈的变迁,业务开发语言由 PHP 转为 Java;

  • 中间件:使用成熟的开源数据库中间件 ShardingSphere 实现分库分表;

  • 数据库:使用多套 MySQL 集群代替 SQL Server 数据库。

1e0c7e25c05a97473065a5297cf40af3.png

在整体架构设计上,引入了分布式主键生成策略、分片管理、数据迁移校验以及灰度发布等多个方案。

分布式主键生成策略

数据库架构由集中式转型为基于中间件的分布式架构,分布式主键生成策略是首先需要考虑解决问题。在系统重构中,选择建立两台以上的数据库 ID 生成服务器,每台服务器都有一张记录各表当前 ID 的 Sequence 表,Sequence 中 ID 增长的步长是服务器的数量。起始值依次错开,这样相当于把 ID 的生成散列到了每台服务器节点上。

分片(ShardingSphere)

在顾客系统重构中,通过 Apache ShardingSphere 完成数据库 Sharding,同时也启用了读写分离功能。

由于顾客系统在高并发、低延时的要求,接入端选择了 ShardingSphere-JDBC,它定位为轻量级 Java 框架,在 Java 的 JDBC 层提供的额外服务。它使用客户端直连数据库,以 jar 包形式提供服务,无需额外部署和依赖,可理解为增强版的 JDBC 驱动,完全兼容 JDBC 和各种 ORM 框架。

e2d23f328f8adb860558ad8aec298ce8.png

  • Sharding

ShardingSphere 支持非常全面的分片算法,包括取模、哈希、范围、时间及自定义等算法,顾客系采用取模分片算法对大表进行拆分。

  • 读写分离

除了 Sharding,同时还启用 ShardingSphere 读写分离功能,充分利用 MHA 集群资源,提升系统吞吐能力。

4ccc6a5ca416f87f95ded11c8674efdc.png

双写&数据同步

数据同步贯穿了整个重构项目,数据迁移的完整性及数据一致性是重构的关键。

该案例基于 Elastic-Job 同步历史数据,以周期的方式将 SQL Server 的历史数据同步到 MySQL 中。

关于数据库切换方面,在切换过程中会采用备份方案,进行数据库的双写,保证切换前后的数据一致性,过程如下。

第 1 步:实现双写机制

断掉链路 1,打通链路 2、3、4,打通链路 9、10。

第 2 步:切换登录服务

断掉链路 9,10,打通链路 7,断掉链路 5。

第 3 步:切换读服务

打通链路 8,断掉链路 6。

第 4 步:取消双写机制

断掉链路 2,完成切换。

5909779d0616e615ec01039838d5b42d.png

在数据校验方面,通过业务侧和数据库侧两个方面进行验证,均周期性进行检查,在不同时间段采用不同的频率,抽样或全量检查数据的完整性,在数据库侧也会进行 COUNT/SUM 的验证。

顾客系统重构使用了基于 apollo 的灰度发布方式,在新登录方式的处理上,通过配置项逐步放开、小范围陆续割接,确保上线成功率。重构后的系统架构如下图。

9a9e729ec2c8c472880e80515dd833e3.png

4

用户收益

经过重构,当当顾客系统响应速度明显提升,同时也降低了日常运维成本,ShardingSphere 提供的分布式解决方案功不可没。该方案适用于各种高流量的互联网平台服务,也适用于电商平台以及其他以数据处理为主的系统。

  • 性能提升,响应速度提升 20% 以上;

  • 可用性增强,ShardingSphere+MySQL 的方案实现 RTO<30s;

  • 易于维护,业务逻辑以及数据库的可维护性明显提升;

  • 无缝迁移,6 个月内在线完成各模块割接,窗口时间为零。

5

总结

在“ShardingSphere 助力当当 WMS:订单效率提升 30%、节约成本上千万”案例之后,这是第二篇 ShardingSphere 在当当的实践案例。

Apache ShardingSphere 为业务系统提供了强力的支撑。简单与极致,是 ShardingSphere 突出的两个特性,让业务逻辑更简单,让性能更极致。

56e0a72f2d89201ce0d2e0da11f91c8c.gif

Apache ShardingSphere 社区已在开源领域耕耘了 7 年的时间。长久的坚持,使社区愈加成熟,已呈开放和多元化的势态。我们诚心欢迎有开源情怀和编码热情的朋友一起参与社区共建,也欢迎您提供优质案例内容分享给社区的朋友们。

如果大家对 Apache ShardingSphere 有任何疑问或建议,欢迎在 GitHub Issue 列表提出,或可前往中文社区交流讨论。

GitHub Issue:https://github.com/apache/shardingsphere/issues

贡献指南:https://shardingsphere.apache.org/community/cn/contribute/

中文社区:https://community.sphere-ex.com/

...全文

相关推荐

不平衡电网下自抗扰顺序模型预测PWM整流器控制仿真模型(Simulink仿真实现)

内容概要:本文详细介绍并实现了针对不平衡电网条件下PWM整流器的先进控制策略——自抗扰顺序模型预测控制(ADRC-SMPC),并通过Simulink搭建了完整的仿真模型。该方法融合自抗扰控制(ADRC)对系统内外扰动的强鲁棒性与模型预测控制(MPC)的多步预测、滚动优化能力,显著提升整流器在电网电压不平衡时的动态响应速度、稳态精度,并有效降低电流谐波含量与有功/无功功率波动。文档提供了完整的建模流程与参数设计思路,同时附带MATLAB/Simulink仿真资源链接,支持进一步的技术验证与扩展研究; 适合人群:电气工程、自动化、电力电子等相关专业的研究生、科研人员及从事新能源发电、智能电网、工业变流器研发的工程技术人员; 使用场景及目标:①研究并设计适用于复杂电网环境下的高性能PWM整流器控制算法;②掌握ADRC与MPC融合控制的系统架构与实现方法;③开展电力电子系统建模、仿真与控制策略验证,支撑科研项目或实际工程应用; 阅读建议:建议结合提供的Simulink仿真模型同步运行与调试,深入理解控制器各模块的设计原理,重点关注扰动观测器设计、代价函数构建与权重系数整定,并可参照文中推荐的技术资源拓展至其他先进控制方法的研究。

荔枝科研社

Multicast PCI Express.pdf

Multicast PCI Express.pdf

Kernel_RDMA

YOLOv8火焰烟雾检测系统实战

这是一套基于 YOLOv8 的火焰烟雾双类别检测系统完整实战教程,对图像、视频、摄像头三种来源做火焰与烟雾检出,置信度越线时弹窗报警并写入 CSV 日志,全程 CPU 可跑。交付物含可运行 Python 源码、100 张自造小样本(图片加 YOLO 标注)、9 章文档(三件套)、PPT 和 7 张截图。 内容围绕 main.py 的命令:gui 打开 Tkinter 界面,三个按钮分别处理图像、视频、摄像头输入,置信度滑块实时调阈值;train 执行训练主循环,--dryrun 用 1 epoch 20 张图先验证,正式训练 100 张 30 epoch CPU 实测约 33 分钟;infer 支持命令行单图或视频推理;check-data 校验图片与标注配对、生成 data.yaml。报警控制器在火焰置信度越线时弹窗,按来源设冷却窗口防刷屏。 亮点在于无显卡要求:8GB 内存普通电脑即可,yolov8n 权重约 6.2MB、3.0M 参数,单图推理实测 60ms;依赖锁定 Python 3.10 + ultralytics 8.0.196 + torch 2.1.0+cpu + opencv-python 4.8.1.78;第 7 章整理 15 个以上高频报错;第 8 章给出换数据集、换模型、接视频流的路径。

小鹿( ﹡ˆoˆ﹡ )

高校技术转移办公室人员在推动成果落地时,如何快速识别优质技术成果?.docx

高校技术转移办公室人员在推动成果落地时,如何快速识别优质技术成果?

BIZKEEN

未命名 PPT.pptx

未命名 PPT.pptx

PilotWang
评论
收藏 已收藏
分享
返回顶部
SphereEx
SphereEx 企业官方账号 企业官方账号
SphereEx 18 成员 19 内容