自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

系統(tǒng)零停機(jī)的分階段遷移策略

譯文 精選
開(kāi)發(fā) 前端
對(duì)于企業(yè)來(lái)說(shuō),軟件遷移在所難免,但干凈利落的執(zhí)行對(duì)于避免未來(lái)出現(xiàn)的回滾或回填等混亂局面至關(guān)重要。本文將介紹一系列確保軟件順利遷移的技巧。

譯者 | 李睿

審校 | 重樓

在分布式系統(tǒng)中,多個(gè)服務(wù)協(xié)同工作以完成既定任務(wù),每個(gè)服務(wù)由不同的團(tuán)隊(duì)管理并獨(dú)立發(fā)展。這往往催生了對(duì)依賴(lài)遷移的需求,例如數(shù)據(jù)庫(kù)模式更新、外部服務(wù)升級(jí)或數(shù)據(jù)源更改。這些遷移是開(kāi)發(fā)生命周期的關(guān)鍵部分,需要周密的計(jì)劃和執(zhí)行,以確保有效地防止回滾、數(shù)據(jù)不一致問(wèn)題和運(yùn)營(yíng)中斷等情況的發(fā)生。

軟件遷移示例

在探索遷移策略之前,了解需要進(jìn)行軟件遷移的常見(jiàn)場(chǎng)景及其詳細(xì)規(guī)劃要求至關(guān)重要:

(1)數(shù)據(jù)源更改:應(yīng)用程序當(dāng)前從訂單表中獲取customerID以向客戶(hù)收費(fèi)。但是,現(xiàn)在需要進(jìn)行遷移,并從待支付表中(pendingPayments)表中獲取customerID。

(2)依賴(lài)版本更新:工作團(tuán)隊(duì)將他們的系統(tǒng)從V1版本更新到V2版本,其中新版本不向后兼容。應(yīng)用程序必須適應(yīng)新版本以保持無(wú)縫的功能。

軟件遷移策略

在持續(xù)運(yùn)行的系統(tǒng)中,必須設(shè)計(jì)遷移以避免服務(wù)中斷并確保可靠性。為實(shí)現(xiàn)這一目標(biāo),應(yīng)優(yōu)先考慮兩個(gè)關(guān)鍵目標(biāo):

(1)零停機(jī)時(shí)間:在整個(gè)遷移過(guò)程中,系統(tǒng)必須保持完全運(yùn)行并可供客戶(hù)端訪問(wèn),確保不間斷的可用性。

(2)數(shù)據(jù)完整性:遷移必須保持?jǐn)?shù)據(jù)的準(zhǔn)確性和一致性,確保輸出保持可靠且不受遷移的影響。

成功指標(biāo)

定義清晰且可衡量的指標(biāo)是成功遷移的基礎(chǔ)。這些指標(biāo)確保遷移在不引入錯(cuò)誤或不一致的情況下實(shí)現(xiàn)其目標(biāo):

  • 對(duì)于數(shù)據(jù)源更改:通過(guò)驗(yàn)證新舊數(shù)據(jù)源是否提供相同的數(shù)據(jù)來(lái)衡量是否成功。這確保了遷移不會(huì)影響數(shù)據(jù)的完整性或準(zhǔn)確性。
  • 對(duì)于依賴(lài)項(xiàng)更改通過(guò)確認(rèn)依賴(lài)的舊版本和新版本的輸出(例如,對(duì)象值)相同來(lái)定義成功,這保證了轉(zhuǎn)換后的無(wú)縫功能。

遷移代碼和A/B測(cè)試框架

在實(shí)施遷移代碼時(shí),對(duì)更改進(jìn)行結(jié)構(gòu)化以實(shí)現(xiàn)向新系統(tǒng)的平穩(wěn)過(guò)渡至關(guān)重要。

最佳實(shí)踐是將遷移代碼置于控制和處理設(shè)置或A/B測(cè)試框架之后。這種方法允許開(kāi)發(fā)人員在新舊系統(tǒng)之間無(wú)縫切換,而不需要額外的代碼更改。它增強(qiáng)了測(cè)試、監(jiān)控和風(fēng)險(xiǎn)管理,確保遷移過(guò)程可控,并在必要時(shí)易于逆轉(zhuǎn)。

為了實(shí)現(xiàn)這一點(diǎn),系統(tǒng)應(yīng)設(shè)計(jì)為支持多種運(yùn)營(yíng)模式,這些模式包括:

