本發(fā)明涉及計算機(jī)領(lǐng)域,具體涉及一種基于HTTP的SOA服務(wù)調(diào)用梳理方法及系統(tǒng)。
背景技術(shù):
目前SOA架構(gòu)越來越流行,但是對現(xiàn)有業(yè)務(wù)系統(tǒng)進(jìn)行SOA梳理(即了解各個服務(wù)間的調(diào)用關(guān)系)一直是一個難題。通常情況下開發(fā)人員和軟件架構(gòu)師需要通過閱讀SOA服務(wù)的代碼進(jìn)行梳理,整個過程非常地復(fù)雜耗時,特別是對于剛接手項目的人員來說,完全通讀代碼幾乎是不可能完成的任務(wù),對于一些大型系統(tǒng)往往需要至少一年的時間來完成整體SOA的梳理工作。
技術(shù)實現(xiàn)要素:
本發(fā)明提供一種基于HTTP的SOA服務(wù)調(diào)用梳理方法及系統(tǒng),以解決現(xiàn)有技術(shù)中存在的上述問題。
本發(fā)明的技術(shù)方案是提供一種基于HTTP的SOA服務(wù)調(diào)用梳理方法,該方法包括:步驟A:對每個SOA服務(wù)請求者發(fā)送的HTTP請求進(jìn)行自定義插樁;步驟B:根據(jù)該HTTP請求,獲取該SOA服務(wù)請求者與SOA服務(wù)提供者的第一映射關(guān)系數(shù)據(jù);步驟C:根據(jù)該第一映射關(guān)系數(shù)據(jù),生成該SOA服務(wù)請求者與該SOA服務(wù)提供者之間的調(diào)用關(guān)系圖。
可選地,對該SOA服務(wù)請求者發(fā)送的該HTTP請求增加自定義的HTTP頭。
可選地,所述步驟B包括:步驟D,通過該HTTP請求,獲取該 SOA服務(wù)請求者與該SOA服務(wù)提供者的IP地址、端口信息的第二映射關(guān)系數(shù)據(jù);步驟E,通過操作系統(tǒng)自帶的shell命令獲取該IP地址、該端口信息與SOA服務(wù)進(jìn)程標(biāo)識符的第三映射關(guān)系數(shù)據(jù);以及步驟F,通過該第二映射關(guān)系數(shù)據(jù)與該第三映射關(guān)系數(shù)據(jù),獲取該SOA服務(wù)請求者與該SOA服務(wù)提供者的第一映射關(guān)系數(shù)據(jù)。
可選地,該方法還包括:定期更新和存儲該SOA服務(wù)進(jìn)程標(biāo)識符與SOA服務(wù)者的映射關(guān)系數(shù)據(jù)。
本發(fā)明還提供一種基于HTTP的SOA服務(wù)調(diào)用梳理系統(tǒng),該系統(tǒng)包括:插樁模塊,用于對每個SOA服務(wù)請求者發(fā)送的HTTP請求進(jìn)行自定義插樁;網(wǎng)絡(luò)監(jiān)控模塊,用于根據(jù)該HTTP請求,獲取該SOA服務(wù)請求者與SOA服務(wù)提供者的第一映射關(guān)系數(shù)據(jù);報告生成模塊,用于根據(jù)該第一映射關(guān)系數(shù)據(jù),生成該SOA服務(wù)請求者與該SOA服務(wù)提供者之間的調(diào)用關(guān)系圖。
可選地,插樁模塊對每個從SOA服務(wù)請求者發(fā)出的HTTP請求增加自定義的HTTP頭。
可選地,網(wǎng)絡(luò)監(jiān)控模塊還包括:第一映射模塊,基于該HTTP請求,獲取該SOA服務(wù)請求者與該SOA服務(wù)提供者的IP地址、端口信息的第二映射關(guān)系數(shù)據(jù);第二映射模塊,基于操作系統(tǒng)自帶的shell命令獲取該IP地址、該端口信息與SOA服務(wù)進(jìn)程標(biāo)識符的第三映射關(guān)系數(shù)據(jù);以及第三映射模塊,基于該第二映射關(guān)系與該第三映射關(guān)系,獲取該SOA服務(wù)請求者與該SOA服務(wù)提供者的第一映射關(guān)系數(shù)據(jù)。
可選地,該系統(tǒng)還包括:數(shù)據(jù)更新模塊,用于定期更新和存儲該SOA服務(wù)進(jìn)程標(biāo)識符與SOA服務(wù)者的映射關(guān)系數(shù)據(jù)。
通過本發(fā)明提供的SOA服務(wù)調(diào)用梳理方法及系統(tǒng),使得開發(fā)人員和架構(gòu)師在實際工作中不僅獲取數(shù)據(jù)更加準(zhǔn)確和全面,而且大幅度釋放開發(fā)人員的勞動力,減少了測試過程中耗費的時間,提高了工作效 率。
附圖說明
為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。在附圖中:
圖1為本發(fā)明的基于HTTP的SOA服務(wù)調(diào)用梳理方法流程圖;
圖2為本發(fā)明的基于HTTP的SOA服務(wù)調(diào)用梳理系統(tǒng)示意圖。
具體實施方式
為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚明白,下面結(jié)合附圖對本發(fā)明實施例做進(jìn)一步詳細(xì)說明。在此,本發(fā)明的示意性實施例及其說明用于解釋本發(fā)明,但并不作為對本發(fā)明的限定。
圖1為本發(fā)明提供一種基于HTTP的SOA服務(wù)調(diào)用梳理方法流程圖。如圖1所示梳理方法的步驟如下:步驟A:對每個SOA服務(wù)請求者發(fā)送的HTTP請求進(jìn)行自定義插樁;步驟B:根據(jù)該HTTP請求,獲取該SOA服務(wù)請求者與SOA服務(wù)提供者的第一映射關(guān)系數(shù)據(jù);步驟C:根據(jù)該第一映射關(guān)系數(shù)據(jù),生成該SOA服務(wù)請求者與該SOA服務(wù)提供者之間的調(diào)用關(guān)系圖。
可選地,對該SOA服務(wù)請求者發(fā)送的該HTTP請求增加自定義的HTTP頭。
可選地,步驟B包括:步驟D,通過該HTTP請求,獲取該SOA服務(wù)請求者與該SOA服務(wù)提供者的IP地址、端口信息的第二映射關(guān)系數(shù)據(jù);步驟E,通過操作系統(tǒng)自帶的shell命令獲取該IP地址、該端口信息與SOA服務(wù)進(jìn)程標(biāo)識符的第三映射關(guān)系數(shù)據(jù);以及步驟F,通過該第二映射關(guān)系數(shù)據(jù)與該第三映射關(guān)系數(shù)據(jù),獲取該SOA服務(wù)請求者 與該SOA服務(wù)提供者的第一映射關(guān)系數(shù)據(jù)。
可選地,該方法還包括:定期更新和存儲該SOA服務(wù)進(jìn)程標(biāo)識符與SOA服務(wù)者的映射關(guān)系數(shù)據(jù)。
下面結(jié)合一個具體的實施例對本發(fā)明進(jìn)行具體描述,然而值得注意的是該具體實施例僅是為了更好地描述本發(fā)明,并不構(gòu)成對本發(fā)明的不當(dāng)限定。
本領(lǐng)域的技術(shù)人員可知,SOA服務(wù)架構(gòu)實質(zhì)上是服務(wù)的集合,即不同服務(wù)之間是彼此通信的,而這種通信可以是簡單的數(shù)據(jù)傳送,也可以是兩個或更多的服務(wù)協(xié)調(diào)進(jìn)行某些活動。特別是電子商務(wù)企業(yè)中的系統(tǒng)服務(wù)之間相互調(diào)用的情況更是頻繁。
基于上述實際情況,為了方便開發(fā)人員和架構(gòu)師能夠及時準(zhǔn)確獲知各個服務(wù)之間的調(diào)用關(guān)系,本發(fā)明提出一種基于HTTP的SOA服務(wù)調(diào)用梳理方法。該方法的步驟如下:
S101、通過為每個從SOA服務(wù)發(fā)送的HTTP請求增加自定義的HTTP頭(包含調(diào)用堆棧信息),這樣便為每個SOA服務(wù)進(jìn)程進(jìn)行全局插樁。在本發(fā)明的實施例中,SOA服務(wù)架構(gòu)為.NET平臺的WCF框架,我們實現(xiàn)了自己的IWebRequestCreate,通過machine.config對Windows上所有.NET程序的HTTP請求插樁。此處的技術(shù)實現(xiàn)根據(jù)不同SOA服務(wù)的平臺和編程語言會有不同。
S102、對SOA服務(wù)向服務(wù)器發(fā)送請求的數(shù)據(jù)包進(jìn)行拆解,以便能夠獲取該SOA服務(wù)請求者與SOA服務(wù)提供者的映射關(guān)系數(shù)據(jù)。
具體來說,先根據(jù)數(shù)據(jù)包(TCP包)的端口信息分別獲取發(fā)送請求的SOA服務(wù)和接收請求的SOA服務(wù)的IP地址(source ip和dest ip)和端口(source port和dest ip),由于步驟S101進(jìn)行了全局插樁,在HTTP頭中加入了調(diào)用堆棧信息,并且通過數(shù)據(jù)包(HTTP包)獲取目的 URL地址,由此便可以獲得SOA服務(wù)請求者的IP地址、端口信息、調(diào)用堆棧信息和SOA服務(wù)提供者的IP地址、端口信息、目的URL地址之間的映射關(guān)系數(shù)據(jù)。然后,通過Windows操作系統(tǒng)中的shell命令可以從數(shù)據(jù)庫中獲得IP地址和端口與SOA服務(wù)進(jìn)程標(biāo)識符(PID)之間的映射關(guān)系數(shù)據(jù)。特別的,對數(shù)據(jù)庫中的這些SOA服務(wù)請求標(biāo)識符(PID)與SOA服務(wù)提供端的映射關(guān)系數(shù)據(jù)會定期更新。值得一提的是,此處的技術(shù)實現(xiàn)根據(jù)不同SOA服務(wù)的平臺和編程語言會有不同。
在本發(fā)明的實施例中,更新映射關(guān)系數(shù)據(jù)是通過調(diào)用IIS自帶工具和數(shù)據(jù)庫表來實現(xiàn)的。由此便可以獲得SOA服務(wù)名及與SOA服務(wù)標(biāo)識符(PID)的映射關(guān)系數(shù)據(jù),最后通過上述映射關(guān)系數(shù)據(jù)可以獲得SOA服務(wù)請求者與SOA服務(wù)提供者的映射關(guān)系數(shù)據(jù)。
S103、通過讀取通過SOA服務(wù)請求者與SOA服務(wù)提供者的映射關(guān)系數(shù)據(jù)生成SOA服務(wù)調(diào)用關(guān)系圖。
具體來說,如果被調(diào)用方(服務(wù)提供者)服務(wù)名為空,則認(rèn)為是外部服務(wù)調(diào)用;如果被調(diào)用方服務(wù)名不為空,則認(rèn)為是內(nèi)部服務(wù)調(diào)用,上述不同服務(wù)均可用不同圖形標(biāo)注。
通過執(zhí)行本發(fā)明提供的基于HTTP的SOA服務(wù)調(diào)用梳理方法,可以最終實現(xiàn)各個SOA服務(wù)之間的調(diào)用關(guān)系圖,使開發(fā)人員和架構(gòu)師在實際工作中不僅獲取數(shù)據(jù)更加準(zhǔn)確和全面,而且大幅度釋放開發(fā)人員的勞動力,大幅縮短了測試過程中耗費的時間,提高了工作效率。
圖2為本發(fā)明的基于HTTP的SOA服務(wù)調(diào)用梳理系統(tǒng)示意圖。如圖2所示,該系統(tǒng)包括:
插樁模塊10,用于對每個SOA服務(wù)請求者發(fā)送的HTTP請求進(jìn)行自定義插樁;
網(wǎng)絡(luò)監(jiān)控模塊20,用于根據(jù)該HTTP請求,獲取該SOA服務(wù)請求者與SOA服務(wù)提供者的第一映射關(guān)系數(shù)據(jù);
報告生成模塊30,用于根據(jù)該第一映射關(guān)系數(shù)據(jù),生成該SOA服務(wù)請求者與該SOA服務(wù)提供者之間的調(diào)用關(guān)系圖。
下面結(jié)合一個具體實施例對本發(fā)明進(jìn)行具體描述,然而值得注意的是該具體實施例僅是為了更好地描述本發(fā)明,并不構(gòu)成對本發(fā)明的不當(dāng)限定。
插樁模塊10、網(wǎng)絡(luò)監(jiān)控模塊20、報告生成模塊30和數(shù)據(jù)更新模塊40。其中,網(wǎng)絡(luò)監(jiān)控模塊20具體包括:第一映射模塊201、第二映射模塊202和第三映射模塊203。
通過插樁模塊10對每個從SOA服務(wù)請求者發(fā)出的HTTP請求增加自定義的HTTP頭(包含調(diào)用堆棧信息),這樣便為每個SOA服務(wù)進(jìn)程進(jìn)行全局插樁。
首先,第一映射模塊201根據(jù)該HTTP請求,獲得該SOA服務(wù)請求者與該SOA服務(wù)提供者的IP地址、端口信息的第二映射關(guān)系數(shù)據(jù)。
其次,第二映射模塊202根據(jù)Windows操作系統(tǒng)自帶的shell命令獲取該IP地址、該端口信息與SOA服務(wù)進(jìn)程標(biāo)識符的第三映射關(guān)系數(shù)據(jù);其中,數(shù)據(jù)更新模塊40會定期更新和存儲該SOA服務(wù)進(jìn)程標(biāo)識符與SOA服務(wù)者的映射關(guān)系數(shù)據(jù)。第三映射模塊203根據(jù)該第二映射關(guān)系與該第三映射關(guān)系,獲取該SOA服務(wù)請求者與該SOA服務(wù)提供者的第一映射關(guān)系數(shù)據(jù)。由于與前述方法原理相同,故不在此贅述。
最后,報告生成模塊30通過上述映射關(guān)系數(shù)據(jù)SOA服務(wù)請求者與SOA服務(wù)提供者的第一映射關(guān)系數(shù)據(jù)生成SOA服務(wù)調(diào)用關(guān)系圖。
通過本發(fā)明提供的SOA服務(wù)調(diào)用梳理方法及系統(tǒng),使得開發(fā)人員和架構(gòu)師在實際工作中不僅獲取數(shù)據(jù)更加準(zhǔn)確和全面,而且大幅度釋放開發(fā)人員的勞動力,減少了測試過程中耗費的時間,提高了工作效 率。
以上所述的具體實施例,對本發(fā)明的目的、技術(shù)方案和有益效果進(jìn)行了進(jìn)一步詳細(xì)說明,所應(yīng)理解的是,以上所述僅為本發(fā)明的具體實施例而已,并不用于限定本發(fā)明的保護(hù)范圍,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。