日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

【资损】系统迭代过程中的兼容性设计

發(fā)布時間:2023/12/20 windows 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【资损】系统迭代过程中的兼容性设计 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

📫作者簡介:小明java問道之路,專注于研究 Java/ Liunx內(nèi)核/ C++及匯編/計(jì)算機(jī)底層原理/源碼,就職于大型金融公司后端高級工程師,擅長交易領(lǐng)域的高安全/可用/并發(fā)/性能的架構(gòu)設(shè)計(jì)與演進(jìn)、系統(tǒng)優(yōu)化與穩(wěn)定性建設(shè)。

📫 熱衷分享,喜歡原創(chuàng)~ 關(guān)注我會給你帶來一些不一樣的認(rèn)知和成長。

🏆 InfoQ簽約作者、CSDN專家博主/后端領(lǐng)域優(yōu)質(zhì)創(chuàng)作者/內(nèi)容合伙人、阿里云專家/簽約博主、51CTO專家 🏆

🔥如果此文還不錯的話,還請👍關(guān)注、點(diǎn)贊、收藏三連支持👍一下博主~?

本文目錄

本文導(dǎo)讀

一、 資損防控系統(tǒng)設(shè)計(jì)資損防控規(guī)范

二、兼容性設(shè)計(jì)隨業(yè)務(wù)的不斷變更和發(fā)展

1、數(shù)據(jù)庫、接口服務(wù)新增的向前兼容性原則

2、數(shù)據(jù)庫、接口服務(wù)變更的向后兼容性原則

2.1 刪除字段

2.2 新增字段

2.3 變更字段約束

2.4 變更字段名稱

2.5 變更字段類型

2.6 數(shù)據(jù)庫索引變更的時候要考慮對產(chǎn)線執(zhí)行計(jì)劃的影響

三、數(shù)據(jù)庫、接口服務(wù)刪除原則

四、注意文件字段、緩存對象,消息對象

五、生產(chǎn)系統(tǒng)發(fā)布過程中兼容性考量

1、系統(tǒng)和數(shù)據(jù)之間的兼容性

2、系統(tǒng)和業(yè)務(wù)處理之間的兼容性

3、新老系統(tǒng)間的兼容性

4、兼容性分析

4.1 組合考量業(yè)務(wù)的處理

4.2 組合考量新舊系統(tǒng)兼容性的處理

4.3 組合考量新舊系統(tǒng)與新舊數(shù)據(jù)的兼容性處理

六、生產(chǎn)系統(tǒng)發(fā)布過程中,要考慮消息調(diào)度的兼容性

七、業(yè)務(wù)遷移過程的兼容處理

八、數(shù)據(jù)和數(shù)據(jù)存儲的遷移

九、采用開關(guān)的方式規(guī)避風(fēng)險(xiǎn)

總結(jié)


本文導(dǎo)讀

系統(tǒng)兼容性設(shè)計(jì)隨業(yè)務(wù)的不斷變更和發(fā)展、系統(tǒng)和架構(gòu)也在不斷的調(diào)整和優(yōu)化這其中既有新業(yè)務(wù)、新系統(tǒng)的上線,也有老業(yè)務(wù)、老系統(tǒng)、老數(shù)據(jù)的遷移。在這些新老的變化過程中,我們既不能導(dǎo)致業(yè)務(wù)的間斷影響可用率,更不能產(chǎn)生資損造成公司損失。

為了防范這些新舊間處理的風(fēng)險(xiǎn),我們需要從數(shù)據(jù)、系統(tǒng)、發(fā)布、業(yè)務(wù)等各個環(huán)節(jié)做好兼容性設(shè)計(jì)。

一、 資損防控系統(tǒng)設(shè)計(jì)資損防控規(guī)范

從系統(tǒng)架構(gòu)層面整體來看,支付公司的系統(tǒng)可以抽象為如下結(jié)構(gòu):

一、對外部商戶提供收單服務(wù)類的系統(tǒng)

二、連通支付公司與各金融渠道的網(wǎng)關(guān)類系統(tǒng)

三、支付公司的內(nèi)部業(yè)務(wù)處理系統(tǒng)

四、消息、調(diào)度等中間件系統(tǒng)

五、數(shù)據(jù)庫、緩存等存儲平臺

?

從系統(tǒng)架構(gòu)與業(yè)務(wù)架構(gòu)上來講,各個結(jié)構(gòu)連接的地方最容易出現(xiàn)資損。因此我們將從接口服務(wù)層面與系統(tǒng)設(shè)計(jì)層面對資損進(jìn)行分析并總結(jié)相關(guān)規(guī)范。