(1)舊模式

  • 說(shuō)明:系統(tǒng)繼續(xù)像以前一樣運(yùn)行,使用舊版實(shí)現(xiàn)。
  • 目的:在引入新系統(tǒng)之前,作為基準(zhǔn)并確保穩(wěn)定性。

(2)影子模式

  • 說(shuō)明:新舊系統(tǒng)并行運(yùn)行,但客戶(hù)端只使用舊系統(tǒng)的結(jié)果。
  • 目的:該模式允許在不影響最終用戶(hù)的情況下比較新舊系統(tǒng)的輸出。
  • 行動(dòng):測(cè)量和記錄新舊系統(tǒng)結(jié)果之間的任何差異,并發(fā)布指標(biāo)進(jìn)行分析,以驗(yàn)證新系統(tǒng)的準(zhǔn)確性。

(3)反向影子模式

  • 說(shuō)明:舊系統(tǒng)和新系統(tǒng)都運(yùn)行,但這次客戶(hù)端使用新系統(tǒng)的結(jié)果。
  • 目的:提供機(jī)會(huì)在實(shí)際條件下驗(yàn)證新系統(tǒng)的結(jié)果,同時(shí)保留舊系統(tǒng)作為備用。
  • 行動(dòng):記錄兩個(gè)系統(tǒng)之間的差異,并發(fā)出指標(biāo)來(lái)監(jiān)控新系統(tǒng)的性能。

(4)新模式

  • 描述:新系統(tǒng)全面投入運(yùn)行,舊系統(tǒng)退役。
  • 目的:這標(biāo)志著遷移的完成,新系統(tǒng)已經(jīng)過(guò)徹底的測(cè)試和驗(yàn)證,可以用于生產(chǎn)。

執(zhí)行遷移

步驟1:準(zhǔn)備遷移(舊模式)

遷移過(guò)程默認(rèn)從系統(tǒng)以舊模式運(yùn)行開(kāi)始,這確保當(dāng)前實(shí)現(xiàn)在遷移準(zhǔn)備期間保持運(yùn)行和穩(wěn)定。

步驟2:影子模式

切換到影子模式,在這種模式下,舊系統(tǒng)和新系統(tǒng)并行運(yùn)行,但只有舊系統(tǒng)的結(jié)果返回給客戶(hù)端。這是最關(guān)鍵的階段,因?yàn)樗试S在不影響生產(chǎn)功能的情況下對(duì)新系統(tǒng)進(jìn)行廣泛的測(cè)試和改進(jìn)。使用指標(biāo)和警報(bào)來(lái)監(jiān)視差異,并調(diào)查和處理其根本原因。應(yīng)該進(jìn)行必要的修復(fù),以確保新系統(tǒng)的行為符合預(yù)期。在這一階段應(yīng)該分配充足的時(shí)間,在各種場(chǎng)景中收集足夠的指標(biāo)。

步驟3:反向影子模式

一旦對(duì)影子模式感到滿(mǎn)意,就可以切換到反向影子模式。在該模式下,客戶(hù)端使用新系統(tǒng)的結(jié)果,而舊系統(tǒng)繼續(xù)在后臺(tái)運(yùn)行以進(jìn)行驗(yàn)證。這種轉(zhuǎn)換有助于識(shí)別新系統(tǒng)成為主要系統(tǒng)時(shí)可能出現(xiàn)的任何新問(wèn)題或意外行為。例如,一個(gè)問(wèn)題在影子模式下可能不會(huì)被發(fā)現(xiàn),但在反向影子模式下可能會(huì)被檢測(cè)到,即舊系統(tǒng)向數(shù)據(jù)庫(kù)寫(xiě)入正確的值,而新系統(tǒng)只讀取這些值而沒(méi)有進(jìn)行必要的更新。由于新系統(tǒng)現(xiàn)在在反向影子模式下驅(qū)動(dòng)整個(gè)流程,因此任何此類(lèi)差異都會(huì)變得顯而易見(jiàn)。

如果識(shí)別出關(guān)鍵問(wèn)題,重要的是切換回影子模式,以在實(shí)施必要修復(fù)的同時(shí)將風(fēng)險(xiǎn)降至最低。

步驟4:完全遷移(新模式)

一旦對(duì)反向影子模式下的性能充滿(mǎn)信心,就過(guò)渡到新模式,在新模式下,舊系統(tǒng)將退役,新系統(tǒng)將開(kāi)始全面運(yùn)行。這樣就完成了一個(gè)可靠的且經(jīng)過(guò)徹底測(cè)試的新系統(tǒng)的遷移。

