1、概述
我曾经做过多次千万级系统重构,该系列文章来自于实际中的总结,绝对干货!包含灰度方案,唯一Id生成器,分库分表,双写方案,辅助工具开发,以及微服务架构落地等等。同时我也会分享一些这其中遇到的一些问题,以及我们是如何解决的。
2、重构那些事
- 单体架构
随着业务的发展,单体架构问题逐渐暴露
- 业务越来越复杂,单体架构扩展性不足,业务扩展带来的代价越来越大
- 数据库单点写入瓶颈,mysql数据量太大查询效率不高
- 改动一个点可能导致其它地方出问题 所以系统重构显得尤为重要!
- 微服务架构
数据库层一般会分库/分表,以订单系统为例
3、如何从单体架构过渡到微服务架构
- 入口层采用按流量灰度,流量逐步增大,降低风险
- db层双向同步,一旦有问题可以随时回滚到老系统,并且一般情况下新系统会分库分表
- 数据对比工具,实时/手动对比数据是否一致,提前发现潜在的问题
4、内容概况
大致罗列了一下大概有如下内容点:
系列文章一期:
- 1). 基于openresty开发轻量级,按流量控制的灰度模块
- 2). 浅谈唯一Id生成器最佳实践
- 3). 浅谈mysql分库分表那些事儿
- 4). 浅谈基于MQ&binlog同步数据双写方案
- 5). 浅谈数据双写之对比工具实现方案 以上完成了重构通用的一些技术方案
系列文章二期
微服务落地相关,课程章节待定
我将持续更新,大概一周更新一个主题,敬请期待!
5、总结
记得第一次参与做千万订单系统重构,我们leader说了这样一句话:"重构这样的事,一辈子干一次就够了",确实,重构会遇到各种奇葩的问题,并且需要很多前期准备工作,比如:模块拆分,权限回收,SQL改造等等。但是解决了这些问题,也会乐在其中。在这里,感谢那些曾经一起奋斗过的小伙伴!