二、兼容性設(shè)計(jì)隨業(yè)務(wù)的不斷變更和發(fā)展

系統(tǒng)兼容性設(shè)計(jì)隨業(yè)務(wù)的不斷變更和發(fā)展、系統(tǒng)和架構(gòu)也在不斷的調(diào)整和優(yōu)化這其中既有新業(yè)務(wù)、新系統(tǒng)的上線,也有老業(yè)務(wù)、老系統(tǒng)、老數(shù)據(jù)的遷移。在這些新老的變化過程中,我們既不能導(dǎo)致業(yè)務(wù)的間斷影響可用率,更不能產(chǎn)生資損造成公司損失。

為了防范這些新舊間處理的風(fēng)險(xiǎn),我們需要從數(shù)據(jù)、系統(tǒng)、發(fā)布、業(yè)務(wù)等各個環(huán)節(jié)做好兼容性設(shè)計(jì)。

1、數(shù)據(jù)庫、接口服務(wù)新增的向前兼容性原則

數(shù)據(jù)庫、接口服務(wù)新增的向前兼容性原則,向前兼容設(shè)計(jì)更多的體現(xiàn)在數(shù)據(jù)庫、接口的初始化設(shè)計(jì)階段(新增數(shù)據(jù)庫結(jié)構(gòu)、新增接口)。

數(shù)據(jù)庫結(jié)構(gòu)與服務(wù)接口在設(shè)計(jì)過程中,在數(shù)據(jù)庫、接口復(fù)雜度與字段(個數(shù)、長度等)允許的范圍內(nèi),盡可能的考慮到未來可以預(yù)見的情況,支持未來的業(yè)務(wù)拓展。

新增設(shè)計(jì)時,需要考慮到:

1、數(shù)據(jù)庫字段、接口字段的合理冗余。比如在設(shè)計(jì)交易接口的時候,除了考慮交易金額字段,考慮未來有收費(fèi)的場景,可以增加手續(xù)費(fèi)金額字段。此時,也要注意避免過度設(shè)計(jì)。

2、數(shù)據(jù)庫字段,接口字段長度的適度放大與類型的泛化。比如在允許的范圍內(nèi),可以將交易金額字段設(shè)計(jì)的范圍長度大一些某些類型字段定義為字符串類型而非整數(shù)類型;時間參數(shù)精度設(shè)計(jì)到毫秒等。

3、數(shù)據(jù)庫字段、接口字段或接口處理邏輯的約束。考慮到未來有可能擴(kuò)展或放松現(xiàn)有約束(如非空判斷等),在接口中考虛默認(rèn)、異常等多種處理情況。

2、數(shù)據(jù)庫、接口服務(wù)變更的向后兼容性原則

數(shù)據(jù)庫、接口服務(wù)變更的向后兼容性原則,向后兼容設(shè)計(jì)是最常見的應(yīng)用場景,更多的提現(xiàn)在數(shù)據(jù)庫,接口的變更階段(變更數(shù)據(jù)庫結(jié)構(gòu)、接口)。

服務(wù)提供方在做接口非破壞性的變更時,需要確保服務(wù)以向后兼容的模式演變:

在無需變更現(xiàn)有消費(fèi)者的實(shí)現(xiàn)或配置的條件下被更多的消費(fèi)者重用。由于我們發(fā)布過程是DB先發(fā)布,所以新老系統(tǒng)是會同時使用一個數(shù)據(jù)庫結(jié)構(gòu)的。因此必須保證數(shù)據(jù)庫結(jié)構(gòu)發(fā)生變化的時候,新舊系統(tǒng)可以同時使用變更后的數(shù)據(jù)庫結(jié)構(gòu)。

一般數(shù)據(jù)庫、接口變更,分為如下場景:

2.1 刪除字段

1、禁止直接刪除正在使用的字段。

2、對于接口字段,如果確認(rèn)該字段所有的請求方和服務(wù)方都不再使用。分多個版本,按照請求方先去掉該字段,確認(rèn)所有請求方完成后,服務(wù)方方可以進(jìn)行字段的刪除。

3、對于數(shù)據(jù)庫字段,老系統(tǒng)要先解除和數(shù)據(jù)庫結(jié)構(gòu)間的字段依賴(包括語法依賴和業(yè)務(wù)依賴)再進(jìn)行刪除。對于已經(jīng)產(chǎn)生的數(shù)據(jù),要考慮保存機(jī)制。

