程序员必备,《新老系统切换宝典》
共 3309字,需浏览 7分钟
·
2021-12-18 22:59
这里是Z哥的个人公众号
每周五11:45 按时送达
当然了,也会时不时加个餐~
我的第「216」篇原创敬上
应用程序是否停机
数据的同步是离线进行还是实时进行
停机+离线
停机+实时
不停机+离线
不停机+实时
部署新服务端系统。
建立新老服务端系统之间的双向同步。
检查同步机制 OK 后,对外宣告维护中。
发布新版本的终端系统。
检查系统功能正常后,宣告维护结束。
部署一套完整的新系统(终端+服务端)。
检查整套新系统功能正常后,对新访问的用户进行流量切换( APP 的话就是灰度下发升级),将部分流量导到新的终端系统。
验证新系统的稳定性。如果稳定性出现问题,流量完全切换回旧系统,否则继续提高新系统的流量占比。
等到流量 100% 切换到新系统之后,完全下线老系统,完成切换。
数据迁移的方案
异常数据的识别工具
异常数据的自动处理机制
需要同步的存量数据范围(主要是时间跨度)
临界点的处理方案
订单管理系统就是全量模型的系统,因为单据的变化依赖于上一次的变化,无法跳过中间的任意一次变化。
库存管理系统就可以设计成增量模型的系统,因为每一次对库存的增加和减少都是独立进行的,不依赖于上一次的变化。
资源保护原则 数据过滤原则 数据照搬原则 http://chisc.net/doc/view/3373.html
分别采样新旧系统在某些时刻的数据。
统计出这些时刻新旧系统之间差异情况。(差异数量、差异的同比、环比变化)
数据重复:应对重复数据,主要的思路就是幂等处理。其实这也是应该在制定同步方案的时候就要考虑好的问题。
数据缺失:如果不是 DB 层面的数据同步,数据缺失的情况还是有概率出现的。要么是旧系统发起同步的时候丢了,要么是新系统接收到数据并写入到磁盘的时候出现了异常。解决起来倒也简单,重新同步一下就好了。
数据同步时间差:像订单系统这种全量模型的系统,对于数据同步的延迟容忍度比较低,比如用户来查看自己的订单,发现还是修改之前的信息,就很尴尬。此时,我们可以做一个主动查询旧系统的机制:
当用户在新系统发起查询某个数据时,我们主动查询一下旧系统。
如果发现新系统的数据是旧的,则强制同步一次。
同步完成后,返回给终端展示给用户。(因为是单条数据同步,一般1秒内都能搞定,用户无感)
数据迁移的方案
异常数据的识别工具
异常数据的自动处理机制
推荐阅读:
原创不易,如果你觉得这篇文章还不错,就「点赞」或者「在看」一下吧,鼓励我的创作 :)
也可以分享我的公众号名片给有需要的朋友们。
如果你有关于软件架构、分布式系统、产品、运营的困惑
可以试试点击「阅读原文」