回滾是指當程序/數據出錯時,將數據和程序恢復到最近的一個正確版本的行為。
常見的如事務回滾、代碼庫回滾、部署版本回滾、數據版本回滾、靜態資源版本回滾等。
7.1 事務回滾
單庫的回滾比較簡單,分布式數據庫,回滾則要使用分布式事務,見分布式事務筆記。底層實現如2PC,3PC長時間阻塞會影響性能。不需要保證強一致性,則使用本地消息表、事務消息、TCC模式、Sagas模式等實現最終一致性。
7.2 代碼庫回滾
7.3 部署版本回滾
部署版本化:避免只發布修改的類和文件,應該全量發布。保留上次發布的版本,方便直接回滾
小版本增量發布:小版本指修復BUG或者小功能,增量發布指先發布1台驗證,然后增量發布直至全部發布
大版本灰度發布:在一個集群中同時部署兩套新舊版本,並行跑一段時間,將流量分發到新舊系統(通過帶版本號的URL等),如果驗證成功則全部切換到新版本
架構升級並發布:新老版本部署不同集群
7.4 數據版本回滾
對業務數據中的商品/價格數據,需要進行版本化處理。
7.5 靜態資源版本回滾
1. 發布新的靜態資源到源服務器
2. 清理CDN緩存,從而可以回源服務器獲取最新的靜態資源
3. 在新的URL上添加隨機數並清理瀏覽器緩存