2.2 新增字段

1、服務(wù)提供方需要考慮各服務(wù)請求方的兼容性。服務(wù)提供方對該字段的約束允許為空,接口處理可以以提供默認(rèn)值等方法保證邏輯處理兼容性。

2、數(shù)據(jù)庫結(jié)構(gòu)新增字段的時候,需要保證系統(tǒng)與數(shù)據(jù)庫結(jié)構(gòu)的語法與業(yè)務(wù)兼容。數(shù)據(jù)庫字段可空。

3、服務(wù)請求方在升級新增字段的時候,根據(jù)服務(wù)提供方該新增字段是否已經(jīng)上線、制定兼容性方案。

2.3 變更字段約束

1、禁止直接進(jìn)行字段約束從嚴(yán)的變更。接口進(jìn)行從嚴(yán)變更(如長度收縮)的時候,需要各服務(wù)請求方先檢視請求方約束是否符合條件;

不符合條件的。先完成請求方的變更后續(xù)進(jìn)行服務(wù)方的升級。數(shù)據(jù)庫進(jìn)行從嚴(yán)變更的時候,要保證老數(shù)據(jù)符合規(guī)范系統(tǒng)先完成約束控制后進(jìn)行變更。

2、字段約束放松的變更。接口按照服務(wù)提供方先進(jìn)行約束放松,后續(xù)版本各請求方進(jìn)行變更;請求方不能早于服務(wù)方進(jìn)行變更。

2.4 變更字段名稱

1、禁止直接變更正在使用的字段名稱。尤其是對于為多個服務(wù)請求方提供服務(wù)的接口的字段。

2、當(dāng)需要變更接口字段名稱的時候,按照新增字段、刪除字段的流程來處理變更。

2.5 變更字段類型

1、禁止直接變更正在使用的字段類型。

2、如果需要變更類型的時候,建議新增字段來解決。

2.6 數(shù)據(jù)庫索引變更的時候要考慮對產(chǎn)線執(zhí)行計(jì)劃的影響

數(shù)據(jù)庫索引變更的時候要考慮對產(chǎn)線執(zhí)行計(jì)劃的影響

三、數(shù)據(jù)庫、接口服務(wù)刪除原則

1、禁止直接刪除正在被使用的數(shù)據(jù)庫結(jié)構(gòu)和接口服務(wù)

2、如果需要進(jìn)行刪除。接口按照服務(wù)請求方先變更,在確認(rèn)已無服務(wù)請求方請求接口的前提下服務(wù)提供方才可以進(jìn)行接口刪除。數(shù)據(jù)庫結(jié)構(gòu)需要保證系統(tǒng)不會再放我的情況下,并做好數(shù)據(jù)的保存。

四、注意文件字段、緩存對象,消息對象

對于文件字段、緩存對象,消息對象的使用和設(shè)計(jì),也需要遵從數(shù)據(jù)庫與接口服務(wù)相關(guān)的兼容性設(shè)計(jì)原則,保證向前向后的兼容設(shè)計(jì)。

五、生產(chǎn)系統(tǒng)發(fā)布過程中兼容性考量

生產(chǎn)系統(tǒng)發(fā)布過程中兼容性考量,發(fā)布過程中,要從系統(tǒng)、數(shù)據(jù)、業(yè)務(wù)組合考慮兼容性

1、系統(tǒng)和數(shù)據(jù)之間的兼容性

需要考慮系統(tǒng)和數(shù)據(jù)之間的兼容性,設(shè)計(jì)過程中要保證新老系統(tǒng)產(chǎn)生的過程數(shù)據(jù)可以相互處理,即老系統(tǒng)產(chǎn)生的中間數(shù)據(jù),系統(tǒng)發(fā)布后,新系統(tǒng)可以出來;

新系統(tǒng)產(chǎn)生的數(shù)據(jù),系統(tǒng)一旦出問題回滾后,老系統(tǒng)也可以處理。如果不能處理的時候,不能選用直接的war包回滾方案。可以通過中間兼容版本保證回滾的兼容性、也可以通過數(shù)據(jù)訂正,保證新系統(tǒng)產(chǎn)生的數(shù)據(jù)部會被老系統(tǒng)處理(數(shù)據(jù)訂正方案是緊急情況下的處理方案,不建議采用);

另外也可以通過引流等方式解決這部分?jǐn)?shù)據(jù)問題,以保證其兼容性。