這種分階段執(zhí)行的方法確保了平穩(wěn)過(guò)渡,實(shí)現(xiàn)風(fēng)險(xiǎn)最小化和全面測(cè)試,并在出現(xiàn)問(wèn)題時(shí)采取回退策略。

潛在的缺點(diǎn)

對(duì)簡(jiǎn)單遷移采取過(guò)度措施

對(duì)于直接的或向后兼容的遷移來(lái)說(shuō),這種方法可能過(guò)于復(fù)雜。例如,升級(jí)Java版本或在兼容API之間轉(zhuǎn)換等任務(wù)通常需要最少的努力,并且可以通過(guò)更簡(jiǎn)單的策略和不太詳盡的計(jì)劃來(lái)完成。

資源密集

在影子模式下運(yùn)行并行系統(tǒng)可能在基礎(chǔ)設(shè)施、計(jì)算和工程投入方面成本高昂。規(guī)模較小的團(tuán)隊(duì)或項(xiàng)目可能難以分配日志分析、指標(biāo)檢測(cè)和擴(kuò)展測(cè)試所需的資源。

復(fù)雜性

管理多個(gè)運(yùn)行模式(例如,舊模式、影子模式、反向影子模式)將會(huì)增加遷移過(guò)程的復(fù)雜性。它還可能導(dǎo)致協(xié)調(diào)方面的挑戰(zhàn),特別是當(dāng)涉及多個(gè)團(tuán)隊(duì)來(lái)適應(yīng)依賴(lài)關(guān)系更改或解決差異時(shí)。

結(jié)論

這種遷移策略在確??煽啃院托史矫婢哂酗@著的優(yōu)勢(shì)。通過(guò)使用影子模式和反向影子模式,可以及早發(fā)現(xiàn)新系統(tǒng)的潛在問(wèn)題,從而在全面部署之前大幅降低風(fēng)險(xiǎn)。在新舊系統(tǒng)之間切換的靈活性確保了更平滑的回滾,從而提供了一個(gè)強(qiáng)大的安全網(wǎng)。此外,監(jiān)視關(guān)鍵指標(biāo)和記錄差異有助于評(píng)估系統(tǒng)準(zhǔn)備情況并指導(dǎo)必要的調(diào)整。

但是,重要的是要權(quán)衡該策略的潛在缺點(diǎn),以確保不會(huì)在不適用的情況下采用它,畢竟有些遷移更適合采用更簡(jiǎn)單的方法。盡管存在這些考慮因素,但對(duì)于高風(fēng)險(xiǎn)或復(fù)雜的遷移任務(wù)來(lái)說(shuō),該策略提供了一種可控的增量方法,可以最大限度地減少中斷,確保平穩(wěn)的用戶(hù)體驗(yàn),同時(shí)謹(jǐn)慎地管理風(fēng)險(xiǎn)。

原文標(biāo)題:Phased Migration Strategy for Zero Downtime in Systems,作者:Sandeep Kumar Gond


責(zé)任編輯:華軒 來(lái)源: 51CTO
相關(guān)推薦

2024-12-03 10:59:36

2013-03-25 10:44:45

存儲(chǔ)虛擬化

2020-11-20 09:00:00

滲透測(cè)試安全工具

2015-12-25 11:18:52

招商

2019-06-24 15:00:52

數(shù)據(jù)遷移數(shù)據(jù)轉(zhuǎn)換數(shù)據(jù)集成

2018-03-14 09:49:35

數(shù)據(jù)庫(kù)遷移

2018-04-26 11:00:17

數(shù)據(jù)移動(dòng)數(shù)據(jù)中心云端

2023-10-20 08:00:55

PodRainbow部署

2010-05-05 11:48:27

Oracle設(shè)計(jì)開(kāi)發(fā)階

2020-04-24 10:38:54

云遷移云計(jì)算

2020-02-14 09:30:36

云遷移數(shù)據(jù)中心云計(jì)算

2024-10-25 10:00:00

云服務(wù)計(jì)算

2022-06-02 13:59:57

數(shù)據(jù)遷移數(shù)據(jù)

2020-11-10 23:08:17

零信任訪問(wèn)物聯(lián)網(wǎng)平臺(tái)IOT

2020-05-06 13:47:42

ZooKeeperKubernetes遷移

2022-02-17 12:13:17

零信任網(wǎng)絡(luò)安全網(wǎng)絡(luò)攻擊

2020-11-03 10:50:52

云遷移云開(kāi)發(fā)云計(jì)算

2020-12-29 10:53:25

云遷移云端云平臺(tái)

2022-01-19 12:23:36

云遷移云端

2013-11-01 11:09:15

Linux遷移Windows服務(wù)器
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)