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