2023年某支付平臺宕機47分鐘,直接損失3400萬。事后復盤發現,他們的RTO(恢復時間目標)寫的是15分鐘,但自動化腳本上次測試是11個月前——早就失效了。
這不是技術故障,是數字幻覺。
每個系統都會死。硬盤會崩,網絡會裂,第三方API會突然抽風20分鐘。問題從來不是"會不會出事",而是"出事之后你能多快把自己撈回來"。
用醫院做類比:你的主數據中心是本院,災備中心是隔壁城區的分院。病人(請求)得繼續看病,哪怕本院著火了。健康檢查是心電監護,熔斷是急診分診,故障切換是救護車改道。
RTO和RPO:兩個數字定生死
設計之前先定兩個數,其他一切由此推導。
RTO(恢復時間目標)——系統最多能躺多久,業務才不算完蛋。RPO(恢復點目標)——如果此刻爆炸,從備份恢復時最多能丟多少數據。
不同業務的容忍度天差地別:
支付系統:RTO 5分鐘,RPO趨近于零。每分鐘下線都是真金白銀。
內部報表:RTO 4小時,RPO 24小時。用戶能等,昨晚的數據就夠用了。
用戶資料服務:RTO 30分鐘,RPO 1小時。體驗降級,但不傷營收。
審計日志:RTO 1小時,RPO為零。合規紅線,丟一條都不行。
RTO不是單純的技術切換時間。它包含完整鏈條:檢測(健康檢查觸發,約60秒)→決策(人工或自動判定,0-300秒)→執行(實際切換操作)→驗證(確認服務恢復)。
5分鐘的RTO目標意味著全程自動化,零人工介入。這需要持續投入——不是買工具,是養演練。
同步復制:零數據丟失的代價
RPO趨近于零,通常需要同步復制。每筆寫入同時在主備兩地確認成功,才返回客戶端。
延遲隨之而來。跨可用區增加5-15毫秒,跨區域可能飆到100毫秒以上。對高頻交易來說,這是致命傷。
某證券系統曾強制同步復制到200公里外的災備中心,結果核心交易延遲從3毫秒漲到127毫秒。他們最終妥協:關鍵流水同步,行情數據異步,接受秒級RPO。
架構沒有完美解,只有權衡后的可接受解。
故障切換:自動化是雙刃劍
自動故障切換能把RTO壓到分鐘級,但也會制造"腦裂"災難——兩個數據中心同時認為自己主活,數據互相覆蓋。
經典防護是"法定人數"機制:切換前必須確認主站點真正死亡,而非網絡分區導致的假死。這需要奇數個仲裁節點,通常3個或5個。
某云廠商的托管數據庫服務,曾因仲裁節點配置錯誤,在網絡抖動時觸發誤判,導致主備雙寫。客戶數據沖突,恢復耗時17小時——遠超任何人工切換。
自動化腳本必須定期演練。不是"能跑通",是"在混亂中仍能跑通"。
災備不是備份:兩個完全不同的物種
備份是"數據的時間膠囊",災備是"系統的平行宇宙"。
備份解決"我刪錯了,給我恢復到上周三"。災備解決"整棟樓沒了,業務怎么繼續"。
只備份不演練,等于買保險從不看條款。2022年某零售企業火災后啟動災備,發現備用系統的數據庫版本落后主庫8個月,應用啟動即崩潰。他們有備份,但沒有"能用的"災備。
3-2-1法則在此變形:3份數據,2種介質,1份異地——且異地那份必須能獨立拉起完整服務。
某金融科技公司的做法值得參考:每月隨機選一個周五下午,主站直接斷電,強制觸發災備切換。運維團隊不知道是哪個月、哪個系統。第一次演練花了4小時才恢復,半年后壓到11分鐘。
真正的韌性不是設計出來的,是摔打出來的。
你的RTO和RPO寫在紙上,還是刻在自動化腳本里?上次真實演練是什么時候,你還記得嗎?
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.