2、系統(tǒng)和業(yè)務(wù)處理之間的兼容性

需要考慮系統(tǒng)和業(yè)務(wù)處理之間的兼容性生產(chǎn)系統(tǒng)發(fā)布過程中,在老系統(tǒng)受理的業(yè)務(wù),新系統(tǒng)可以繼續(xù)處理(如老系統(tǒng)落單、新系統(tǒng)繼續(xù)支付、老系統(tǒng)正交易邏輯、新系統(tǒng)反交易邏輯),并且要保證業(yè)務(wù)規(guī)則業(yè)務(wù)流程的兼容處理。

3、新老系統(tǒng)間的兼容性

新老系統(tǒng)間的兼容性,避免冪等擊穿、并發(fā)失效等問題對于新系統(tǒng)的功能變更、幕等機(jī)制、并發(fā)控制機(jī)制等只可以增加,不可以減少,避免老系統(tǒng)未能控制的冪等、并發(fā),新系統(tǒng)也可以控制住。

如果是相關(guān)機(jī)制變更的話要重,控制只可以從嚴(yán)不可以從松、控制字段、控制場景、控制業(yè)務(wù)要考慮新舊系統(tǒng)兼容的情況。

4、兼容性分析

兼容性分析過程中,不可以孤立看新舊業(yè)務(wù)、新舊系統(tǒng)、新舊數(shù)據(jù)的處理,需要組合考量。

4.1 組合考量業(yè)務(wù)的處理

業(yè)務(wù)處理的各個場景和過程中都會有被新war包老war包處理的兩種情況。要通過分析業(yè)務(wù)各個場景和過程中在新舊war包中的處理步驟和流程,判新他們之間在業(yè)務(wù)上是否有依賴關(guān)系,并分析在組合的業(yè)務(wù)場景下是否可以被正確處理。

比如,訂單交易平臺修改了支付的沖銷邏輯、業(yè)務(wù)兼容性需要做如下分析:

對于一筆支付業(yè)務(wù),有支付和沖銷兩種場景、支付場景、沖銷場景被老系統(tǒng)如何處理、被新系統(tǒng)如何處理?支付和沖銷有沒有依存關(guān)系?老系統(tǒng)的支付是不是必須被老系統(tǒng)沖銷?老系統(tǒng)支付新系統(tǒng)沖銷可以不可以被支持?新系統(tǒng)支付老系統(tǒng)沖銷可不可以被支持?

如果沖銷服務(wù)有查詢狀態(tài)沖銷發(fā)起兩個過程,還需要考慮著兩個過程和各個業(yè)務(wù)場景組合的情況。

4.2 組合考量新舊系統(tǒng)兼容性的處理

系統(tǒng)的多種處理和控制機(jī)制是分多個階段的,每個階段也都會有被新war包老war包處理的兩種情況。通過分析者每個階段在新war包和老war包中不同處理以及控制的目的、邏輯、方式直至字段代碼,判斷其相互之間有無依賴,每個階段在什么場號下可以成為下個階段的前置,并分析其在組合場景下可否互相處理完成功能。

比如,某個系統(tǒng)對幕等控制進(jìn)行優(yōu)化。需要分析該系統(tǒng)處理的任務(wù)有任務(wù)抓取、處理等階段,老war包怎么進(jìn)行任務(wù)抓取?怎么進(jìn)行任務(wù)處理,冪等控制的?新war包是怎么處理的?抓取的任務(wù)是做完冪等控制才能被處理?還是抓取后流入到處理進(jìn)行冪等控制?新war包抓取的任務(wù)老war包能不能處理?

如果除了處理階段流程變化,還有處理邏輯變化,還需要進(jìn)一步考慮并發(fā)、幕等控制的字段及實(shí)現(xiàn)代碼在各個組合場景下的兼容性。

4.3 組合考量新舊系統(tǒng)與新舊數(shù)據(jù)的兼容性處理

發(fā)布過程中存在新系統(tǒng)寫數(shù)據(jù)、老系統(tǒng)寫數(shù)據(jù)、新系統(tǒng)讀老系統(tǒng)寫的數(shù)據(jù)、新系統(tǒng)讀新系統(tǒng)寫的數(shù)據(jù)、老系統(tǒng)讀老系統(tǒng)寫的數(shù)據(jù),老系統(tǒng)讀新系統(tǒng)寫的數(shù)據(jù)供六種場景。

要分析以上各個場景的讀寫是否正確,讀寫之后的業(yè)務(wù)處理方式是否正確,是否會對小一步業(yè)務(wù)處理產(chǎn)生不兼容的影響?

