本發(fā)明涉及互聯(lián)網(wǎng)技術(shù)領(lǐng)域,尤其涉及一種用于生成服務(wù)模塊調(diào)用關(guān)聯(lián)信息的技術(shù)。
背景技術(shù):
大型互聯(lián)網(wǎng)企業(yè)內(nèi)部,具有較多較雜的運維實體管理平臺,例如:多個Naming服務(wù)(命名服務(wù))、多個PaaS平臺(Platform-as-a-Service,平臺及服務(wù))、異構(gòu)的路由服務(wù)等;此外,服務(wù)之間通信使用多種協(xié)議,包括Thrift、RAL、HTTP訪問等。而對于各個運維實體管理平臺并沒有統(tǒng)一有效的管理,因此當(dāng)不同應(yīng)用內(nèi)的模塊進行相互調(diào)用時,無法直接獲取準確有效的服務(wù)模塊調(diào)用關(guān)聯(lián)信息。因此,這就導(dǎo)致了以下問題:
1.缺少結(jié)構(gòu)化的關(guān)聯(lián)關(guān)系數(shù)據(jù),各個服務(wù)模塊調(diào)用關(guān)聯(lián)信息的學(xué)習(xí)成本過高,用戶難以掌握完整的關(guān)聯(lián)關(guān)系數(shù)據(jù)。
2.缺少全局視圖,服務(wù)問題追查成本高。當(dāng)服務(wù)出現(xiàn)問題,需要根據(jù)日志結(jié)合配置中的關(guān)聯(lián)定義去追查上下游的服務(wù)問題,梳理關(guān)聯(lián)關(guān)系的過程耗時,故障的定位效率和準確性都比較低,不利于服務(wù)的快速止損。
3.沒有全局和微觀的服務(wù)視圖,運維決策的效率和效果都打折扣。做預(yù)案執(zhí)行前需要先清楚服務(wù)的調(diào)用關(guān)系,決策預(yù)案的執(zhí)行策略,否則會引入新的故障,進行服務(wù)恢復(fù)的過程中不能確定先后順序和路由關(guān)系。
在現(xiàn)有技術(shù)中主要利用基于調(diào)用鏈分析的trace系統(tǒng)。而實際應(yīng)用場景為:需要完整的服務(wù)模塊調(diào)用關(guān)聯(lián)信息,同時調(diào)用框架不統(tǒng)一、無traceid、日志規(guī)范不統(tǒng)一、缺少當(dāng)前應(yīng)用或目標應(yīng)用等關(guān)鍵信息。因此,trace系統(tǒng)對于上述場景而言具有三種局限性:
場景局限性:普通的trace系統(tǒng)需要基于統(tǒng)一的調(diào)用框架、統(tǒng)一的應(yīng)用定義等。而多數(shù)場景下并不存在上述統(tǒng)一配置,從而導(dǎo)致普通的trace系統(tǒng)并不適合推廣。
設(shè)計局限性:trace系統(tǒng)獲取了一個訪問在各個模塊中的時間順序和上下游關(guān)系,由于數(shù)據(jù)量較大,一般采取抽樣的方式,這種抽樣導(dǎo)致關(guān)聯(lián)數(shù)據(jù)并不完整,在流量少卻重要的訪問(如金融類)場景中并不適用,尤其是一些異常處理邏輯。
業(yè)務(wù)局限性:trace系統(tǒng)的記錄中包含了服務(wù)狀態(tài)數(shù)據(jù),但是沒有服務(wù)靜態(tài)的路由數(shù)據(jù),對于決策預(yù)案執(zhí)行、從零恢復(fù)、服務(wù)路由表切換等場景并不適用。
有鑒于此,如何獲取服務(wù)模塊調(diào)用關(guān)聯(lián)信息以用于決策預(yù)案執(zhí)行、輔助故障定位等,則成為了本領(lǐng)域技術(shù)人員亟待解決的問題。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的是提供一種用于生成服務(wù)模塊調(diào)用關(guān)聯(lián)信息的方法與裝置。
根據(jù)本發(fā)明的一個方面,提供了一種用于生成服務(wù)模塊調(diào)用關(guān)聯(lián)信息的方法,其中,該方法包括以下步驟:
a獲取一條或多條服務(wù)配置變更消息,其中,所述服務(wù)配置變更消息對應(yīng)于上線事件和/或路由表變更事件;
b根據(jù)所述服務(wù)配置變更消息,獲取與所述服務(wù)配置變更消息相對應(yīng)的應(yīng)用配置變更數(shù)據(jù);
c從所述應(yīng)用配置變更數(shù)據(jù)中提取調(diào)用服務(wù)配置數(shù)據(jù),以生成或更新服務(wù)模塊調(diào)用關(guān)聯(lián)信息。
可選地,所述步驟b包括:
-根據(jù)所述服務(wù)配置變更消息,確定與所述服務(wù)配置變更消息相對應(yīng)的更新范圍,其中,所述更新范圍包括發(fā)生變更的服務(wù)器以及所述服務(wù)器中所變更的應(yīng)用配置文件;
-根據(jù)所述更新范圍,獲取與所述服務(wù)配置變更消息相對應(yīng)的應(yīng)用配置變更數(shù)據(jù)。
可選地,該方法還包括:
x對所述應(yīng)用配置變更數(shù)據(jù)進行校驗;
其中,所述步驟c包括:
-從所述校驗后的應(yīng)用配置變更數(shù)據(jù)中提取調(diào)用服務(wù)配置數(shù)據(jù),以生成或更新服務(wù)模塊調(diào)用關(guān)聯(lián)信息。
可選地,所述步驟x包括:
-若所述應(yīng)用配置變更數(shù)據(jù)無法對應(yīng)于現(xiàn)有應(yīng)用配置中,則對所述應(yīng)用配置變更數(shù)據(jù)進行命名校驗。
可選地,該方法還包括:
-根據(jù)所述服務(wù)模塊調(diào)用關(guān)聯(lián)信息,提取與所述服務(wù)模塊調(diào)用關(guān)聯(lián)信息相對應(yīng)的一個或多個調(diào)用實例,其中,所述調(diào)用實例中包括服務(wù)模塊、所述服務(wù)模塊的所屬應(yīng)用及其服務(wù)器、所述服務(wù)模塊的調(diào)用應(yīng)用及其服務(wù)器之間的對應(yīng)調(diào)用關(guān)系;
t對所述調(diào)用實例進行聚合,以生成一個或多個映射數(shù)據(jù)。
可選地,所述步驟t包括:
-根據(jù)所述調(diào)用實例中的至少任一個維度,對所述調(diào)用實例進行聚合,以生成一個或多個映射數(shù)據(jù),其中,所述維度包括所述服務(wù)模塊、所述服務(wù)模塊的所屬應(yīng)用及其服務(wù)器、所述服務(wù)模塊的調(diào)用應(yīng)用及其服務(wù)器之中的至少任一項。
可選地,該方法還包括:
-獲取一條或多條服務(wù)調(diào)用狀態(tài)信息;
-從所述服務(wù)調(diào)用狀態(tài)信息中,提取一種或多種服務(wù)標識數(shù)據(jù),其中,所述服務(wù)標識數(shù)據(jù)包括服務(wù)名稱類、接口類、名字服務(wù)類中的至少任一項;
-根據(jù)所述映射數(shù)據(jù),對所述服務(wù)調(diào)用狀態(tài)信息進行匹配;
s根據(jù)匹配后的所述服務(wù)調(diào)用狀態(tài)信息,更新所述服務(wù)模塊調(diào)用關(guān)聯(lián)信息。
可選地,該方法還包括:
-對匹配后的所述服務(wù)調(diào)用狀態(tài)信息進行聚合;
所述步驟s包括:
-根據(jù)所述聚合后的所述服務(wù)調(diào)用狀態(tài)信息,更新所述服務(wù)模塊調(diào)用關(guān)聯(lián)信息。
根據(jù)本發(fā)明的另一方面,還提供了一種用于生成服務(wù)模塊調(diào)用關(guān)聯(lián)信息的處理設(shè)備,其中,該設(shè)備包括:
第一裝置,用于獲取一條或多條服務(wù)配置變更消息,其中,所述服務(wù)配置變更消息對應(yīng)于上線事件和/或路由表變更事件;
第二裝置,用于根據(jù)所述服務(wù)配置變更消息,獲取與所述服務(wù)配置變更消息相對應(yīng)的應(yīng)用配置變更數(shù)據(jù);
第三裝置,用于從所述應(yīng)用配置變更數(shù)據(jù)中提取調(diào)用服務(wù)配置數(shù)據(jù),以生成或更新服務(wù)模塊調(diào)用關(guān)聯(lián)信息。
可選地,所述第二裝置用于:
-根據(jù)所述服務(wù)配置變更消息,確定與所述服務(wù)配置變更消息相對應(yīng)的更新范圍,其中,所述更新范圍包括發(fā)生變更的服務(wù)器以及所述服務(wù)器中所變更的應(yīng)用配置文件;
-根據(jù)所述更新范圍,獲取與所述服務(wù)配置變更消息相對應(yīng)的應(yīng)用配置變更數(shù)據(jù)。
可選地,該設(shè)備還包括:
第四裝置,用于對所述應(yīng)用配置變更數(shù)據(jù)進行校驗;
其中,所述第三裝置用于:
-從所述校驗后的應(yīng)用配置變更數(shù)據(jù)中提取調(diào)用服務(wù)配置數(shù)據(jù),以生成或更新服務(wù)模塊調(diào)用關(guān)聯(lián)信息。
可選地,所述第四裝置用于:
-若所述應(yīng)用配置變更數(shù)據(jù)無法對應(yīng)于現(xiàn)有應(yīng)用配置中,則對所述應(yīng)用配置變更數(shù)據(jù)進行命名校驗。
可選地,該設(shè)備還包括:
第五裝置,用于根據(jù)所述服務(wù)模塊調(diào)用關(guān)聯(lián)信息,提取與所述服務(wù)模塊調(diào)用關(guān)聯(lián)信息相對應(yīng)的一個或多個調(diào)用實例,其中,所述調(diào)用實例中包括服務(wù)模塊、所述服務(wù)模塊的所屬應(yīng)用及其服務(wù)器、所述服務(wù)模塊的調(diào)用應(yīng)用及其服務(wù)器之間的對應(yīng)調(diào)用關(guān)系;
第六裝置,用于對所述調(diào)用實例進行聚合,以生成一個或多個映射數(shù)據(jù)。
可選地,所述第六裝置用于:
-根據(jù)所述調(diào)用實例中的至少任一個維度,對所述調(diào)用實例進行聚合,以生成一個或多個映射數(shù)據(jù),其中,所述維度包括所述服務(wù)模塊、所述服務(wù)模塊的所屬應(yīng)用及其服務(wù)器、所述服務(wù)模塊的調(diào)用應(yīng)用及其服務(wù)器之中的至少任一項。
可選地,該設(shè)備還包括:
第七裝置,用于獲取一條或多條服務(wù)調(diào)用狀態(tài)信息;
第八裝置,用于從所述服務(wù)調(diào)用狀態(tài)信息中,提取一種或多種服務(wù)標識數(shù)據(jù),其中,所述服務(wù)標識數(shù)據(jù)包括服務(wù)名稱類、接口類、名字服務(wù)類中的至少任一項;
第九裝置,用于根據(jù)所述映射數(shù)據(jù),對所述服務(wù)調(diào)用狀態(tài)信息進行匹配;
第十裝置,用于根據(jù)匹配后的所述服務(wù)調(diào)用狀態(tài)信息,更新所述服務(wù)模塊調(diào)用關(guān)聯(lián)信息。
可選地,該設(shè)備還包括:
第十一裝置,用于對匹配后的所述服務(wù)調(diào)用狀態(tài)信息進行聚合;
所述第十裝置,用于:
-根據(jù)所述聚合后的所述服務(wù)調(diào)用狀態(tài)信息,更新所述服務(wù)模塊調(diào)用關(guān)聯(lián)信息。
與現(xiàn)有技術(shù)相比,本發(fā)明根據(jù)服務(wù)配置變更消息,獲取與所述服務(wù)配置變更消息相對應(yīng)的應(yīng)用配置變更數(shù)據(jù),最后從所述應(yīng)用配置變更數(shù)據(jù)中提取與調(diào)用服務(wù)配置數(shù)據(jù),以生成或更新服務(wù)模塊調(diào)用關(guān)聯(lián)信息。從而,本發(fā)明能夠獲取靜態(tài)服務(wù)模塊調(diào)用關(guān)聯(lián)信息,以反映模塊間的調(diào)用關(guān)系,進而確定一個模塊可能被哪些模塊影響,以用于評估決策,使得所獲取的數(shù)據(jù)更加完整可靠,解決了決策預(yù)案執(zhí)行、在沒有服務(wù)調(diào)用狀態(tài)信息前缺少模塊關(guān)聯(lián)關(guān)系的問題。因此,本發(fā)明能夠以較少的資源占用來分析全量日志,能夠從整體上掌握各個模塊間的關(guān)聯(lián)關(guān)系,提高了多應(yīng)用服務(wù)模塊間的調(diào)用處理效率與處理效果。
而且,本發(fā)明還可以根據(jù)所述服務(wù)配置變更消息,確定與所述服務(wù)配置變更消息相對應(yīng)的更新范圍,然后根據(jù)所述更新范圍,獲取與所述服務(wù)配置變更消息相對應(yīng)的應(yīng)用配置變更數(shù)據(jù);從而僅獲取更新范圍內(nèi)所對應(yīng)的應(yīng)用配置變更數(shù)據(jù),減少了無用數(shù)據(jù)的獲取,提高了系統(tǒng)處理效率。
而且,本發(fā)明還可以對所述應(yīng)用配置變更數(shù)據(jù)進行校驗,并從所述校驗后的應(yīng)用配置變更數(shù)據(jù)中提取調(diào)用服務(wù)配置數(shù)據(jù),以生成或更新服務(wù)模塊調(diào)用關(guān)聯(lián)信息;進一步地,若所述應(yīng)用配置變更數(shù)據(jù)無法對應(yīng)于現(xiàn)有應(yīng)用配置中,則對所述應(yīng)用配置變更數(shù)據(jù)進行命名校驗。從而,本發(fā)明能夠解決配置分析的問題,進一步提升服務(wù)模塊調(diào)用關(guān)聯(lián)關(guān)系的準確性。
而且,本發(fā)明還可以根據(jù)所述服務(wù)模塊調(diào)用關(guān)聯(lián)信息,提取與所述服務(wù)模塊調(diào)用關(guān)聯(lián)信息相對應(yīng)的一個或多個調(diào)用實例,然后對所述調(diào)用實例進行聚合,以生成一個或多個映射數(shù)據(jù);進一步地,所述聚合步驟還包括根據(jù)所述調(diào)用實例中的至少任一個維度,對所述調(diào)用實例進行聚合,以生成一個或多個映射數(shù)據(jù)。從而本發(fā)明通過聚合步驟,提高了后續(xù)查詢的效率。
而且,本發(fā)明還可以根據(jù)服務(wù)調(diào)用狀態(tài)信息來更新所述服務(wù)模塊調(diào)用關(guān)聯(lián)信息,從而根據(jù)動態(tài)的模塊間的關(guān)聯(lián)關(guān)系,確定一個模塊正在被哪些模塊影響、交互的狀態(tài)如何,以用于評估決策。
附圖說明
通過閱讀參照以下附圖所作的對非限制性實施例所作的詳細描述,本發(fā)明的其它特征、目的和優(yōu)點將會變得更明顯:
圖1示出根據(jù)本發(fā)明一個方面的一種用于生成服務(wù)模塊調(diào)用關(guān)聯(lián)信息的處理設(shè)備示意圖;
圖2示出根據(jù)本發(fā)明的一個優(yōu)選實施例的一種用于生成服務(wù)模塊調(diào)用關(guān)聯(lián)信息的處理設(shè)備示意圖;
圖3示出根據(jù)本發(fā)明另一個方面的一種用于生成服務(wù)模塊調(diào)用關(guān)聯(lián)信息的方法流程圖;
圖4示出根據(jù)本發(fā)明的一個優(yōu)選實施例的一種用于生成服務(wù)模塊調(diào)用關(guān)聯(lián)信息的方法流程圖。
附圖中相同或相似的附圖標記代表相同或相似的部件。
具體實施方式
在更加詳細地討論示例性實施例之前應(yīng)當(dāng)提到的是,一些示例性實施例被描述成作為流程圖描繪的處理或方法。雖然流程圖將各項操作描述成順序的處理,但是其中的許多操作可以被并行地、并發(fā)地或者同時實施。此外,各項操作的順序可以被重新安排。當(dāng)其操作完成時所述處理可以被終止,但是還可以具有未包括在附圖中的附加步驟。所述處理可以對應(yīng)于方法、函數(shù)、規(guī)程、子例程、子程序等等。
在上下文中所稱“處理設(shè)備”,即為“計算機設(shè)備”,也稱為“電腦”,是指可以通過運行預(yù)定程序或指令來執(zhí)行數(shù)值計算和/或邏輯計算等預(yù)定處理過程的智能電子設(shè)備,其可以包括處理器與存儲器,由處理器執(zhí)行在存儲器中預(yù)存的存續(xù)指令來執(zhí)行預(yù)定處理過程,或是由ASIC、FPGA、DSP等硬件執(zhí)行預(yù)定處理過程,或是由上述二者組合來實現(xiàn)。
所述計算機設(shè)備包括網(wǎng)絡(luò)設(shè)備。其中,所述網(wǎng)絡(luò)設(shè)備包括但不限于單個網(wǎng)絡(luò)服務(wù)器、多個網(wǎng)絡(luò)服務(wù)器組成的服務(wù)器組或基于云計算(Cloud Computing)的由大量計算機或網(wǎng)絡(luò)服務(wù)器構(gòu)成的云,其中,云計算是分布式計算的一種,由一群松散耦合的計算機集組成的一個超級虛擬計算機。其中,所述計算機設(shè)備可單獨運行來實現(xiàn)本發(fā)明,也可接入網(wǎng)絡(luò)并通過與網(wǎng)絡(luò)中的其他計算機設(shè)備的交互操作來實現(xiàn)本發(fā)明。其中,所述計算機設(shè)備所處的網(wǎng)絡(luò)包括但不限于互聯(lián)網(wǎng)、廣域網(wǎng)、城域網(wǎng)、局域網(wǎng)、VPN網(wǎng)絡(luò)等。
需要說明的是,所述網(wǎng)絡(luò)設(shè)備或網(wǎng)絡(luò)等僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的計算機設(shè)備或網(wǎng)絡(luò)如可適用于本發(fā)明,也應(yīng)包含在本發(fā)明保護范圍以內(nèi),并以引用方式包含于此。
這里所公開的具體結(jié)構(gòu)和功能細節(jié)僅僅是代表性的,并且是用于描述本發(fā)明的示例性實施例的目的。但是本發(fā)明可以通過許多替換形式來具體實現(xiàn),并且不應(yīng)當(dāng)被解釋成僅僅受限于這里所闡述的實施例。
應(yīng)當(dāng)理解的是,雖然在這里可能使用了術(shù)語“第一”、“第二”等等來描述各個單元,但是這些單元不應(yīng)當(dāng)受這些術(shù)語限制。使用這些術(shù)語僅僅是為了將一個單元與另一個單元進行區(qū)分。舉例來說,在不背離示例性實施例的范圍的情況下,第一單元可以被稱為第二單元,并且類似地第二單元可以被稱為第一單元。這里所使用的術(shù)語“和/或”包括其中一個或更多所列出的相關(guān)聯(lián)項目的任意和所有組合。
這里所使用的術(shù)語僅僅是為了描述具體實施例而不意圖限制示例性實施例。除非上下文明確地另有所指,否則這里所使用的單數(shù)形式“一個”、“一項”還意圖包括復(fù)數(shù)。還應(yīng)當(dāng)理解的是,這里所使用的術(shù)語“包括”和/或“包含”規(guī)定所陳述的特征、整數(shù)、步驟、操作、單元和/或組件的存在,而不排除存在或添加一個或更多其他特征、整數(shù)、步驟、操作、單元、組件和/或其組合。
還應(yīng)當(dāng)提到的是,在一些替換實現(xiàn)方式中,所提到的功能/動作可以按照不同于附圖中標示的順序發(fā)生。舉例來說,取決于所涉及的功能/動作,相繼示出的兩幅圖實際上可以基本上同時執(zhí)行或者有時可以按照相反的順序來執(zhí)行。
下面結(jié)合附圖對本發(fā)明作進一步詳細描述。
圖1示出根據(jù)本發(fā)明一個方面的一種用于生成服務(wù)模塊調(diào)用關(guān)聯(lián)信息的處理設(shè)備示意圖。
其中,所述處理設(shè)備包括第一裝置1、第二裝置2、第三裝置3。具體地,所述第一裝置1獲取一條或多條服務(wù)配置變更消息,其中,所述服務(wù)配置變更消息對應(yīng)于上線事件和/或路由表變更事件;所述第二裝置2根據(jù)所述服務(wù)配置變更消息,獲取與所述服務(wù)配置變更消息相對應(yīng)的應(yīng)用配置變更數(shù)據(jù);所述第三裝置3從所述應(yīng)用配置變更數(shù)據(jù)中提取調(diào)用服務(wù)配置數(shù)據(jù),以生成或更新服務(wù)模塊調(diào)用關(guān)聯(lián)信息。
所述第一裝置1獲取一條或多條服務(wù)配置變更消息,其中,所述服務(wù)配置變更消息對應(yīng)于上線事件和/或路由表變更事件。
具體地,所述第一裝置1基于各類通信協(xié)議,通過預(yù)先設(shè)定的傳輸接口,從預(yù)先設(shè)置的管理平臺中獲取一條或多條服務(wù)配置變更消息,其中,所述服務(wù)配置變更消息對應(yīng)于上線事件和/或路由表變更事件。
例如,當(dāng)所述管理平臺所管理的路由表發(fā)生變更時,將相應(yīng)數(shù)據(jù)推送到知識庫中,則上限等變更時間所對應(yīng)的所述服務(wù)配置變更消息可以從所述知識庫中進行獲取等。
其中,所述服務(wù)即為各類應(yīng)用中所對應(yīng)的一個或多個可提供的服務(wù)或服務(wù)模塊等,如百度中國區(qū)所有服務(wù)/百度糯米所有服務(wù)或某特定服務(wù)等。
其中,所述上線事件即為啟用某個服務(wù),其所對應(yīng)的全部服務(wù)配置均為新增配置;所述路由表變更事件即為原有或新增添的某個服務(wù)所對應(yīng)的路由表發(fā)生了改變。
其中,所述服務(wù)配置變更消息可以對應(yīng)于原有已存在的服務(wù)配置的變更,也可以對應(yīng)于未存在的服務(wù)配置的添加等,如百度中國區(qū)所有服務(wù)/百度糯米所有服務(wù)/某特定服務(wù),初始狀態(tài)為空,那么在這個初始狀態(tài)上的第一個事件是作用域內(nèi)的所有配置信息的變更。
所述第二裝置2根據(jù)所述服務(wù)配置變更消息,獲取與所述服務(wù)配置變更消息相對應(yīng)的應(yīng)用配置變更數(shù)據(jù)。
具體地,所述第二裝置2根據(jù)所述服務(wù)配置變更消息,基于各類通信協(xié)議,通過預(yù)先設(shè)定的傳輸接口,從對應(yīng)的配置中心處獲取與所述服務(wù)配置變更消息相對應(yīng)的應(yīng)用配置變更數(shù)據(jù)。其中,所述配置中心存儲有所有服務(wù)的配置數(shù)據(jù),而所述第二裝置2根據(jù)所述服務(wù)配置變更消息,首先確定該服務(wù)配置變更消息所對應(yīng)的變更的服務(wù)以及所變更服務(wù)所對應(yīng)的服務(wù)器等信息,然后,根據(jù)上述信息,從所述配置中心處獲取所述應(yīng)用配置變更數(shù)據(jù)。
優(yōu)選地,所述第二裝置2用于根據(jù)所述服務(wù)配置變更消息,確定與所述服務(wù)配置變更消息相對應(yīng)的更新范圍,其中,所述更新范圍包括發(fā)生變更的服務(wù)器以及所述服務(wù)器中所變更的應(yīng)用配置文件;根據(jù)所述更新范圍,獲取與所述服務(wù)配置變更消息相對應(yīng)的應(yīng)用配置變更數(shù)據(jù)。
具體地,所述第二裝置2根據(jù)所述服務(wù)配置變更消息,根據(jù)所述服務(wù)配置變更消息的具體內(nèi)容、來源等信息,確定與所述服務(wù)配置變更消息所對應(yīng)的更新范圍;其中,所述更新范圍包括發(fā)生變更的服務(wù)器以及所述服務(wù)器中所變更的應(yīng)用配置文件。
在此,本領(lǐng)域技術(shù)人員應(yīng)能理解,當(dāng)某服務(wù)發(fā)生變更時,所述變更的服務(wù)器包括實體服務(wù)器或虛擬服務(wù)器,所述應(yīng)用配置文件可以是該服務(wù)在該服務(wù)器中所對應(yīng)的全部應(yīng)用配置文件,優(yōu)選地,還可以是該應(yīng)用配置文件中僅發(fā)生變更的結(jié)構(gòu)化數(shù)據(jù)。換言之,所述更新范圍即為該服務(wù)所更新的配置內(nèi)容。
然后,所述第二裝置2根據(jù)所述更新范圍,僅選取所述更新范圍內(nèi)所對應(yīng)的應(yīng)用配置變更數(shù)據(jù)以進行獲取,從而避免獲取未變更的配置數(shù)據(jù),提高處理效率。
所述第三裝置3從所述應(yīng)用配置變更數(shù)據(jù)中提取調(diào)用服務(wù)配置數(shù)據(jù),以生成或更新服務(wù)模塊調(diào)用關(guān)聯(lián)信息。
具體地,所述第三裝置3根據(jù)預(yù)定的路徑、預(yù)定的關(guān)鍵詞等信息,從所述應(yīng)用配置變更數(shù)據(jù)中,提取調(diào)用服務(wù)配置數(shù)據(jù);其中,所述調(diào)用服務(wù)配置數(shù)據(jù)主要包括服務(wù)尋址配置數(shù)據(jù),例如,所述服務(wù)尋址配置數(shù)據(jù)可以根據(jù)配置文件中的“應(yīng)用配置->調(diào)用服務(wù)配置->服務(wù)尋址方式”路徑進行獲取,或者可根據(jù)配置文件中的關(guān)鍵詞“Host”所對應(yīng)的內(nèi)容進行獲取。以下示出了所述調(diào)用服務(wù)配置數(shù)據(jù)的一個示例,其中Host指名了索要調(diào)用的服務(wù)的尋址方式(無關(guān)配置已經(jīng)刪除):
[CamelConfig]
[.GalileoBase]
Host:
XX.XX.XXX.XX:XXXX,XX.XX.XXX.XX:XXXX,XX.XX.XXX.XX:X
XXX
ZooRetry:2
ZooInterval:100
然后,所述第三裝置3根據(jù)所提取的調(diào)用服務(wù)配置數(shù)據(jù),根據(jù)所述調(diào)用服務(wù)配置數(shù)據(jù)之間的調(diào)用關(guān)系,生成或更新服務(wù)模塊調(diào)用關(guān)聯(lián)信息。其中,所述服務(wù)模塊調(diào)用關(guān)聯(lián)信息中包含了同一應(yīng)用和/或不同應(yīng)用間各個模塊的調(diào)用關(guān)系。
例如,應(yīng)用“糯米”的首頁渲染時獲取商品列表的服務(wù)由模塊A提供,A模塊依賴商品列表查詢的服務(wù)、促銷信息查詢的服務(wù),這兩個服務(wù)分別由模塊B、C提供;則所述第三裝置3根據(jù)所提取的調(diào)用服務(wù)配置數(shù)據(jù),建立起應(yīng)用“糯米”的模塊A與模塊B、C的服務(wù)模塊調(diào)用關(guān)聯(lián)信息;進一步地,所述服務(wù)模塊調(diào)用關(guān)聯(lián)信息中還可以包含模塊A與模塊B、C所對應(yīng)的應(yīng)用、服務(wù)器等各類相關(guān)信息
優(yōu)選地,所述處理設(shè)備還包括第四裝置(未示出),其中,所述第四裝置對所述應(yīng)用配置變更數(shù)據(jù)進行校驗;所述第三裝置3從所述校驗后的應(yīng)用配置變更數(shù)據(jù)中提取調(diào)用服務(wù)配置數(shù)據(jù),以生成或更新服務(wù)模塊調(diào)用關(guān)聯(lián)信息。
具體地,所述第四裝置基于預(yù)設(shè)的校驗方法,如命名(Naming)校驗(也稱名字校驗)等,對所述應(yīng)用配置變更數(shù)據(jù)進行校驗。其中,所述校驗可包括對已知應(yīng)用配置的校驗以及未知應(yīng)用配置的校驗;例如,對于已知應(yīng)用配置,可利用命名服務(wù)來校驗所述已知的應(yīng)用配置是否正確;對于未知應(yīng)用配置,則可利用命名服務(wù)來校驗所述未知的應(yīng)用配置對應(yīng)于何種應(yīng)用配置,以解決配置分析的問題。
本領(lǐng)域技術(shù)人員應(yīng)能理解,所述命名服務(wù)所對應(yīng)的具體操作方式,故在此不再贅述,并以引用的方式包含于此。
然后,所述第三裝置3根據(jù)校驗后的應(yīng)用配置變更數(shù)據(jù),提取調(diào)用服務(wù)配置數(shù)據(jù),以生成或更新服務(wù)模塊調(diào)用關(guān)聯(lián)信息。其中,所述提取方式與圖1中所述第三裝置3相同或相似,故在此不再贅述,,并以引用的方式包含于此。
更優(yōu)選地,若所述應(yīng)用配置變更數(shù)據(jù)無法對應(yīng)于現(xiàn)有應(yīng)用配置中,所述第四裝置對所述應(yīng)用配置變更數(shù)據(jù)進行命名校驗。
具體地,對于所述校驗服務(wù),所述第四裝置可以僅在所述應(yīng)用配置變更數(shù)據(jù)無法對應(yīng)于現(xiàn)有應(yīng)用配置時執(zhí)行,從而提高處理效率。
在此,以“命名服務(wù)”的校驗為例,在校驗時,將所述應(yīng)用配置變更數(shù)據(jù)中的每個值(value)與命名服務(wù)中的現(xiàn)有應(yīng)用配置的別名列表進行對比,基于所對應(yīng)的現(xiàn)有配置,來驗證待驗證的應(yīng)用配置變更數(shù)據(jù)是否存在對對應(yīng)的現(xiàn)有應(yīng)用配置;優(yōu)選地,可以對上述值(value)的key集進行貝葉斯分類,基于分類后的值進行校驗。從而,可將實際采集到的命名服務(wù)數(shù)據(jù)作為反饋輸入到第四裝置中,以進一步提升準確率。
圖2示出根據(jù)本發(fā)明的一個優(yōu)選實施例的一種用于生成服務(wù)模塊調(diào)用關(guān)聯(lián)信息的處理設(shè)備示意圖。
其中,所述處理設(shè)備包括第一裝置1’、第二裝置2’、第三裝置3’、第五裝置5’、第六裝置6’。具體地,所述第一裝置1’獲取一條或多條服務(wù)配置變更消息,其中,所述服務(wù)配置變更消息對應(yīng)于上線事件和/或路由表變更事件;所述第二裝置2’根據(jù)所述服務(wù)配置變更消息,獲取與所述服務(wù)配置變更消息相對應(yīng)的應(yīng)用配置變更數(shù)據(jù);所述第三裝置3’從所述應(yīng)用配置變更數(shù)據(jù)中提取調(diào)用服務(wù)配置數(shù)據(jù),以生成或更新服務(wù)模塊調(diào)用關(guān)聯(lián)信息;所述第五裝置5’根據(jù)所述服務(wù)模塊調(diào)用關(guān)聯(lián)信息,提取與所述服務(wù)模塊調(diào)用關(guān)聯(lián)信息相對應(yīng)的一個或多個調(diào)用實例,其中,所述調(diào)用實例中包括服務(wù)模塊、所述服務(wù)模塊的所屬應(yīng)用及其服務(wù)器、所述服務(wù)模塊的調(diào)用應(yīng)用及其服務(wù)器之間的對應(yīng)調(diào)用關(guān)系;所述第六裝置6’對所述調(diào)用實例進行聚合,以生成一個或多個映射數(shù)據(jù)。
其中,所述處理設(shè)備的第一裝置1’、第二裝置2’、第三裝置3’與圖1所示對應(yīng)裝置相同或基本相同,故此處不再贅述,并通過引用的方式包含于此。
所述第五裝置5’根據(jù)所述服務(wù)模塊調(diào)用關(guān)聯(lián)信息,提取與所述服務(wù)模塊調(diào)用關(guān)聯(lián)信息相對應(yīng)的一個或多個調(diào)用實例,其中,所述調(diào)用實例中包括服務(wù)模塊、所述服務(wù)模塊的所屬應(yīng)用及其服務(wù)器、所述服務(wù)模塊的調(diào)用應(yīng)用及其服務(wù)器之間的對應(yīng)調(diào)用關(guān)系。
具體地,所述第五裝置5’根據(jù)所述服務(wù)模塊調(diào)用關(guān)聯(lián)信息,獲取一個應(yīng)用的配置中包含了哪些模塊、以及這些模塊所對應(yīng)的尋址方式;然后根據(jù)所述服務(wù)模塊調(diào)用關(guān)聯(lián)信息所調(diào)用的服務(wù)模塊、所述服務(wù)模塊的所屬應(yīng)用以及所屬應(yīng)用所在的服務(wù)器、所述服務(wù)模塊的調(diào)用應(yīng)用以及所調(diào)用應(yīng)用的所在服務(wù)器等信息,提取與所述服務(wù)模塊調(diào)用關(guān)聯(lián)信息相對應(yīng)的一個或多個調(diào)用實例。
例如,所述服務(wù)模塊為B,其是應(yīng)用A的一個模塊,則所述應(yīng)用A為所述服務(wù)模塊B的所屬應(yīng)用;所述應(yīng)用A在服務(wù)器A1、A2、A3中,則所屬應(yīng)用所在的服務(wù)器即為服務(wù)器A1、A2、A3。所述服務(wù)模塊B被應(yīng)用C所提供,則所述服務(wù)模塊B的調(diào)用應(yīng)用為所述應(yīng)用C;所述應(yīng)用C由服務(wù)器C1、C2、C3提供,因此,所述調(diào)用應(yīng)用所在的服務(wù)器為服務(wù)器C1、C2、C3。
所述第五裝置5’根據(jù)上述調(diào)用關(guān)系,以所述服務(wù)模塊B為中心,提取出與其相對應(yīng)的調(diào)用關(guān)系,即在應(yīng)用A(服務(wù)器A1、A2、A3)中命名為B的服務(wù)模塊由應(yīng)用C(服務(wù)器C1、C2、C3)所提供。
本領(lǐng)域技術(shù)人員應(yīng)能理解,上述說明僅為示例,并非對本發(fā)明的限制。一個服務(wù)模塊可以對應(yīng)于多條調(diào)用實例,如所述服務(wù)模塊B還可以存在于應(yīng)用D(服務(wù)器D1)中,并被應(yīng)用C(服務(wù)器C1、C2)與應(yīng)用E(服務(wù)器E1)所提供等。
所述第六裝置6’對所述調(diào)用實例進行聚合,以生成一個或多個映射數(shù)據(jù)。
具體地,所述第六裝置6’對上述一條或多條調(diào)用實例進行聚合,根據(jù)其所對應(yīng)的調(diào)用關(guān)系來生成一個或多個映射數(shù)據(jù)。所述映射數(shù)據(jù)可以以服務(wù)模塊為中心,或是以其他相應(yīng)的數(shù)據(jù)為中心等。
優(yōu)選地,所述第六裝置6’包括根據(jù)所述調(diào)用實例中的至少任一個維度,對所述調(diào)用實例進行聚合,以生成一個或多個映射數(shù)據(jù),其中,所述維度包括所述服務(wù)模塊、所述服務(wù)模塊的所屬應(yīng)用及其服務(wù)器、所述服務(wù)模塊的調(diào)用應(yīng)用及其服務(wù)器之中的至少任一項。
具體地,所述第六裝置6’在進行聚合的過程中,可以基于所述調(diào)用實例中的至少任一個維度來進行聚合。例如,以所述服務(wù)模塊為維度,則以所述服務(wù)模塊為中心,一個服務(wù)模塊可對應(yīng)于多個所述服務(wù)模塊的所屬應(yīng)用及其服務(wù)器、所述服務(wù)模塊的調(diào)用應(yīng)用及其服務(wù)器的映射關(guān)系;或者,以所述服務(wù)模塊的所屬應(yīng)用為中心,則將該所屬應(yīng)用中所包含的多個服務(wù)模塊以及所述服務(wù)模塊的調(diào)用應(yīng)用及其服務(wù)器作為聚合的內(nèi)容等。
當(dāng)各個應(yīng)用或各個應(yīng)用中的服務(wù)模塊開始運行時,能夠生成服務(wù)調(diào)用狀態(tài)信息;所述服務(wù)調(diào)用狀態(tài)信息可以基于所述映射數(shù)據(jù)來進行輔助分析等。繼上例,若在應(yīng)用A(服務(wù)器A1、A2、A3)中命名為B的服務(wù)模塊由應(yīng)用C(服務(wù)器C1、C2、C3)所提供,則當(dāng)應(yīng)用A中采集到的日志內(nèi)容為:模塊B調(diào)用失敗或成功比例異常時,則可得知應(yīng)用A與應(yīng)用C的交互異常,進一步地,還可以根據(jù)模塊B的具體路由表確定日志中描述的調(diào)用使用了哪一條路由,使用了何種交互協(xié)議,實際訪問是否臨近超時限制等,而上述信息通常在日志中并不完整,必須需要基于所述映射數(shù)據(jù)來對上述信息進行獲取。
優(yōu)選地,所述處理設(shè)備還包括第七裝置(未示出)、第八裝置(未示出)、第九裝置(未示出)、第十裝置(未示出)。
其中,所述第七裝置獲取一條或多條服務(wù)調(diào)用狀態(tài)信息;所述第八裝置從所述服務(wù)調(diào)用狀態(tài)信息中,提取一種或多種服務(wù)標識數(shù)據(jù),其中,所述服務(wù)標識數(shù)據(jù)包括服務(wù)名稱類、接口類、名字服務(wù)類中的至少任一項;所述第九裝置根據(jù)所述映射數(shù)據(jù),對所述服務(wù)調(diào)用狀態(tài)信息進行匹配;所述第十裝置根據(jù)匹配后的所述服務(wù)調(diào)用狀態(tài)信息,更新所述服務(wù)模塊調(diào)用關(guān)聯(lián)信息。
具體地,所述第七裝置可以根據(jù)系統(tǒng)歷史日志,或根據(jù)應(yīng)用在運行過程中所實時生成的日志等,獲取一條或多條服務(wù)調(diào)用狀態(tài)信息;其中,所述服務(wù)調(diào)用狀態(tài)信息反應(yīng)了系統(tǒng)運行過程中各個模塊間的調(diào)用關(guān)系。
所述第八裝置根據(jù)預(yù)定的調(diào)用規(guī)則,基于調(diào)用關(guān)鍵字,從所述服務(wù)調(diào)用狀態(tài)信息中,提取一種或多種服務(wù)標識數(shù)據(jù),例如,服務(wù)名稱類、接口類、名字服務(wù)類中的至少任一項所對應(yīng)的數(shù)據(jù)。
然后,所述第九裝置根據(jù)所述映射數(shù)據(jù)中所對應(yīng)的映射關(guān)系,將所述服務(wù)標識數(shù)據(jù)與所述映射關(guān)系中的內(nèi)容進行匹配,從而實現(xiàn)對所述服務(wù)調(diào)用狀態(tài)信息的匹配。
最后,所述第十裝置根據(jù)匹配后的所述服務(wù)調(diào)用狀態(tài)信息,可將所述服務(wù)調(diào)用狀態(tài)信息匯聚為應(yīng)用之間的關(guān)聯(lián),以更新所述服務(wù)模塊調(diào)用關(guān)聯(lián)信息,作為無侵入性的數(shù)據(jù)采集,以解決低侵入性trace難以推廣的問題。
在此,本領(lǐng)域技術(shù)人員應(yīng)能理解,所述第十裝置對所述服務(wù)模塊調(diào)用關(guān)聯(lián)信息的更新,可以是基于原服務(wù)模塊調(diào)用關(guān)聯(lián)信息的結(jié)構(gòu)而進行的,如原服務(wù)模塊調(diào)用關(guān)聯(lián)數(shù)據(jù)以應(yīng)用為中心,則更新后的數(shù)據(jù)也以應(yīng)用為中心;也可以是僅以所述服務(wù)調(diào)用狀態(tài)信息的結(jié)構(gòu)來進行,如原服務(wù)模塊調(diào)用關(guān)聯(lián)信息以服務(wù)模塊為中心,而所述服務(wù)調(diào)用狀態(tài)信息則以應(yīng)用為中心等。
更優(yōu)選地,所述處理設(shè)備還包括第十一裝置(未示出),其中,所述第十一裝置對匹配后的所述服務(wù)調(diào)用狀態(tài)信息進行聚合;所述第十裝置根據(jù)所述聚合后的所述服務(wù)調(diào)用狀態(tài)信息,更新所述服務(wù)模塊調(diào)用關(guān)聯(lián)信息。
具體地,所述第十一裝置根據(jù)所述服務(wù)調(diào)用狀態(tài)信息所對應(yīng)的響應(yīng)時間、狀態(tài)碼等信息,對匹配后的所述服務(wù)調(diào)用狀態(tài)信息進行聚合;優(yōu)選地,所述聚合可基于預(yù)定的周期而周期性處理。
所述第十裝置則根據(jù)所述聚合后的所述服務(wù)調(diào)用狀態(tài)信息,更新所述服務(wù)模塊調(diào)用關(guān)聯(lián)信息,從而可以獲得全量日志。在此,所述更新方式與前述第十裝置的更新方式相同或相似,故在此不再贅述,并通過引用的方式包含于此。
圖3示出根據(jù)本發(fā)明另一個方面的一種用于生成服務(wù)模塊調(diào)用關(guān)聯(lián)信息的方法流程圖。
具體地,在步驟S1中,所述處理設(shè)備獲取一條或多條服務(wù)配置變更消息,其中,所述服務(wù)配置變更消息對應(yīng)于上線事件和/或路由表變更事件;在步驟S2中,所述處理設(shè)備根據(jù)所述服務(wù)配置變更消息,獲取與所述服務(wù)配置變更消息相對應(yīng)的應(yīng)用配置變更數(shù)據(jù);在步驟S3中,所述處理設(shè)備從所述應(yīng)用配置變更數(shù)據(jù)中提取調(diào)用服務(wù)配置數(shù)據(jù),以生成或更新服務(wù)模塊調(diào)用關(guān)聯(lián)信息。
在步驟S1中,所述處理設(shè)備獲取一條或多條服務(wù)配置變更消息,其中,所述服務(wù)配置變更消息對應(yīng)于上線事件和/或路由表變更事件。
具體地,在步驟S1中,所述處理設(shè)備基于各類通信協(xié)議,通過預(yù)先設(shè)定的傳輸接口,從預(yù)先設(shè)置的管理平臺中獲取一條或多條服務(wù)配置變更消息,其中,所述服務(wù)配置變更消息對應(yīng)于上線事件和/或路由表變更事件。
例如,當(dāng)所述管理平臺所管理的路由表發(fā)生變更時,將相應(yīng)數(shù)據(jù)推送到知識庫中,則上限等變更時間所對應(yīng)的所述服務(wù)配置變更消息可以從所述知識庫中進行獲取等。
其中,所述服務(wù)即為各類應(yīng)用中所對應(yīng)的一個或多個可提供的服務(wù)或服務(wù)模塊等,如百度中國區(qū)所有服務(wù)/百度糯米所有服務(wù)或某特定服務(wù)等。
其中,所述上線事件即為啟用某個服務(wù),其所對應(yīng)的全部服務(wù)配置均為新增配置;所述路由表變更事件即為原有或新增添的某個服務(wù)所對應(yīng)的路由表發(fā)生了改變。
其中,所述服務(wù)配置變更消息可以對應(yīng)于原有已存在的服務(wù)配置的變更,也可以對應(yīng)于未存在的服務(wù)配置的添加等,如百度中國區(qū)所有服務(wù)/百度糯米所有服務(wù)/某特定服務(wù),初始狀態(tài)為空,那么在這個初始狀態(tài)上的第一個事件是作用域內(nèi)的所有配置信息的變更。
在步驟S2中,所述處理設(shè)備根據(jù)所述服務(wù)配置變更消息,獲取與所述服務(wù)配置變更消息相對應(yīng)的應(yīng)用配置變更數(shù)據(jù)。
具體地,在步驟S2中,所述處理設(shè)備根據(jù)所述服務(wù)配置變更消息,基于各類通信協(xié)議,通過預(yù)先設(shè)定的傳輸接口,從對應(yīng)的配置中心處獲取與所述服務(wù)配置變更消息相對應(yīng)的應(yīng)用配置變更數(shù)據(jù)。其中,所述配置中心存儲有所有服務(wù)的配置數(shù)據(jù),而在步驟S2中,所述處理設(shè)備根據(jù)所述服務(wù)配置變更消息,首先確定該服務(wù)配置變更消息所對應(yīng)的變更的服務(wù)以及所變更服務(wù)所對應(yīng)的服務(wù)器等信息,然后,根據(jù)上述信息,從所述配置中心處獲取所述應(yīng)用配置變更數(shù)據(jù)。
優(yōu)選地,在步驟S2中,所述處理設(shè)備用于根據(jù)所述服務(wù)配置變更消息,確定與所述服務(wù)配置變更消息相對應(yīng)的更新范圍,其中,所述更新范圍包括發(fā)生變更的服務(wù)器以及所述服務(wù)器中所變更的應(yīng)用配置文件;根據(jù)所述更新范圍,獲取與所述服務(wù)配置變更消息相對應(yīng)的應(yīng)用配置變更數(shù)據(jù)。
具體地,在步驟S2中,所述處理設(shè)備根據(jù)所述服務(wù)配置變更消息,根據(jù)所述服務(wù)配置變更消息的具體內(nèi)容、來源等信息,確定與所述服務(wù)配置變更消息所對應(yīng)的更新范圍;其中,所述更新范圍包括發(fā)生變更的服務(wù)器以及所述服務(wù)器中所變更的應(yīng)用配置文件。
在此,本領(lǐng)域技術(shù)人員應(yīng)能理解,當(dāng)某服務(wù)發(fā)生變更時,所述變更的服務(wù)器包括實體服務(wù)器或虛擬服務(wù)器,所述應(yīng)用配置文件可以是該服務(wù)在該服務(wù)器中所對應(yīng)的全部應(yīng)用配置文件,優(yōu)選地,還可以是該應(yīng)用配置文件中僅發(fā)生變更的結(jié)構(gòu)化數(shù)據(jù)。換言之,所述更新范圍即為該服務(wù)所更新的配置內(nèi)容。
然后,在步驟S2中,所述處理設(shè)備根據(jù)所述更新范圍,僅選取所述更新范圍內(nèi)所對應(yīng)的應(yīng)用配置變更數(shù)據(jù)以進行獲取,從而避免獲取未變更的配置數(shù)據(jù),提高處理效率。
在步驟S3中,所述處理設(shè)備從所述應(yīng)用配置變更數(shù)據(jù)中提取調(diào)用服務(wù)配置數(shù)據(jù),以生成或更新服務(wù)模塊調(diào)用關(guān)聯(lián)信息。
具體地,在步驟S3中,所述處理設(shè)備根據(jù)預(yù)定的路徑、預(yù)定的關(guān)鍵詞等信息,從所述應(yīng)用配置變更數(shù)據(jù)中,提取調(diào)用服務(wù)配置數(shù)據(jù);其中,所述調(diào)用服務(wù)配置數(shù)據(jù)主要包括服務(wù)尋址配置數(shù)據(jù),例如,所述服務(wù)尋址配置數(shù)據(jù)可以根據(jù)配置文件中的“應(yīng)用配置->調(diào)用服務(wù)配置->服務(wù)尋址方式”路徑進行獲取,或者可根據(jù)配置文件中的關(guān)鍵詞“Host”所對應(yīng)的內(nèi)容進行獲取。以下示出了所述調(diào)用服務(wù)配置數(shù)據(jù)的一個示例,其中Host指名了索要調(diào)用的服務(wù)的尋址方式(無關(guān)配置已經(jīng)刪除):
[CamelConfig]
[.GalileoBase]
Host:
XX.XX.XXX.XX:XXXX,XX.XX.XXX.XX:XXXX,XX.XX.XXX.XX:X
XXX
ZooRetry:2
ZooInterval:100
然后,在步驟S3中,所述處理設(shè)備根據(jù)所提取的調(diào)用服務(wù)配置數(shù)據(jù),根據(jù)所述調(diào)用服務(wù)配置數(shù)據(jù)之間的調(diào)用關(guān)系,生成或更新服務(wù)模塊調(diào)用關(guān)聯(lián)信息。其中,所述服務(wù)模塊調(diào)用關(guān)聯(lián)信息中包含了同一應(yīng)用和/或不同應(yīng)用間各個模塊的調(diào)用關(guān)系。
例如,應(yīng)用“糯米”的首頁渲染時獲取商品列表的服務(wù)由模塊A提供,A模塊依賴商品列表查詢的服務(wù)、促銷信息查詢的服務(wù),這兩個服務(wù)分別由模塊B、C提供;則在步驟S3中,所述處理設(shè)備根據(jù)所提取的調(diào)用服務(wù)配置數(shù)據(jù),建立起應(yīng)用“糯米”的模塊A與模塊B、C的服務(wù)模塊調(diào)用關(guān)聯(lián)信息;進一步地,所述服務(wù)模塊調(diào)用關(guān)聯(lián)信息中還可以包含模塊A與模塊B、C所對應(yīng)的應(yīng)用、服務(wù)器等各類相關(guān)信息
優(yōu)選地,所述方法還包括步驟S4(未示出),其中,在步驟S4中,所述處理設(shè)備對所述應(yīng)用配置變更數(shù)據(jù)進行校驗;在步驟S3中,所述處理設(shè)備從所述校驗后的應(yīng)用配置變更數(shù)據(jù)中提取調(diào)用服務(wù)配置數(shù)據(jù),以生成或更新服務(wù)模塊調(diào)用關(guān)聯(lián)信息。
具體地,在步驟S4中,所述處理設(shè)備基于預(yù)設(shè)的校驗方法,如命名(Naming)校驗(也稱名字校驗)等,對所述應(yīng)用配置變更數(shù)據(jù)進行校驗。其中,所述校驗可包括對已知應(yīng)用配置的校驗以及未知應(yīng)用配置的校驗;例如,對于已知應(yīng)用配置,可利用命名服務(wù)來校驗所述已知的應(yīng)用配置是否正確;對于未知應(yīng)用配置,則可利用命名服務(wù)來校驗所述未知的應(yīng)用配置對應(yīng)于何種應(yīng)用配置,以解決配置分析的問題。
本領(lǐng)域技術(shù)人員應(yīng)能理解,所述命名服務(wù)所對應(yīng)的具體操作方式,故在此不再贅述,并以引用的方式包含于此。
然后,在步驟S3中,所述處理設(shè)備根據(jù)校驗后的應(yīng)用配置變更數(shù)據(jù),提取調(diào)用服務(wù)配置數(shù)據(jù),以生成或更新服務(wù)模塊調(diào)用關(guān)聯(lián)信息。其中,所述提取方式與圖3中所述步驟S3相同或相似,故在此不再贅述,,并以引用的方式包含于此。
更優(yōu)選地,若所述應(yīng)用配置變更數(shù)據(jù)無法對應(yīng)于現(xiàn)有應(yīng)用配置中,在步驟S4中,所述處理設(shè)備對所述應(yīng)用配置變更數(shù)據(jù)進行命名校驗。
具體地,對于所述校驗服務(wù),在步驟S4中,所述處理設(shè)備可以僅在所述應(yīng)用配置變更數(shù)據(jù)無法對應(yīng)于現(xiàn)有應(yīng)用配置時執(zhí)行,從而提高處理效率。
在此,以“命名服務(wù)”的校驗為例,在校驗時,將所述應(yīng)用配置變更數(shù)據(jù)中的每個值(value)與命名服務(wù)中的現(xiàn)有應(yīng)用配置的別名列表進行對比,基于所對應(yīng)的現(xiàn)有配置,來驗證待驗證的應(yīng)用配置變更數(shù)據(jù)是否存在對對應(yīng)的現(xiàn)有應(yīng)用配置;優(yōu)選地,可以對上述值(value)的key集進行貝葉斯分類,基于分類后的值進行校驗。從而,可將實際采集到的命名服務(wù)數(shù)據(jù)作為反饋輸入到所述處理設(shè)備中,以進一步提升準確率。
圖4示出根據(jù)本發(fā)明的一個優(yōu)選實施例的一種用于生成服務(wù)模塊調(diào)用關(guān)聯(lián)信息的方法流程圖。
具體地,在步驟S1’中,所述處理設(shè)備獲取一條或多條服務(wù)配置變更消息,其中,所述服務(wù)配置變更消息對應(yīng)于上線事件和/或路由表變更事件;在步驟S2’中,所述處理設(shè)備根據(jù)所述服務(wù)配置變更消息,獲取與所述服務(wù)配置變更消息相對應(yīng)的應(yīng)用配置變更數(shù)據(jù);在步驟S3’中,所述處理設(shè)備從所述應(yīng)用配置變更數(shù)據(jù)中提取調(diào)用服務(wù)配置數(shù)據(jù),以生成或更新服務(wù)模塊調(diào)用關(guān)聯(lián)信息;在步驟S5’中,所述處理設(shè)備根據(jù)所述服務(wù)模塊調(diào)用關(guān)聯(lián)信息,提取與所述服務(wù)模塊調(diào)用關(guān)聯(lián)信息相對應(yīng)的一個或多個調(diào)用實例,其中,所述調(diào)用實例中包括服務(wù)模塊、所述服務(wù)模塊的所屬應(yīng)用及其服務(wù)器、所述服務(wù)模塊的調(diào)用應(yīng)用及其服務(wù)器之間的對應(yīng)調(diào)用關(guān)系;在步驟S6’中,所述處理設(shè)備對所述調(diào)用實例進行聚合,以生成一個或多個映射數(shù)據(jù)。
其中,所述方法的步驟S1’、步驟S2’、步驟S3’與圖3所示對應(yīng)步驟相同或基本相同,故此處不再贅述,并通過引用的方式包含于此。
在步驟S5’中,所述處理設(shè)備根據(jù)所述服務(wù)模塊調(diào)用關(guān)聯(lián)信息,提取與所述服務(wù)模塊調(diào)用關(guān)聯(lián)信息相對應(yīng)的一個或多個調(diào)用實例,其中,所述調(diào)用實例中包括服務(wù)模塊、所述服務(wù)模塊的所屬應(yīng)用及其服務(wù)器、所述服務(wù)模塊的調(diào)用應(yīng)用及其服務(wù)器之間的對應(yīng)調(diào)用關(guān)系。
具體地,在步驟S5’中,所述處理設(shè)備根據(jù)所述服務(wù)模塊調(diào)用關(guān)聯(lián)信息,獲取一個應(yīng)用的配置中包含了哪些模塊、以及這些模塊所對應(yīng)的尋址方式;然后根據(jù)所述服務(wù)模塊調(diào)用關(guān)聯(lián)信息所調(diào)用的服務(wù)模塊、所述服務(wù)模塊的所屬應(yīng)用以及所屬應(yīng)用所在的服務(wù)器、所述服務(wù)模塊的調(diào)用應(yīng)用以及所調(diào)用應(yīng)用的所在服務(wù)器等信息,提取與所述服務(wù)模塊調(diào)用關(guān)聯(lián)信息相對應(yīng)的一個或多個調(diào)用實例。
例如,所述服務(wù)模塊為B,其是應(yīng)用A的一個模塊,則所述應(yīng)用A為所述服務(wù)模塊B的所屬應(yīng)用;所述應(yīng)用A在服務(wù)器A1、A2、A3中,則所屬應(yīng)用所在的服務(wù)器即為服務(wù)器A1、A2、A3。所述服務(wù)模塊B被應(yīng)用C所提供,則所述服務(wù)模塊B的調(diào)用應(yīng)用為所述應(yīng)用C;所述應(yīng)用C由服務(wù)器C1、C2、C3提供,因此,所述調(diào)用應(yīng)用所在的服務(wù)器為服務(wù)器C1、C2、C3。
在步驟S5’中,所述處理設(shè)備根據(jù)上述調(diào)用關(guān)系,以所述服務(wù)模塊B為中心,提取出與其相對應(yīng)的調(diào)用關(guān)系,即在應(yīng)用A(服務(wù)器A1、A2、A3)中命名為B的服務(wù)模塊由應(yīng)用C(服務(wù)器C1、C2、C3)所提供。
本領(lǐng)域技術(shù)人員應(yīng)能理解,上述說明僅為示例,并非對本發(fā)明的限制。一個服務(wù)模塊可以對應(yīng)于多條調(diào)用實例,如所述服務(wù)模塊B還可以存在于應(yīng)用D(服務(wù)器D1)中,并被應(yīng)用C(服務(wù)器C1、C2)與應(yīng)用E(服務(wù)器E1)所提供等。
在步驟S6’中,所述處理設(shè)備對所述調(diào)用實例進行聚合,以生成一個或多個映射數(shù)據(jù)。
具體地,在步驟S6’中,所述處理設(shè)備對上述一條或多條調(diào)用實例進行聚合,根據(jù)其所對應(yīng)的調(diào)用關(guān)系來生成一個或多個映射數(shù)據(jù)。所述映射數(shù)據(jù)可以以服務(wù)模塊為中心,或是以其他相應(yīng)的數(shù)據(jù)為中心等。
優(yōu)選地,在步驟S6’中,所述處理設(shè)備包括根據(jù)所述調(diào)用實例中的至少任一個維度,對所述調(diào)用實例進行聚合,以生成一個或多個映射數(shù)據(jù),其中,所述維度包括所述服務(wù)模塊、所述服務(wù)模塊的所屬應(yīng)用及其服務(wù)器、所述服務(wù)模塊的調(diào)用應(yīng)用及其服務(wù)器之中的至少任一項。
具體地,在步驟S6’中,所述處理設(shè)備在進行聚合的過程中,可以基于所述調(diào)用實例中的至少任一個維度來進行聚合。例如,以所述服務(wù)模塊為維度,則以所述服務(wù)模塊為中心,一個服務(wù)模塊可對應(yīng)于多個所述服務(wù)模塊的所屬應(yīng)用及其服務(wù)器、所述服務(wù)模塊的調(diào)用應(yīng)用及其服務(wù)器的映射關(guān)系;或者,以所述服務(wù)模塊的所屬應(yīng)用為中心,則將該所屬應(yīng)用中所包含的多個服務(wù)模塊以及所述服務(wù)模塊的調(diào)用應(yīng)用及其服務(wù)器作為聚合的內(nèi)容等。
當(dāng)各個應(yīng)用或各個應(yīng)用中的服務(wù)模塊開始運行時,能夠生成服務(wù)調(diào)用狀態(tài)信息;所述服務(wù)調(diào)用狀態(tài)信息可以基于所述映射數(shù)據(jù)來進行輔助分析等。繼上例,若在應(yīng)用A(服務(wù)器A1、A2、A3)中命名為B的服務(wù)模塊由應(yīng)用C(服務(wù)器C1、C2、C3)所提供,則當(dāng)應(yīng)用A中采集到的日志內(nèi)容為:模塊B調(diào)用失敗或成功比例異常時,則可得知應(yīng)用A與應(yīng)用C的交互異常,進一步地,還可以根據(jù)模塊B的具體路由表確定日志中描述的調(diào)用使用了哪一條路由,使用了何種交互協(xié)議,實際訪問是否臨近超時限制等,而上述信息通常在日志中并不完整,必須需要基于所述映射數(shù)據(jù)來對上述信息進行獲取。
優(yōu)選地,所述方法還包括步驟S7’(未示出)、步驟S8’(未示出)、步驟S9’(未示出)、步驟S10’(未示出)。
其中,在步驟S7’中,所述處理設(shè)備獲取一條或多條服務(wù)調(diào)用狀態(tài)信息;在步驟S8’中,所述處理設(shè)備從所述服務(wù)調(diào)用狀態(tài)信息中,提取一種或多種服務(wù)標識數(shù)據(jù),其中,所述服務(wù)標識數(shù)據(jù)包括服務(wù)名稱類、接口類、名字服務(wù)類中的至少任一項;在步驟S9’中,所述處理設(shè)備根據(jù)所述映射數(shù)據(jù),對所述服務(wù)調(diào)用狀態(tài)信息進行匹配;在步驟S10’中,所述處理設(shè)備根據(jù)匹配后的所述服務(wù)調(diào)用狀態(tài)信息,更新所述服務(wù)模塊調(diào)用關(guān)聯(lián)信息。
具體地,在步驟S7’中,所述處理設(shè)備可以根據(jù)系統(tǒng)歷史日志,或根據(jù)應(yīng)用在運行過程中所實時生成的日志等,獲取一條或多條服務(wù)調(diào)用狀態(tài)信息;其中,所述服務(wù)調(diào)用狀態(tài)信息反應(yīng)了系統(tǒng)運行過程中各個模塊間的調(diào)用關(guān)系。
在步驟S8’中,所述處理設(shè)備根據(jù)預(yù)定的調(diào)用規(guī)則,基于調(diào)用關(guān)鍵字,從所述服務(wù)調(diào)用狀態(tài)信息中,提取一種或多種服務(wù)標識數(shù)據(jù),例如,服務(wù)名稱類、接口類、名字服務(wù)類中的至少任一項所對應(yīng)的數(shù)據(jù)。
然后,在步驟S9’中,所述處理設(shè)備根據(jù)所述映射數(shù)據(jù)中所對應(yīng)的映射關(guān)系,將所述服務(wù)標識數(shù)據(jù)與所述映射關(guān)系中的內(nèi)容進行匹配,從而實現(xiàn)對所述服務(wù)調(diào)用狀態(tài)信息的匹配。
最后,在步驟S10’中,所述處理設(shè)備根據(jù)匹配后的所述服務(wù)調(diào)用狀態(tài)信息,可將所述服務(wù)調(diào)用狀態(tài)信息匯聚為應(yīng)用之間的關(guān)聯(lián),以更新所述服務(wù)模塊調(diào)用關(guān)聯(lián)信息,作為無侵入性的數(shù)據(jù)采集,以解決低侵入性trace難以推廣的問題。
在此,本領(lǐng)域技術(shù)人員應(yīng)能理解,在步驟S10’中,所述處理設(shè)備對所述服務(wù)模塊調(diào)用關(guān)聯(lián)信息的更新,可以是基于原服務(wù)模塊調(diào)用關(guān)聯(lián)信息的結(jié)構(gòu)而進行的,如原服務(wù)模塊調(diào)用關(guān)聯(lián)數(shù)據(jù)以應(yīng)用為中心,則更新后的數(shù)據(jù)也以應(yīng)用為中心;也可以是僅以所述服務(wù)調(diào)用狀態(tài)信息的結(jié)構(gòu)來進行,如原服務(wù)模塊調(diào)用關(guān)聯(lián)信息以服務(wù)模塊為中心,而所述服務(wù)調(diào)用狀態(tài)信息則以應(yīng)用為中心等。
更優(yōu)選地,所述方法還包括步驟S11’(未示出),其中,在步驟S11’中,所述處理設(shè)備對匹配后的所述服務(wù)調(diào)用狀態(tài)信息進行聚合;在步驟S10’中,所述處理設(shè)備根據(jù)所述聚合后的所述服務(wù)調(diào)用狀態(tài)信息,更新所述服務(wù)模塊調(diào)用關(guān)聯(lián)信息。
具體地,在步驟S11’中,所述處理設(shè)備根據(jù)所述服務(wù)調(diào)用狀態(tài)信息所對應(yīng)的響應(yīng)時間、狀態(tài)碼等信息,對匹配后的所述服務(wù)調(diào)用狀態(tài)信息進行聚合;優(yōu)選地,所述聚合可基于預(yù)定的周期而周期性處理。
在步驟S10’中,所述處理設(shè)備則根據(jù)所述聚合后的所述服務(wù)調(diào)用狀態(tài)信息,更新所述服務(wù)模塊調(diào)用關(guān)聯(lián)信息,從而可以獲得全量日志。在此,所述更新方式與前述步驟S10’的更新方式相同或相似,故在此不再贅述,并通過引用的方式包含于此。
需要注意的是,本發(fā)明可在軟件和/或軟件與硬件的組合體中被實施,例如,可采用專用集成電路(ASIC)、通用目的計算機或任何其他類似硬件設(shè)備來實現(xiàn)。在一個實施例中,本發(fā)明的軟件程序可以通過處理器執(zhí)行以實現(xiàn)上文所述步驟或功能。同樣地,本發(fā)明的軟件程序(包括相關(guān)的數(shù)據(jù)結(jié)構(gòu))可以被存儲到計算機可讀記錄介質(zhì)中,例如,RAM存儲器,磁或光驅(qū)動器或軟磁盤及類似設(shè)備。另外,本發(fā)明的一些步驟或功能可采用硬件來實現(xiàn),例如,作為與處理器配合從而執(zhí)行各個步驟或功能的電路。
另外,本發(fā)明的一部分可被應(yīng)用為計算機程序產(chǎn)品,例如計算機程序指令,當(dāng)其被計算機執(zhí)行時,通過該計算機的操作,可以調(diào)用或提供根據(jù)本發(fā)明的方法和/或技術(shù)方案。而調(diào)用本發(fā)明的方法的程序指令,可能被存儲在固定的或可移動的記錄介質(zhì)中,和/或通過廣播或其他信號承載媒體中的數(shù)據(jù)流而被傳輸,和/或被存儲在根據(jù)所述程序指令運行的計算機設(shè)備的工作存儲器中。在此,根據(jù)本發(fā)明的一個實施例包括一個裝置,該裝置包括用于存儲計算機程序指令的存儲器和用于執(zhí)行程序指令的處理器,其中,當(dāng)該計算機程序指令被該處理器執(zhí)行時,觸發(fā)該裝置運行基于前述根據(jù)本發(fā)明的多個實施例的方法和/或技術(shù)方案。
對于本領(lǐng)域技術(shù)人員而言,顯然本發(fā)明不限于上述示范性實施例的細節(jié),而且在不背離本發(fā)明的精神或基本特征的情況下,能夠以其他的具體形式實現(xiàn)本發(fā)明。因此,無論從哪一點來看,均應(yīng)將實施例看作是示范性的,而且是非限制性的,本發(fā)明的范圍由所附權(quán)利要求而不是上述說明限定,因此旨在將落在權(quán)利要求的等同要件的含義和范圍內(nèi)的所有變化涵括在本發(fā)明內(nèi)。不應(yīng)將權(quán)利要求中的任何附圖標記視為限制所涉及的權(quán)利要求。此外,顯然“包括”一詞不排除其他單元或步驟,單數(shù)不排除復(fù)數(shù)。裝置權(quán)利要求中陳述的多個單元或裝置也可以由一個單元或裝置通過軟件或者硬件來實現(xiàn)。第一,第二等詞語用來表示名稱,而并不表示任何特定的順序。