本發(fā)明涉及軟件信息系統(tǒng)領域,特別涉及一種用于soa服務轉(zhuǎn)換語言保持功能一致性的方法及系統(tǒng)。
背景技術:
信息系統(tǒng)隨著業(yè)務的發(fā)展,企業(yè)從成本及語言開放性的角度,可能會考慮更換已有系統(tǒng)的編程語言,如從c#語言更換為java語言,對編程語言的更換,除了語言語法上的更換,開發(fā)人員多數(shù)情況下也會進行框架的升級改造,使代碼質(zhì)量及可讀性方面得到提升,但無論多大的改動,改造的最終結(jié)果都是:新語言服務所提供的業(yè)務功能都要與舊語言服務所提供的業(yè)務功能保持一致。
soa(serviceorientedarchitecture,面向服務的架構(gòu))作為一個成熟的軟件系統(tǒng)開發(fā)架構(gòu),在企業(yè)中有廣泛的應用,soa服務進行更換編程語言有與信息系統(tǒng)更換語言的共性如soa服務更換編程語言后也一般采用人工比對測試來保障更換語言前后的業(yè)務服務功能一致,但也有其自身特點,如soa服務通過契約報文來交換數(shù)據(jù),服務的語言無關性,客戶端不會感知到服務的動態(tài)調(diào)整等特點,在更換語言同時維持業(yè)務的一致性方面將面臨著巨大的挑戰(zhàn):如何快速定位服務響應的差異,大幅度減少人工測試,保障系統(tǒng)框架得以重構(gòu),保證新語言開發(fā)的系統(tǒng)較快地投入生產(chǎn)以及新語言服務運行的穩(wěn)定性。
技術實現(xiàn)要素:
本發(fā)明要解決的技術問題是為了克服現(xiàn)有技術中需要依靠大量人工對比測試,不能很好地快速定位服務響應的差異,不能很好地保障系統(tǒng)框架得以重構(gòu),不能很好地保證新語言開發(fā)的soa服務快速地投入生產(chǎn)的缺陷,提供一種用于soa服務轉(zhuǎn)換語言保持功能一致性的方法及系統(tǒng)。
本發(fā)明是通過下述技術方案來解決上述技術問題:
一種用于soa服務轉(zhuǎn)換語言保持功能一致性的方法,包括以下步驟:
s1、舊語言soa服務、新語言soa服務同時部署在相同生產(chǎn)環(huán)境,所述舊語言soa服務接收客戶端的服務請求報文;
s2、所述舊語言soa服務按第一預設比例將接收到的服務請求報文發(fā)送至所述新語言soa服務;
s3、在所述舊語言soa服務、所述新語言soa服務分別對同樣的服務請求報文進行響應并生成相應的服務響應報文之后,記錄同樣的服務請求報文及相應的服務響應報文;
s4、判斷步驟s3中所述舊語言soa服務、所述新語言soa服務對同樣的服務請求報文相應的服務響應報文是否匹配,若否,則對所述新語言soa服務進行優(yōu)化,然后返回步驟s1,若是,則執(zhí)行步驟s5;
s5、將所述新語言soa服務上線,所述新語言soa服務接收并處理客戶端的服務請求報文。
較佳地,所述步驟s5具體包括:將所述新語言soa服務上線后,所述新語言soa服務按第二預設比例接收并處理客戶端的服務請求報文;
所述方法在步驟s5之后還包括:
s6、所述舊語言soa服務按第三預設比例將接收到的服務請求報文發(fā)送至所述新語言soa服務,所述新語言soa服務按第四預設比例將接收到的服務請求報文發(fā)送至所述舊語言soa服務;
s7、在所述舊語言soa服務、所述新語言soa服務分別對同樣的服務請求報文進行響應并生成相應的服務響應報文之后,記錄同樣的服務請求報文及相應的服務響應報文;
s8、判斷步驟s7中所述舊語言soa服務、所述新語言soa服務對同樣的服務請求報文相應的服務響應報文是否一致,
若否,則對所述新語言soa服務進行優(yōu)化,然后返回步驟s1,
若是,則判斷所述第二預設比例是否為100%,若是,則執(zhí)行步驟s9,若否,則提升所述第二預設比例,然后返回步驟s5;
s9、將所述舊語言soa服務下線。
較佳地,所述步驟s2具體包括:
s21、所述舊語言soa服務建立第一異步消息隊列;
s22、所述舊語言soa服務按第一預設比例將接收到的服務請求報文放入到所述第一異步消息隊列;
s23、所述舊語言soa服務將所述第一異步消息隊列的服務請求報文發(fā)送至所述新語言soa服務;
所述步驟s6具體包括:
s61、所述新語言soa服務建立第二異步消息隊列;
s62、所述舊語言soa服務按第三預設比例將接收到的服務請求報文放入到所述第一異步消息隊列,所述新語言soa服務按第四預設比例將接收到的服務請求報文放入到所述第二異步消息隊列;
s63、所述舊語言soa服務將所述第一異步消息隊列的服務請求報文發(fā)送至所述新語言soa服務,所述新語言soa服務將所述第二異步消息隊列的服務請求報文發(fā)送至所述舊語言soa服務。
較佳地,
所述步驟s4中,所述判斷步驟s3中所述舊語言soa服務、所述新語言soa服務對同樣的服務請求報文相應的服務響應報文是否匹配的步驟具體包括:判斷所述舊語言soa服務、所述新語言soa服務對同樣的服務請求報文相應的服務響應報文的業(yè)務邏輯是否一致;
所述步驟s8中,所述判斷步驟s7中所述舊語言soa服務、所述新語言soa服務對同樣的服務請求報文相應的服務響應報文是否一致的步驟具體包括:判斷所述舊語言soa服務、所述新語言soa服務對同樣的服務請求報文相應的服務響應報文的報文內(nèi)容、報文業(yè)務邏輯是否一致。
一種用于soa服務轉(zhuǎn)換語言保持功能一致性的系統(tǒng),包括舊語言soa服務、新語言soa服務、記錄模塊、第一判斷模塊,
所述舊語言soa服務、所述新語言soa服務同時部署在相同生產(chǎn)環(huán)境,所述舊語言soa服務用于接收客戶端的服務請求報文,并按第一預設比例將接收到的服務請求報文發(fā)送至所述新語言soa服務;
所述舊語言soa服務、所述新語言soa服務分別對同樣的服務請求報文進行響應并生成相應的服務響應報文;
所述記錄模塊用于記錄所述舊語言soa服務發(fā)送給所述新語言soa服務的服務請求報文,以及所述舊語言soa服務、所述新語言soa服務分別對同樣的服務請求報文相應的服務響應報文;
所述第一判斷模塊用于判斷所述記錄模塊中記錄的同樣的服務請求報文相應的服務響應報文是否匹配,當判斷為否時,則對所述新語言soa服務進行優(yōu)化,當判斷為是時,則所述新語言soa服務上線,接收并處理客戶端的服務請求報文。
較佳地,所述系統(tǒng)還包括第二判斷模塊,
所述新語言soa服務上線后按第二預設比例接收并處理客戶端的服務請求報文;
所述舊語言soa服務按第三預設比例將接收到的服務請求報文發(fā)送至所述新語言soa服務,所述新語言soa服務按第四預設比例將接收到的服務請求報文發(fā)送至所述舊語言soa服務;
所述舊語言soa服務、所述新語言soa服務分別對同樣的服務請求報文進行響應并生成相應的服務響應報文;
所述記錄模塊用于分別記錄所述舊語言soa服務發(fā)送給所述新語言soa服務的服務請求報文和所述新語言soa服務發(fā)送給所述舊語言soa服務的服務請求報文,以及所述舊語言soa服務、所述新語言soa服務分別對同樣的服務請求報文相應的服務響應報文;
所述第一判斷模塊用于判斷所述記錄模塊中記錄的同樣的服務請求報文相應的服務響應報文是否一致,
當判斷為否時,則對所述新語言soa服務進行優(yōu)化,
當判斷為是時,則調(diào)用所述第二判斷模塊,所述第二判斷模塊用于判斷所述第二預設比例是否為100%,若是,則將所述舊語言soa服務下線,若否,則提升所述第二預設比例。
較佳地,
所述舊語言soa服務包括第一異步消息隊列、第一后臺線程,所述舊語言soa服務建立所述第一異步消息隊列,
所述新語言soa服務上線前,所述舊語言soa服務按第一預設比例將接收到的服務請求報文放入所述第一異步消息隊列,所述第一后臺線程用于將所述第一異步消息隊列的服務請求報文發(fā)送至所述新語言soa服務;
所述新語言soa服務上線后,所述舊語言soa服務按第三預設比例將接收到的服務請求報文放入所述第一異步消息隊列,所述第一后臺線程用于將所述第一異步消息隊列的服務請求報文發(fā)送至所述新語言soa服務;
所述新語言soa服務包括第二異步消息隊列、第二后臺線程,所述新語言soa服務建立所述第二異步消息隊列,所述新語言soa服務按第四預設比例將接收到的服務請求報文放入所述第二異步消息隊列,所述第二后臺線程用于將所述第二異步消息隊列的服務請求報文發(fā)送至所述舊語言soa服務。
較佳地,
所述新語言soa服務上線前,所述第一判斷模塊用于判斷所述記錄模塊中記錄的同樣的服務請求報文相應的服務響應報文的業(yè)務邏輯是否一致;
所述新語言soa服務上線后,所述第一判斷模塊用于判斷所述記錄模塊中記錄的同樣的服務請求報文相應的服務響應報文的報文內(nèi)容、報文業(yè)務邏輯是否一致。
本發(fā)明的積極進步效果在于:本發(fā)明通過定量對比分析新舊語言soa服務的響應報文來快速定位服務響應差異并根據(jù)差異情況來優(yōu)化新語言soa服務,從而可大幅度減少前期的人工測試,很好地保障系統(tǒng)框架重構(gòu)的正確性,保證新語言soa服務的開發(fā)效率并快速投入生產(chǎn)。另外,新舊語言的soa服務在一定時期內(nèi)共同運行,通過新舊語言soa服務的相互監(jiān)督對比進一步保障新語言soa服務運行的穩(wěn)定性。
附圖說明
圖1為本發(fā)明的實施例1的用于soa服務轉(zhuǎn)換語言保持功能一致性的方法的流程圖。
圖2為本發(fā)明的實施例2的用于soa服務轉(zhuǎn)換語言保持功能一致性的方法的流程圖。
圖3為本發(fā)明的實施例3的用于soa服務轉(zhuǎn)換語言保持功能一致性的系統(tǒng)的示意圖。
圖4為本發(fā)明的實施例4的用于soa服務轉(zhuǎn)換語言保持功能一致性的系統(tǒng)的示意圖。
具體實施方式
下面通過實施例的方式進一步說明本發(fā)明,但并不因此將本發(fā)明限制在所述的實施例范圍之中。
實施例1
本實施例的用于soa服務轉(zhuǎn)換語言保持功能一致性的方法,如圖1所示,包括:
步驟101、舊語言soa服務、新語言soa服務同時部署在相同生產(chǎn)環(huán)境,所述舊語言soa服務接收客戶端的服務請求報文;
本實施例中,鑒于客戶端每天近千萬次的服務請求,為確保服務準確性,在所述步驟101中新語言soa服務暫不接收和處理客戶端的服務請求,僅舊語言soa服務接收并處理客戶端的服務請求。
步驟102、所述舊語言soa服務按第一預設比例將接收到的服務請求報文發(fā)送至所述新語言soa服務;
本實施例在具體實施中,所述步驟102中的第一預設比例可根據(jù)后續(xù)步驟中所述新語言soa服務、所述舊語言soa服務對同樣的服務請求報文的服務響應差異情況通過參數(shù)配置來進行設定,比如鑒于所述新語言soa服務剛完成開發(fā),在早期階段可將第一預設比例設置得低一點,如5%;而在運行監(jiān)測一段時間后可將第一預設比例設置得高些,如10%、20%、50%、甚至為100%。
步驟103、在所述舊語言soa服務、所述新語言soa服務分別對同樣的服務請求報文進行響應并生成相應的服務響應報文之后,記錄同樣的服務請求報文及相應的服務響應報文;
步驟104、判斷步驟103中所述舊語言soa服務、所述新語言soa服務對同樣的服務請求報文相應的服務響應報文是否匹配,若否,則對所述新語言soa服務進行優(yōu)化,然后返回步驟101,若是,則執(zhí)行步驟105;
本實施例在具體實施中,所述判斷步驟103中所述舊語言soa服務、所述新語言soa服務對同樣的服務請求報文相應的服務響應報文是否匹配的步驟具體包括:判斷所述舊語言soa服務、所述新語言soa服務對同樣的服務請求報文相應的服務響應報文的業(yè)務邏輯是否一致。若經(jīng)判斷,所述舊語言soa服務、所述新語言soa服務對同樣的服務請求報文響應生成的服務響應報文在業(yè)務邏輯上不一致,此時可通過人工查找及分析業(yè)務邏輯不一致的原因,然后根據(jù)具體原因?qū)λ鲂抡Z言soa服務進行優(yōu)化,然后返回步驟101;若經(jīng)判斷,所述舊語言soa服務、所述新語言soa服務對同樣的服務請求報文響應生成的服務響應報文在業(yè)務邏輯上保持一致,則在經(jīng)一段時間的運行監(jiān)測,比如運行監(jiān)測1-2個月后,若所述舊語言soa服務、所述新語言soa服務對同樣的服務請求報文響應生成的服務響應報文在業(yè)務邏輯上仍舊能保持一致,可認為所述新語言soa服務已具備上線服務要求,即可以執(zhí)行步驟105。
步驟105、將所述新語言soa服務上線,所述新語言soa服務接收并處理客戶端的服務請求報文。
本實施例中,經(jīng)過上述步驟101-105后,通過定量對比分析所述舊語言soa服務、所述新語言soa服務對同樣的服務請求報文所響應生成的響應報文,能快速定位出服務響應的差異,并根據(jù)差異情況對所述新語言soa服務進行優(yōu)化,從而可大幅度減少前期的人工測試,很好地保障系統(tǒng)框架重構(gòu)的正確性,保證所述新語言soa服務的開發(fā)效率并快速投入生產(chǎn)。
實施例2
實施例2的用于soa服務轉(zhuǎn)換語言保持功能一致性的方法包括實施例1中的步驟101-105,還有不同之處在于,如圖2所示,
所述步驟105具體包括:將所述新語言soa服務上線后,所述新語言soa服務按第二預設比例接收并處理客戶端的服務請求報文;
本實施例在具體實施中,鑒于客戶端每天近千萬次的服務請求,為確保服務準確性及穩(wěn)定性,所述舊語言soa服務仍然接收并處理客戶端的服務請求,并在所述步驟105中,在將所述新語言soa服務上線后,所述新語言soa服務按第二預設比例接收并處理客戶端的服務請求報文,比如鑒于所述新語言soa服務剛上線,在早期階段可將第二預設比例設置得低一點,如5%。
所述方法在步驟105之后還包括:
步驟106、所述舊語言soa服務按第三預設比例將接收到的服務請求報文發(fā)送至所述新語言soa服務,所述新語言soa服務按第四預設比例將接收到的服務請求報文發(fā)送至所述舊語言soa服務;
本實施例在具體實施中,所述步驟106中的第三、第四預設比例可根據(jù)后續(xù)步驟中所述新語言soa服務、所述舊語言soa服務對同樣的服務請求報文的服務響應一致性情況通過參數(shù)配置來進行設定,比如鑒于所述新語言soa服務剛上線,在早期可將第三、第四預設比例設置得低一點,如5%;而在運行監(jiān)測一段時間后可將第三、第四預設比例設置得高些,如10%、20%、50%、甚至為100%。
步驟107、在所述舊語言soa服務、所述新語言soa服務分別對同樣的服務請求報文進行響應并生成相應的服務響應報文之后,記錄同樣的服務請求報文及相應的服務響應報文;
步驟108、判斷步驟107中所述舊語言soa服務、所述新語言soa服務對同樣的服務請求報文相應的服務響應報文是否一致,若否,則對所述新語言soa服務進行優(yōu)化,然后返回步驟101,若是,則判斷所述第二預設比例是否為100%,若否,則提升所述第二預設比例,然后返回步驟105,若是,則執(zhí)行步驟109;
本實施例在具體實施中,所述第二預設比例可根據(jù)所述新語言soa服務、所述舊語言soa服務對同樣的服務請求報文的服務響應一致性情況自動逐步調(diào)整,比如所述新語言soa服務剛上線的早期階段可將第二預設比例設置得低一點如5%,而所述新語言soa服務、所述舊語言soa服務共同運行監(jiān)測一段時間后所述新語言soa服務運行穩(wěn)定,這時可將第二預設比例自動按一定比例如5%逐步提升,直到所述新語言soa服務、所述舊語言soa服務對同樣的服務請求報文的服務響應完全一致,所述新語言soa服務的業(yè)務無偏差遺漏。
進一步,所述判斷步驟107中所述舊語言soa服務、所述新語言soa服務對同樣的服務請求報文相應的服務響應報文是否一致的步驟具體包括:判斷所述舊語言soa服務、所述新語言soa服務對同樣的服務請求報文相應的服務響應報文的報文內(nèi)容、報文業(yè)務邏輯是否一致。經(jīng)判斷,若所述舊語言soa服務、所述新語言soa服務對同樣的服務請求報文響應生成的服務響應報文在業(yè)務邏輯上一致,僅小部分報文內(nèi)容如報文的頭信息不一致,此時可通過人工查找及分析不一致的原因,如果該報文內(nèi)容的不一致屬于可忽略的不影響服務的微小的不一致情況,可將該不一致情況列入到對比規(guī)則工具中從而在今后的對比中認為該報文內(nèi)容相同而排除掉,對于那些不能作為對比規(guī)則進行排除的不一致情況則需要根據(jù)不一致的原因?qū)π抡Z言soa服務進行優(yōu)化,然后返回步驟101;若所述舊語言soa服務、所述新語言soa服務對同樣的服務請求報文響應生成的服務響應報文在報文內(nèi)容、報文業(yè)務邏輯上都保持一致,則在經(jīng)一段時間的運行監(jiān)測,比如運行監(jiān)測1-2個月后,若所述舊語言soa服務、所述新語言soa服務對同樣的服務請求報文響應生成的服務響應報文在報文內(nèi)容、報文業(yè)務邏輯上仍舊能保持一致,可認為新語言soa服務已具備良好的服務穩(wěn)定性,即可以執(zhí)行步驟109。
步驟109、將所述舊語言soa服務下線。
本實施例中,經(jīng)過上述步驟101-109后,通過定量對比分析所述舊語言soa服務、所述新語言soa服務對同樣的服務請求報文所響應生成的響應報文,能快速定位出服務響應的差異,并根據(jù)差異情況對所述新語言soa服務進行優(yōu)化,從而可大幅度減少前期的人工測試,很好地保障系統(tǒng)框架重構(gòu)的正確性,保證所述新語言soa服務的開發(fā)效率并快速投入生產(chǎn)。另外,新舊語言的soa服務在一定時期內(nèi)共同運行,通過新舊語言soa服務的相互監(jiān)督對比進一步保障新語言soa服務運行的穩(wěn)定性。
進一步,本實施例在具體實施中,為了不影響所述舊語言soa服務接收及處理客戶端的服務請求的性能,從而將所述步驟102進一步細化,即所述步驟102具體包括:所述舊語言soa服務建立第一異步消息隊列;所述舊語言soa服務按第一預設比例將接收到的服務請求報文放入到所述第一異步消息隊列;所述舊語言soa服務將所述第一異步消息隊列的服務請求報文發(fā)送至所述新語言soa服務。
進一步,本實施例在具體實施中,為了不影響所述舊語言soa服務、所述新語言soa服務接收及處理客戶端的服務請求的性能,同樣將所述步驟106進一步細化,即所述步驟106具體包括:所述新語言soa服務建立第二異步消息隊列;所述舊語言soa服務按第三預設比例將接收到的服務請求報文放入到所述第一異步消息隊列,所述新語言soa服務按第四預設比例將接收到的服務請求報文放入到所述第二異步消息隊列;所述舊語言soa服務將所述第一異步消息隊列的服務請求報文發(fā)送至所述新語言soa服務,所述新語言soa服務將所述第二異步消息隊列的服務請求報文發(fā)送至所述舊語言soa服務。
實施例3
本實施例的用于soa服務轉(zhuǎn)換語言保持功能一致性的系統(tǒng),如圖3所示,包括舊語言soa服務1、新語言soa服務2、記錄模塊3、第一判斷模塊4,
所述舊語言soa服務1、所述新語言soa服務2同時部署在相同生產(chǎn)環(huán)境,所述舊語言soa服務1用于接收客戶端的服務請求報文,并按第一預設比例將接收到的服務請求報文發(fā)送至所述新語言soa服務2;
所述舊語言soa服務1、所述新語言soa服務2分別對同樣的服務請求報文進行響應并生成相應的服務響應報文;
所述記錄模塊3用于記錄所述舊語言soa服務1發(fā)送給所述新語言soa服務2的服務請求報文,以及所述舊語言soa服務1、所述新語言soa服務2分別對同樣的服務請求報文相應的服務響應報文;
所述第一判斷模塊4用于判斷所述記錄模塊3中記錄的同樣的服務請求報文相應的服務響應報文是否匹配,當判斷為否時,則對所述新語言soa服務2進行優(yōu)化,當判斷為是時,則所述新語言soa服務2上線,接收并處理客戶端的服務請求報文。
進一步,所述舊語言soa服務1包括第一異步消息隊列11、第一后臺線程12,所述舊語言soa服務1建立所述第一異步消息隊列11,所述舊語言soa服務1按第一預設比例將接收到的服務請求報文放入所述第一異步消息隊列11,所述第一后臺線程12用于將所述第一異步消息隊列11的服務請求報文發(fā)送至所述新語言soa服務2。
進一步,所述第一判斷模塊4用于判斷所述記錄模塊3中記錄的同樣的服務請求報文相應的服務響應報文的業(yè)務邏輯是否一致。
實施例4
實施例4的用于soa服務轉(zhuǎn)換語言保持功能一致性的系統(tǒng)與實施例3基本相同,不同之處在于,如圖4所示,還包括第二判斷模塊5,
所述新語言soa服務2上線后按第二預設比例接收并處理客戶端的服務請求報文;
所述舊語言soa服務1按第三預設比例將接收到的服務請求報文發(fā)送至所述新語言soa服務2,所述新語言soa服務2按第四預設比例將接收到的服務請求報文發(fā)送至所述舊語言soa服務1;
所述舊語言soa服務1、所述新語言soa服務2分別對同樣的服務請求報文進行響應并生成相應的服務響應報文;
所述記錄模塊3用于分別記錄所述舊語言soa服務發(fā)1送給所述新語言soa服務2的服務請求報文和所述新語言soa服務2發(fā)送給所述舊語言soa服務1的服務請求報文,以及所述舊語言soa服務1、所述新語言soa服務2分別對同樣的服務請求報文相應的服務響應報文;
所述第二判斷模塊5用于判斷所述記錄模塊3中記錄的同樣的服務請求報文相應的服務響應報文是否一致,
當判斷為否時,則對所述新語言soa服務3進行優(yōu)化,
當判斷為是時,則調(diào)用所述第二判斷模塊5,所述第二判斷模塊5用于判斷所述第二預設比例是否為100%,若是,則將所述舊語言soa服務1下線,若否,則提升所述第二預設比例。
進一步,所述舊語言soa服務1按第三預設比例將接收到的服務請求報文放入所述第一異步消息隊列11,所述第一后臺線程12將所述第一異步消息隊列11的服務請求報文發(fā)送至所述新語言soa服務2;所述新語言soa服務2包括第二異步消息隊列21、第二后臺線程22,所述新語言soa服務2建立所述第二異步消息隊列21,所述新語言soa服務2按第四預設比例將接收到的服務請求報文放入所述第二異步消息隊列21,所述第二后臺線程22用于將所述第二異步消息隊列21的服務請求報文發(fā)送至所述舊語言soa服務1。
進一步,所述第一判斷模塊5用于判斷所述記錄模塊3中記錄的同樣的服務請求報文相應的服務響應報文的報文內(nèi)容、報文業(yè)務邏輯是否一致。
雖然以上描述了本發(fā)明的具體實施方式,但是本領域的技術人員應當理解,這僅是舉例說明,本發(fā)明的保護范圍是由所附權(quán)利要求書限定的。本領域的技術人員在不背離本發(fā)明的原理和實質(zhì)的前提下,可以對這些實施方式做出多種變更或修改,但這些變更和修改均落入本發(fā)明的保護范圍。