比如一個業(yè)務(wù)改造走掛內(nèi)部帳邏輯的改造。要考慮新系統(tǒng)的時候?qū)憯?shù)據(jù)會記錄掛賬單編號,老系統(tǒng)寫數(shù)據(jù)沒有掛賬單編號,新系統(tǒng)讀老系統(tǒng)沒有掛賬單編號的業(yè)務(wù)數(shù)據(jù)怎么處理?

六、生產(chǎn)系統(tǒng)發(fā)布過程中,要考慮消息調(diào)度的兼容性

生產(chǎn)系統(tǒng)發(fā)布過程中,要考慮消息調(diào)度的兼容性,按照前述的處理原則,發(fā)布的時候還需要避免消息處理、調(diào)度的不兼容處理。

其他處理方案(不建議):當(dāng)有消息不兼容的時候,需要告知部署同學(xué)按分組下線消息源頭生產(chǎn)者,當(dāng)有調(diào)度不兼容的時候,部署的時候可以暫信調(diào)度。

七、業(yè)務(wù)遷移過程的兼容處理

業(yè)務(wù)遷移過程中、涉及到新舊業(yè)務(wù)流程、新舊業(yè)務(wù)規(guī)則、新舊業(yè)務(wù)數(shù)據(jù)等的兼容處理,需要從分析、設(shè)計(jì)、上線、驗(yàn)證等各個環(huán)節(jié)把控。

1、對于業(yè)務(wù)移,必須詳細(xì)分析所遷移業(yè)務(wù)的新舊規(guī)則、流程、參數(shù)并和上下游系統(tǒng)確認(rèn)。

2、新老業(yè)務(wù)與新老系統(tǒng)之間必須能夠業(yè)務(wù)處理流程和規(guī)則上保證平滑處理、無縫切換。

3、盡可能保證新老業(yè)務(wù)、系統(tǒng)、數(shù)據(jù)直接的交叉處理。不能保證的時候,要通過相關(guān)表示避免交叉。

4、業(yè)務(wù)移的風(fēng)險(xiǎn)較大,需要通過開關(guān)、引流等進(jìn)行產(chǎn)線驗(yàn)證。

5、遷移過程中,要有完整的報(bào)警、核對等跟蹤機(jī)制,保證及時發(fā)現(xiàn)問題;有完整的開關(guān)等流控機(jī)制,保證有問題的時候可以及時斷流。

八、數(shù)據(jù)和數(shù)據(jù)存儲的遷移

數(shù)據(jù)和數(shù)據(jù)存儲的遷移。涉及到系統(tǒng)的底層環(huán)節(jié)(數(shù)據(jù)),要分析不同數(shù)據(jù)結(jié)構(gòu)、不同數(shù)據(jù)存儲之間的差異,保證這些差異口以被系統(tǒng)正常接受處理。

1、數(shù)據(jù)遷移(如CCDC數(shù)據(jù)遷移、會員數(shù)據(jù)遷移)前后,要保證業(yè)務(wù)系統(tǒng)能正常識別和處理。不能保證的話,要考慮停機(jī)遷移。

2、數(shù)據(jù)存儲遷移,尤其是不同存儲之間的遷移,要考慮其之間的差異(如oracle和pg的差異、redis和hippo的差異,尤美是者seauence相關(guān)的差異更應(yīng)該注意,這些都和資損率切相關(guān)。

3、遷移過程中,要有完整的報(bào)警、核對等跟蹤機(jī)制,保證及時發(fā)現(xiàn)問題。

4、數(shù)據(jù)是系統(tǒng)的底層環(huán)節(jié),遷移的時候一定要有完備的回退機(jī)制。

九、采用開關(guān)的方式規(guī)避風(fēng)險(xiǎn)

風(fēng)險(xiǎn)較大的系統(tǒng)發(fā)布與業(yè)務(wù)遷移,采用開關(guān)的方式規(guī)避風(fēng)險(xiǎn),保證業(yè)務(wù)的兼容運(yùn)行。

總結(jié)

我們的系統(tǒng)和數(shù)據(jù)一定是不斷迭代和更新的,變更往往存在諸多風(fēng)險(xiǎn),bug/資損也往往在系統(tǒng)迭代過程中產(chǎn)生,做好兼容性控制至關(guān)重要!

總結(jié)

以上是生活随笔為你收集整理的【资损】系统迭代过程中的兼容性设计的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。