程序員必備,《新老系統(tǒng)切換寶典》
這里是Z哥的個(gè)人公眾號
每周五11:45 按時(shí)送達(dá)
當(dāng)然了,也會時(shí)不時(shí)加個(gè)餐~
我的第「216」篇原創(chuàng)敬上
應(yīng)用程序是否停機(jī)
數(shù)據(jù)的同步是離線進(jìn)行還是實(shí)時(shí)進(jìn)行
停機(jī)+離線
停機(jī)+實(shí)時(shí)
不停機(jī)+離線
不停機(jī)+實(shí)時(shí)
部署新服務(wù)端系統(tǒng)。
建立新老服務(wù)端系統(tǒng)之間的雙向同步。
檢查同步機(jī)制 OK 后,對外宣告維護(hù)中。
發(fā)布新版本的終端系統(tǒng)。
檢查系統(tǒng)功能正常后,宣告維護(hù)結(jié)束。
部署一套完整的新系統(tǒng)(終端+服務(wù)端)。
檢查整套新系統(tǒng)功能正常后,對新訪問的用戶進(jìn)行流量切換( APP 的話就是灰度下發(fā)升級),將部分流量導(dǎo)到新的終端系統(tǒng)。
驗(yàn)證新系統(tǒng)的穩(wěn)定性。如果穩(wěn)定性出現(xiàn)問題,流量完全切換回舊系統(tǒng),否則繼續(xù)提高新系統(tǒng)的流量占比。
等到流量 100% 切換到新系統(tǒng)之后,完全下線老系統(tǒng),完成切換。
數(shù)據(jù)遷移的方案
異常數(shù)據(jù)的識別工具
異常數(shù)據(jù)的自動處理機(jī)制
需要同步的存量數(shù)據(jù)范圍(主要是時(shí)間跨度)
臨界點(diǎn)的處理方案
訂單管理系統(tǒng)就是全量模型的系統(tǒng),因?yàn)閱螕?jù)的變化依賴于上一次的變化,無法跳過中間的任意一次變化。
庫存管理系統(tǒng)就可以設(shè)計(jì)成增量模型的系統(tǒng),因?yàn)槊恳淮螌齑娴脑黾雍蜏p少都是獨(dú)立進(jìn)行的,不依賴于上一次的變化。
資源保護(hù)原則 數(shù)據(jù)過濾原則 數(shù)據(jù)照搬原則 http://chisc.net/doc/view/3373.html
分別采樣新舊系統(tǒng)在某些時(shí)刻的數(shù)據(jù)。
統(tǒng)計(jì)出這些時(shí)刻新舊系統(tǒng)之間差異情況。(差異數(shù)量、差異的同比、環(huán)比變化)
數(shù)據(jù)重復(fù):應(yīng)對重復(fù)數(shù)據(jù),主要的思路就是冪等處理。其實(shí)這也是應(yīng)該在制定同步方案的時(shí)候就要考慮好的問題。
數(shù)據(jù)缺失:如果不是 DB 層面的數(shù)據(jù)同步,數(shù)據(jù)缺失的情況還是有概率出現(xiàn)的。要么是舊系統(tǒng)發(fā)起同步的時(shí)候丟了,要么是新系統(tǒng)接收到數(shù)據(jù)并寫入到磁盤的時(shí)候出現(xiàn)了異常。解決起來倒也簡單,重新同步一下就好了。
數(shù)據(jù)同步時(shí)間差:像訂單系統(tǒng)這種全量模型的系統(tǒng),對于數(shù)據(jù)同步的延遲容忍度比較低,比如用戶來查看自己的訂單,發(fā)現(xiàn)還是修改之前的信息,就很尷尬。此時(shí),我們可以做一個(gè)主動查詢舊系統(tǒng)的機(jī)制:
當(dāng)用戶在新系統(tǒng)發(fā)起查詢某個(gè)數(shù)據(jù)時(shí),我們主動查詢一下舊系統(tǒng)。
如果發(fā)現(xiàn)新系統(tǒng)的數(shù)據(jù)是舊的,則強(qiáng)制同步一次。
同步完成后,返回給終端展示給用戶。(因?yàn)槭菃螚l數(shù)據(jù)同步,一般1秒內(nèi)都能搞定,用戶無感)
數(shù)據(jù)遷移的方案
異常數(shù)據(jù)的識別工具
異常數(shù)據(jù)的自動處理機(jī)制
推薦閱讀:
原創(chuàng)不易,如果你覺得這篇文章還不錯(cuò),就「點(diǎn)贊」或者「在看」一下吧,鼓勵(lì)我的創(chuàng)作 :)
也可以分享我的公眾號名片給有需要的朋友們。
如果你有關(guān)于軟件架構(gòu)、分布式系統(tǒng)、產(chǎn)品、運(yùn)營的困惑
可以試試點(diǎn)擊「閱讀原文」
