重构方案设计

简介: 重构方案设计

1、拆

拆库优势: 很方便实现线性扩展

原始订单库: order(数据量1.4亿)

新库: 按照user_id 维度hash user_id % 512 的规则 新增512个库 order_0 ~ order_511

写入规则:

新老都可以写、新系统按订单生成规则生成 64位id、老系统写入规则保持不变

读取规则:

新老系统都可以读、短id指定读order库(老库)、长id读 order_0 ~ order_511


2、唯一id生成器规则:

40位时间差 + 9位库号 + 6位应用号 + 9位顺序号

最大QPS: 512 * 1000 = 50万

最大应用数: 81个

使用寿命:可以使用30年


3、灰度:

按流量灰度:

按照 0.1% -> 1% -> 20% -> 50% -> 100% 依次递增、采用nginx+lua 开发灰度方案 (建议)

逐步平滑迁移到新系统


4、数据同步方案:

#### 新-> 老:

方案A:

1、采用mysql 7+(mariaDB 10.1 +)多住一从特性、往老表同步

方案B:

2、采用canal解析binlog 同步到老库

#### 老->新

无需同步、短id直接读老order库


5、 此方案需要解决以下几个问题(前置条件):

1: 老库订单表 主键自增去掉、业务逻辑层实现自增

2: 老系统查询 不能关联查询 、子查询 等操作

3: 老系统订单所有Integer类型 需要改成Long型


6、 此方案优势:

1:不需要历史数据迁移、只需新系统往老系统汇总数据

2: 平滑迁移


7、 后续改进:

1: 汇总数据迁移到检索系统(ES)


8、存在的问题:
1、历史表数据量依然巨大、查询慢问题没有解决、可以推出一部分历史数据


相关文章
|
8月前
|
消息中间件 供应链 前端开发
如何开发WMS系统中的采购管理板块(附架构图+流程图+代码参考)
本文介绍了WMS系统中采购管理模块的设计与实现,涵盖功能模块、业务流程、开发技巧及常见问题解决方案,助力企业提升供应链效率与库存管理水平。
|
8月前
|
存储 JavaScript 前端开发
如何开发ERP系统中的技术管理板块(附架构图+流程图+代码参考)
ERP系统中的技术管理板块对企业资源规划至关重要,尤其在制造业中,涵盖产品信息管理、BOM维护、工艺路线设计等功能,确保生产流程高效协同。本文详解其方案设计、核心模块与开发技巧,助力企业构建高效管理系统。
|
存储 运维 NoSQL
如何撰写好的技术方案设计-真实案例干货分享
如何撰写好的技术方案设计-真实案例干货分享
2948 0
|
运维 安全 Linux
Linux文件清空的五种方法总结分享
每种方法各有优势,选择最合适的一种或几种,可以极大提高您的工作效率。更多有关Linux系统管理的技巧与资源,欢迎访问,持续提升您的运维技能。
609 1
|
Java 调度
线程池如何知道一个线程的任务已经执行完成
线程池如何知道一个线程的任务已经执行完成
1062 0
|
存储 缓存 监控
如何写出一篇好的技术方案?
近期作者在写某个项目的技术方案时,来来回回修改了许多版,很是苦恼。于是,将自己之前写的和别人写的技术方案都翻出来看了几遍,产生了一些思考,分享给大家。
如何写出一篇好的技术方案?
|
安全 开发者 Docker
使用Docker进行本地开发环境设置:高效、可重复与隔离的利器
【8月更文挑战第8天】使用Docker进行本地开发环境设置不仅提高了开发效率,还保证了开发环境的一致性和可重复性。通过简单的Dockerfile和Docker命令,开发者可以轻松地创建、运行和管理自己的开发环境。随着Docker的普及和生态的不断发展,相信它将在未来的软件开发中发挥更加重要的作用。
|
SQL 存储 自然语言处理
为什么数据库字符编码不一致会导致索引失效
为什么数据库字符编码不一致会导致索引失效
457 2
|
算法 Java
游戏匹配系统的奥秘,Java代码揭秘
游戏匹配系统的奥秘,Java代码揭秘
466 1
|
存储 SQL 关系型数据库
AnalyticDB PostgreSQL构建一站式实时数仓实践
本文介绍通过 AnalyticDB PostgreSQL 版基于实时物化视图,构建流批一体的一站式实时数仓解决方案,实现一套系统、一份数据、一次写入,即可在数仓内完成实时数据源头导入到实时分析全流程。
2836 5
AnalyticDB PostgreSQL构建一站式实时数仓实践

热门文章

最新文章