重构方案设计

简介: 重构方案设计

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、历史表数据量依然巨大、查询慢问题没有解决、可以推出一部分历史数据


相关文章
|
存储 SQL 关系型数据库
如何设计可落地的重构技术方案——理论篇
如何设计可落地的重构技术方案——理论篇
270 0
|
3月前
codereview开发问题之降低代码复杂度问题如何解决
codereview开发问题之降低代码复杂度问题如何解决
|
搜索推荐 安全 数据挖掘
产品运营方法论:从目标拆解到策略重构
本文从产品运营的定义到作者对产品运营的理解以及一些工作中用到的方法论做了总结。
211110 33
|
11月前
|
设计模式 算法
重构,避免重构误区
重构,避免重构误区
37 0
|
设计模式 缓存 运维
为什么要持续重构
什么是重构? 重构是在不改变软件可观察行为的前提下改善其内部结构。---Martin Fowler 通俗说法:看起来没做啥调整,让系统继续更好的满足客户需求。同时,希望重构完成后,这个系统能够多蹦跶几年。
|
消息中间件 缓存 负载均衡
架构重构的技巧
对软件代码做任何改动以增加可读性或者简化结构而不影响输出结果。
141 0
|
监控 前端开发 安全
大型 SPA 项目架构设计与重构
本文主要为分享我司 控制台 最近两年的架构演进,遇到的问题和解决方案等。控制台项目包含近百个不同产品,跨部门、跨地域协作开发,是一个比较典型的大型 SPA 前端项目。
大型 SPA 项目架构设计与重构
|
设计模式 JSON 测试技术
项目重构演进之路
项目重构演进之路
708 0
|
数据格式 索引
日常开发之重构
作为开发人员,应该让重构贯穿于你的开发日常的每一刻。
345 0
|
监控 关系型数据库 数据中心
常用的架构指导原则分析:要想做好架构设计,一定要遵循这几个设计原则!
本篇文章中主要介绍了在对项目系统进行架构设计,需要遵循的几种架构设计原则。架构设计的原则包括开闭原则,单一职责原则,里氏代换原则,接口隔离原则,依赖反转原则,复用与发布等同原则,共同闭包原则,共同复用原则等等。
446 0
常用的架构指导原则分析:要想做好架构设计,一定要遵循这几个设计原则!
下一篇
无影云桌面