欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

對分布式應用程序的監(jiān)測的制作方法

文檔序號:6348741閱讀:278來源:國知局
專利名稱:對分布式應用程序的監(jiān)測的制作方法
對分布式應用程序的監(jiān)測背景當軟件應用程序跨各種物理組件分布時會難以監(jiān)測它們。此外,各個組件可能不可被操作,不同的組件可以處于不同的企業(yè)操作團隊的管轄下。應用程序也可以包括多種技術(shù)。雖然分布式應用程序可以是異質(zhì)的,但是,對于分布式應用程序的監(jiān)測系統(tǒng)常常是技術(shù)專用的(例如,某一系統(tǒng)可以監(jiān)測Java應用程序組件,但不可監(jiān)測.NET應用程序組件)。 另外,監(jiān)測系統(tǒng)可能對正在被監(jiān)測的分布式應用程序的性能產(chǎn)生負面影響。即,為了監(jiān)測分布式應用程序上的每一事務(wù),監(jiān)測系統(tǒng)可能會引入重大的處理和存儲器開銷,干擾操作或顯著地影響分布式應用程序的性能。這樣的性能影響在實時、幾乎實時、或任務(wù)關(guān)鍵的分布式應用程序中可能是有問題的。

發(fā)明內(nèi)容
本公開描述了對于分布式應用程序的監(jiān)測系統(tǒng)。對各種硬件和軟件分布式應用程序組件(如數(shù)據(jù)庫、服務(wù)器以及web服務(wù))進行監(jiān)視得到支持。對諸如.NET、Java、Wind0WS 通信基礎(chǔ)(WCF)、因特網(wǎng)信息服務(wù)(IIS)、基于Windows的技術(shù)、以及基于UNIX的技術(shù)之類的多種技術(shù)進行監(jiān)視也得到支持。監(jiān)測系統(tǒng)包括技術(shù)不可知的攔截器管理器以及能夠攔截由分布式應用程序的組件所發(fā)送的和接收到的消息的一個或多個技術(shù)專用的攔截器。技術(shù)專用的攔截器中的每一個都是特定技術(shù)所專用的,并被附加到與特定技術(shù)相關(guān)聯(lián)的分布式應用程序組件(例如,.NET攔截器被附加到包括.NET應用程序或服務(wù)的分布式應用程序組件)。技術(shù)專用的攔截器可以被配置成跟蹤對特定函數(shù)的調(diào)用,沿著分布式應用程序的特定執(zhí)行路徑跟蹤活動,或跟蹤分布式應用程序中發(fā)生的事件(例如,軟件異?;驁蟾娴腻e誤)。技術(shù)專用的攔截器基于攔截的消息來生成工作項,并將工作項發(fā)送到技術(shù)不可知的攔截器管理器。技術(shù)不可知的攔截器管理器可以調(diào)度接收到的工作項供執(zhí)行。例如,技術(shù)不可知的攔截器管理器可以將分布式應用程序的已發(fā)現(xiàn)的依賴關(guān)系存儲在存儲位置,將活動信息存儲在該存儲位置,并將事件的發(fā)生報告給諸如IT管理員或管理應用程序之類的客戶端。 技術(shù)不可知的攔截器管理器也可以包括節(jié)制功能,如工作項排隊、依賴關(guān)系緩存、后臺線程化以及垃圾回收,以減輕監(jiān)測系統(tǒng)的性能影響。提供本發(fā)明內(nèi)容是為了以精簡的形式介紹將在以下具體實施方式
中進一步描述的一些概念。本發(fā)明內(nèi)容并不旨在標識出所要求保護的主題的關(guān)鍵特征或必要特征,也不旨在用于限定所要求保護的主題的范圍。


圖1是監(jiān)測分布式應用程序的系統(tǒng)的特定實施例的框圖;圖2是監(jiān)測分布式應用程序的系統(tǒng)的另一特定實施例的框圖;圖3是可以和監(jiān)測分布式應用程序的系統(tǒng)一起使用的身份監(jiān)測器的特定實施例的框圖4是示出了監(jiān)測分布式應用程序的消息攔截的框圖;圖5是監(jiān)測分布式應用程序的方法的特定實施例的流程圖;圖6是監(jiān)測分布式應用程序的方法的另一特定實施例的流程圖;圖7是監(jiān)測分布式應用程序的方法的特定實施例的流程圖;圖8是監(jiān)測分布式應用程序的方法的另一特定實施例的流程圖;圖9是監(jiān)測分布式應用程序的方法的另一特定實施例的流程圖;圖10是在技術(shù)不可知的攔截器管理器上有選擇地調(diào)度工作項的方法的特定實施例的流程圖;圖11是示出了分布式計算環(huán)境的特定實施例的一般示意圖;以及圖12是一種計算環(huán)境的框圖,包括可以支持如圖1-11所示的計算機實現(xiàn)的方法、 計算機程序產(chǎn)品以及系統(tǒng)組件的實施例的計算設(shè)備。
具體實施例方式在一特定實施例中,公開了包括標識分布式應用程序的多個組件以及標識與多個組件中的特定組件相關(guān)聯(lián)的特定技術(shù)的方法。該方法還包括基于所標識的特定技術(shù)來將技術(shù)專用的攔截器附加到該特定組件,使用附加的技術(shù)專用的攔截器來攔截由該特定組件所發(fā)送的或接收到的消息。該方法還包括基于攔截的消息,生成至少一個潛在的工作項,并基于該至少一個潛在的工作項對分布式應用程序的性能的預測影響,來確定是否要調(diào)度該至少一個潛在工作項以便執(zhí)行。在一特定實施例中,該至少一個潛在工作項是響應于確定特定指令或指令集要求處理而生成的可執(zhí)行的工作項。在另一特定實施例中,公開了包括多個技術(shù)專用的攔截器的系統(tǒng),包括第一技術(shù)專用的攔截器和第二技術(shù)專用的攔截器以及技術(shù)不可知的攔截器管理器。第一技術(shù)專用的攔截器與第一技術(shù)相關(guān)聯(lián),第二技術(shù)專用的攔截器與不同于第一技術(shù)的第二技術(shù)相關(guān)聯(lián)。 第一技術(shù)專用的攔截器被配置成跟蹤與第一技術(shù)相關(guān)聯(lián)的第一分布式應用程序組件的操作,包括攔截由第一分布式應用程序組件所發(fā)送的消息以及接收到的消息。第一技術(shù)專用的攔截器還被配置成基于所跟蹤的第一分布式應用程序組件的操作來生成工作項,并將工作項發(fā)送到技術(shù)不可知的攔截器管理器。第二技術(shù)專用的攔截器被配置成跟蹤與第二技術(shù)相關(guān)聯(lián)的第二分布式應用程序組件的操作,包括攔截由第二分布式應用程序組件所發(fā)送的消息以及接收到的消息。第二技術(shù)專用的攔截器還被配置成基于所跟蹤的第二分布式應用程序組件的操作來生成工作項,并將工作項發(fā)送到技術(shù)不可知的攔截器管理器。技術(shù)不可知的攔截器管理器包括多個工作項管理器,包括與第一技術(shù)專用的攔截器相關(guān)聯(lián)的第一工作項管理器,以及與第二技術(shù)專用的攔截器相關(guān)聯(lián)的第二工作項管理器。每一工作項管理器都與特定技術(shù)專用的攔截器相關(guān)聯(lián),并被配置成從特定技術(shù)專用的攔截器接收工作項并將接收到的工作項排隊在工作項隊列中。每一工作項管理器還被配置成將由特定技術(shù)專用的攔截器跟蹤的特定工作項對分布式應用程序組件的性能的影響與可以接受的性能影響閾值進行比較。每一工作項管理器還被配置成當影響小于可以接受的性能影響閾值時,調(diào)度特定工作項以便執(zhí)行,而當影響大于可以接受的性能影響閾值時,丟棄特定工作項,而不調(diào)度特定工作項來執(zhí)行。在另一特定實施例中,公開了計算機可讀介質(zhì)。該計算機可讀介質(zhì)包括當由計算
6機執(zhí)行時導致計算機在技術(shù)不可知的攔截器管理器上從被附加到分布式應用程序的第一組件的第一技術(shù)專用的攔截器接收第一工作項的指令。第一技術(shù)專用的攔截器是第一技術(shù)專用的,并且,第一組件與第一技術(shù)相關(guān)聯(lián)。該計算機可讀介質(zhì)還包括當由計算機執(zhí)行時導致計算機在技術(shù)不可知的攔截器管理器上從被附加到分布式應用程序的第二組件的第二技術(shù)專用的攔截器接收第二工作項的指令。第二技術(shù)專用的攔截器是第二技術(shù)專用的。第二組件與第二技術(shù)相關(guān)聯(lián),并且,第二技術(shù)不同于第一技術(shù)。該計算機可讀介質(zhì)還包括當由計算機執(zhí)行時導致計算機基于第一工作項對分布式應用程序的第一影響并基于第二工作項對分布式應用程序的第二影響,來確定是否要調(diào)度第一工作項和第二工作項以便執(zhí)行的指令。圖1是監(jiān)測分布式應用程序102的系統(tǒng)100的特定實施例的框圖。分布式應用程序102包括諸如第一計算設(shè)備104上的Windows通信基礎(chǔ)(WCF)組件110和第二計算設(shè)備106上的.NET組件120之類的組件。第一計算設(shè)備104和第二計算設(shè)備106是分布式的(例如,使用單獨的硬件操作或彼此相距較遠)。分布式應用程序102還包括附加到組件的技術(shù)專用的攔截器,如附加到WCF組件110的WCF攔截器112和附加到.NET組件120 的.NET攔截器122。分布式應用程序102的組件能夠發(fā)送和接收消息,而附加到組件的技術(shù)專用的攔截器能夠攔截消息。技術(shù)專用的攔截器也可以能夠基于攔截的消息生成工作項,并將所生成的工作項發(fā)送到技術(shù)不可知的攔截器管理器130。分布式應用程序102的每一組件都可以被配置成將消息發(fā)送到分布式應用程序 102的其他組件,并從分布式應用程序102的其他組件接收消息。例如,WCF組件110和.NET 組件120可以被配置成向彼此發(fā)送消息并從彼此接收消息。在一特定實施例中,消息是可擴展標記語言(XML)消息。每一技術(shù)專用的攔截器都可以被配置成跟蹤對技術(shù)專用的攔截器被附加到的組件上的特定函數(shù)的調(diào)用。例如,WCF攔截器112可以被配置成跟蹤對WCF組件110上的特定函數(shù)的調(diào)用。在一特定實施例中,特定函數(shù)包括處于分布式應用程序102的不同的組件上的源操作和目標操作。例如,特定函數(shù)可以具有WCF組件110上的源操作以及.NET組件 120上的目標操作。然后,WCF攔截器112可以通過攔截指出對特定函數(shù)的調(diào)用的消息來發(fā)現(xiàn)WCF組件110上的源操作和.NET組件120上的目標操作之間的依賴關(guān)系。每一技術(shù)專用的攔截器也可以被配置成監(jiān)測分布式應用程序102的包括技術(shù)專用的攔截器被附加到的組件的特定執(zhí)行路徑上的活動。例如,WCF攔截器112可以攔截WCF 組件110和.NET組件120之間的消息,并確定攔截的消息表示沿著包括WCF組件110的特定執(zhí)行路徑的活動。每一技術(shù)專用的攔截器也可以被配置成跟蹤在分布式應用程序102上發(fā)生的特定事件(例如,軟件異?;驁蟾娴腻e誤)。在一特定實施例中,特定事件是在特定時間內(nèi)跟蹤的。例如,WCF攔截器112可以跟蹤一分鐘內(nèi)在WCF組件110上發(fā)生的軟件異常的數(shù)量, 以便計算WCF組件110上的每分鐘異常率??闪磉x地,可以連續(xù)地跟蹤特定事件。例如, WCF攔截器112可以攔截WCF組件110和.NET組件120之間的攔截,并根據(jù)攔截的消息來確定在WCF組件110或者.NET組件120上發(fā)生了軟件異常(例如,事件)。每一技術(shù)專用的攔截器都可以被配置成基于在技術(shù)專用的攔截器上攔截的消息生成工作項,并將所生成的工作項發(fā)送到技術(shù)不可知的攔截器攔截器130。例如,WCF攔截器112可以生成包括存儲WCF組件110上的源操作和.NET組件120上的目標操作之間的已發(fā)現(xiàn)的依賴關(guān)系的指令的工作項,并將該工作項發(fā)送到技術(shù)不可知的攔截器管理器130。 作為另一個示例,WCF攔截器112可以生成包括存儲涉及包括WCF組件110的特定執(zhí)行路徑的活動信息的指令的工作項,并將該工作項發(fā)送到技術(shù)不可知的攔截器管理器130。作為再一個示例,WCF攔截器112可以生成包括報告WCF組件110上或者.NET組件120上的軟件異常的發(fā)生的指令的工作項,并將該工作項發(fā)送到技術(shù)不可知的攔截器管理器130。. NET攔截器122可以類似地生成工作項??闪磉x地,WCF攔截器112可以生成包括所有三個任務(wù)的指令的單一工作項。應該注意,多個攔截器也可以被附加到單個組件。例如,當web服務(wù)器包括.NET 技術(shù)和WCF技術(shù)兩者時,諸如圖1的.NET攔截器122之類的.NET攔截器和諸如圖1的WCF 攔截器112之類的WCF攔截器兩者都可以被附加到分布式應用程序102的web服務(wù)器。技術(shù)不可知的攔截器管理器130可以位于分布式應用程序102的web服務(wù)中或位于分布式應用程序102的管理應用程序中。技術(shù)不可知的攔截器管理器130可包括多個工作項管理器,其中,多個工作項管理器中的每一個都被配置成從特定技術(shù)專用的攔截器接收工作項。例如,在圖1中所示出的實施例中,技術(shù)不可知的攔截器管理器包括被配置成從 WCF攔截器112接收工作項的WCF工作項管理器140,以及被配置成從.NET攔截器122接收工作項的.NET工作項管理器150。工作項管理器中的每一個也都可以被配置成將工作項存儲在工作項隊列中。例如,WCF工作項管理器142可以將工作項存儲在WCF工作項隊列 142中,而.NET工作項管理器可以將工作項存儲在.NET工作項隊列152中。在一特定實施例中,工作項按照工作項由技術(shù)不可知的攔截器管理器130接收的順序被存儲在工作項隊列中。例如,當從WCF攔截器112接收到的第一工作項在從WCF攔截器接收到的第二工作項之前被技術(shù)不可知的攔截器管理器130接收到時,第一工作項可以被存儲在WCF工作項隊列142中,排在第二工作項之前。工作項管理器中的每一個還被配置成當工作項隊列已滿時丟棄接收到的工作項。例如,當WCF工作項管理器140確定WCF工作項隊列142已滿時(例如,當WCF工作項隊列142的大小等于WCF工作項管理器140已知的最大工作項隊列大小變量時),WCF工作項管理器140可以丟棄接收到的工作項。工作項管理器中的每一個都可包括被配置成調(diào)度排隊的工作項以便執(zhí)行的工作項調(diào)度邏輯。例如,WCF工作項管理器140可包括WCF工作項調(diào)度邏輯144,而.NET工作項管理器150可包括.NET工作項調(diào)度邏輯154。在一特定實施例中,WCF工作項調(diào)度邏輯144 或.NET工作項調(diào)度邏輯IM可以基于所預測的特定工作項對分布式應用程序102的性能的影響來確定是否要調(diào)度該特定工作項以便執(zhí)行。例如,當所預測的特定工作項的影響低于可以接受的性能影響閾值時(例如,的可以接受的處理器使用率影響、1秒的可以接受的消息延遲影響、或三個可執(zhí)行操作的可以接受的執(zhí)行隊列長度影響),WCF工作項調(diào)度邏輯144可以調(diào)度特定工作項以便執(zhí)行?;蛘撸琖CF工作項調(diào)度邏輯144可以基于所預測的特定工作項對WCF組件110的影響來確定是否要調(diào)度特定工作項以便執(zhí)行。在一特定實施例中,技術(shù)專用的攔截器被配置成向工作項管理器請求空工作項, 通過將信息和執(zhí)行指令存儲在空工作項中來生成工作項??梢岳斫猓谶@樣的實施例中, 工作項管理器可以通過拒絕對空工作項的請求來降低在特定分布式應用程序組件上監(jiān)測的性能影響。例如,在發(fā)現(xiàn).NET組件120的依賴關(guān)系時,.NET攔截器122可以向.NET工作項管理器150請求空工作項。如果.NET工作項管理器150允許請求并將空工作項發(fā)送到.NET攔截器122,則.NET攔截器122可以通過將發(fā)現(xiàn)的依賴關(guān)系存儲在空工作項中來生成工作項,并將所生成的工作項發(fā)送到.NET工作項管理器150。在一特定實施例中,工作項具有有效期,如果在有效期內(nèi)它們沒有被調(diào)度來執(zhí)行,則將它們從工作項隊列中丟棄。例如,如果由.NET攔截器122所生成的工作項沒有在由.NET工作項管理器150生成的10秒的空工作項內(nèi)被調(diào)度,則可以它將過期并可以被丟棄。在一特定實施例中,諸如工作項管理器140和工作項管理器150之類的工作項管理器可以根據(jù)下列示例性C#類模板和接口來實現(xiàn)
public class WorkItemManager<T> where T : class, IWorkItem, new ()
public T RequestWorkItem();
public void QueueWorkItem(T workltem);
public void ReturnWorkItem(T workltem);
public interface IWorkItem
void Initialize (); void SetupO ; void DoProcess(); void Cleanup ();
}在操作中,技術(shù)專用的攔截器可以被附加到分布式應用程序102的組件。例如, WCF攔截器112可以被附加到WCF組件110,而.NET攔截器122可以被附加到.NET組件 120。每一技術(shù)專用的攔截器可以被配置成在分布式應用程序102中跟蹤函數(shù)調(diào)用、跟蹤活動信息、跟蹤性能事件或其任何組合。例如,WCF攔截器112可以被配置成跟蹤對WCF組件 110上的特定WCF函數(shù)的調(diào)用,跟蹤分布式應用程序102的包括WCF組件110的特定執(zhí)行路徑上的活動信息,以及跟蹤在WCF組件110上發(fā)生的軟件異常。類似地,.NET攔截器122 可以被配置成跟蹤對.NET組件120上的特定.NET函數(shù)的調(diào)用,跟蹤涉及分布式應用程序 102的包括.NET組件120的特定執(zhí)行路徑的活動信息,以及跟蹤在.NET組件120上發(fā)生的軟件異常。在操作過程中,技術(shù)專用的攔截器可以攔截分布式應用程序102的各種組件之間的一個或多個消息,并可以基于一個或多個攔截的消息來生成工作項。技術(shù)專用的攔截器也可以將所生成的工作項發(fā)送到技術(shù)不可知的攔截器管理器130。例如,WCF攔截器112可以攔截由WCF組件110發(fā)送到.NET組件120的消息,基于攔截的消息,來生成工作項,并將工作項發(fā)送到技術(shù)不可知的攔截器管理器130。在一特定實施例中,攔截的消息表示W(wǎng)CF組件110上的源操作和.NET組件120上的目標操作之間的依賴關(guān)系,工作項包括存儲依賴關(guān)系的指令。在另一特定實施例中,攔截的消息包括涉及WCF攔截器112被配置成跟蹤的分布式應用程序102的執(zhí)行路徑的活動信息,而工作項包括存儲活動信息的指令。在另一特定實施例中,攔截的消息指出在WCF組件110上或者.NET組件120上發(fā)生了軟件異常,而工作項包括報告軟件異常的發(fā)生的指令。當技術(shù)不可知的攔截器管理器130從技術(shù)專用的攔截器接收到工作項時,工作項管理器(例如,WCF工作項管理器140或.NET工作項管理器150)可以將接收到的工作項添加到項隊列中(例如,WCF工作項隊列142或.NET工作項隊列152)。對于WCF工作項隊列142中的每一個潛在的工作項,WCF工作項調(diào)度邏輯144可以基于所預測的潛在工作項對分布式應用程序102的性能的影響來確定是否要調(diào)度潛在工作項以便執(zhí)行。當所預測的潛在工作項的影響低于可以接受的性能影響閾值時,WCF工作項調(diào)度邏輯144可以調(diào)度潛在工作項以便執(zhí)行。例如,當所預測的潛在工作項對分布式應用程序102上的消息延遲的影響小于1秒時,可以調(diào)度潛在工作項。當特定工作項的潛在影響高于可以接受的性能影響閾值時,WCF工作項調(diào)度邏輯144可以從WCF工作項隊列142 中丟棄潛在工作項。例如,當所預測的潛在工作項對分布式應用程序102上的消息延遲的影響超過1秒時,可以丟棄潛在工作項。類似地,對于.NET工作項隊列152中的每一個潛在工作項,.NET工作項調(diào)度邏輯可以基于所預測的潛在工作項對分布式應用程序102的性能的影響,來可選擇性地調(diào)度潛在工作項??梢岳斫?,可以使用圖1的系統(tǒng)100來監(jiān)測跨各種組件分布的并且包括各種技術(shù)的分布式應用程序。還可以理解,圖1的系統(tǒng)100包括節(jié)制功能(例如,拒絕對空工作項的請求、限制工作項隊列的大小、丟棄具有所預測的的對性能的高度影響的工作項、并在有效期之后讓工作項自動過期),以減輕這樣的監(jiān)測對分布式應用程序的總體性能影響。因此, 可以理解,圖1的系統(tǒng)100可以根據(jù)需求犧牲對于性能的監(jiān)測準確性,以使得實時的、幾乎實時、或任務(wù)關(guān)鍵的分布式應用程序的操作不被圖1的系統(tǒng)100干擾。圖2是監(jiān)測分布式應用程序201的系統(tǒng)200的另一特定實施例的框圖。分布式應用程序201包括多個技術(shù)專用的攔截器,如附加到.NET組件205的.NET攔截器202,附加到WCF組件206的WCF攔截器203,以及附加到Java組件207的Java攔截器204。每一技術(shù)專用的攔截器可以被配置成將工作項發(fā)送到技術(shù)不可知的攔截器管理器230。在一說明性實施例中,.NET攔截器202包括圖1的.NET攔截器122,WCF攔截器203包括圖1的WCF 攔截器112,技術(shù)不可知的攔截器管理器230包括圖1的技術(shù)不可知的攔截器管理器130。由技術(shù)專用的攔截器所生成的并發(fā)送到技術(shù)不可知的攔截器管理器230的工作項可包括存儲分布式應用程序201的已發(fā)現(xiàn)的依賴關(guān)系、存儲涉及分布式應用程序201的特定執(zhí)行路徑的活動信息、報告在分布式應用程序201上發(fā)生了事件、或其任何組合的指令。技術(shù)不可知的攔截器管理器230可包括多個工作項管理器,如工作項管理器對0,其中, 每一工作項管理器都被配置成將從特定技術(shù)專用的攔截器接收到的工作項存儲在諸如工作項隊列242之類的工作項隊列中。例如,工作項管理器240可以是.NET工作項管理器, 并將從.NET攔截器202接收到的工作項存儲在工作項隊列242中。作為另一個示例,工作項管理器240可以是WCF工作項管理器,并將從WCF攔截器203接收到的工作項存儲在工作項隊列242中。作為另一個示例,工作項管理器240可以是Java工作項管理器,并將從 Java攔截器204接收到的工作項存儲在工作項隊列M2中。工作項管理器240也可以包括工作項調(diào)度邏輯對4,其被配置成調(diào)度工作項隊列 242中的工作項一般執(zhí)行,并且一旦工作項被調(diào)度以便執(zhí)行就從工作項隊列M2中刪除工作項。在一特定實施例中,工作項調(diào)度邏輯244可以基于所預測的特定工作項對分布式應用程序201的性能的影響來確定是否要調(diào)度特定工作項以便執(zhí)行。例如,當所預測的特定工作項的影響低于可以接受的性能影響閾值時,工作項調(diào)度邏輯244可以調(diào)度特定工作項以便執(zhí)行。工作項調(diào)度邏輯244可以訪問線程池220,其中,線程池220包括一個或多個前臺線程222和一個或多個后臺線程224。當工作項調(diào)度邏輯244可以訪問線程池220時,工作項調(diào)度邏輯244可以調(diào)度工作項以便在線程池220的前臺線程222中的一個或后臺線程 2M中的一個中執(zhí)行。工作項調(diào)度邏輯244也可以被配置成限制同時執(zhí)行的工作項的數(shù)量, 并限制線程池220的同時執(zhí)行的線程的數(shù)量。技術(shù)不可知的攔截器管理器230上的依賴關(guān)系管理器272可以被配置成執(zhí)行包括存儲已發(fā)現(xiàn)的依賴關(guān)系的指令的工作項。在一特定實施例中,依賴關(guān)系管理器272將已發(fā)現(xiàn)的依賴關(guān)系暫時地收集在依賴關(guān)系緩存282中,并成批地存儲收集的依賴關(guān)系。例如,依賴關(guān)系管理器272可以將已發(fā)現(xiàn)的依賴關(guān)系收集在依賴關(guān)系緩存觀2中,每當依賴關(guān)系緩存觀2的大小到達固定的批量大小(例如,20)時,存儲來自依賴關(guān)系緩存觀2的收集的已發(fā)現(xiàn)的依賴關(guān)系??闪磉x地,依賴關(guān)系管理器272可以將已發(fā)現(xiàn)的依賴關(guān)系收集在依賴關(guān)系緩存觀2中,并在固定時間間隔(例如,120秒)存儲來自依賴關(guān)系緩存觀2的收集的已發(fā)現(xiàn)的依賴關(guān)系。如果由依賴關(guān)系緩存282收集的依賴關(guān)系在有效期內(nèi)沒有被存儲,則它們會過期。依賴關(guān)系管理器272可以通過將一批已發(fā)現(xiàn)的依賴關(guān)系發(fā)送到負責將項存儲在一個或多個存儲位置的存儲服務(wù)290來存儲該批已發(fā)現(xiàn)的依賴關(guān)系。例如,存儲服務(wù)290 可以將已發(fā)現(xiàn)的依賴關(guān)系可以存儲在數(shù)據(jù)庫或某種其他數(shù)據(jù)存儲中。在一特定實施例中, 存儲服務(wù)290可以響應于確定特定依賴關(guān)系先前沒有被存儲而存儲該特定依賴關(guān)系。依賴關(guān)系管理器272也可以被配置成在分布式應用程序201的每一個各個技術(shù)專用的攔截器中打開或關(guān)閉依賴關(guān)系發(fā)現(xiàn)。例如,依賴關(guān)系管理器272可以在.NET攔截器202、WCF攔截器 203以及Java攔截器204中的每一個中打開或關(guān)閉依賴關(guān)系發(fā)現(xiàn)。技術(shù)不可知的攔截器管理器230上的活動管理器270可以被配置成執(zhí)行包括存儲涉及分布式應用程序201的特定執(zhí)行路徑的活動信息的指令的工作項。在一特定實施例中,活動管理器270將這樣的工作項排隊在活動隊列280中,并當活動隊列280滿時丟棄接收到的這樣的工作項?;顒庸芾砥?70可以通過將活動信息從活動隊列觀0中傳輸?shù)酱鎯Ψ?wù)290來存儲活動信息。在一特定實施例中,活動管理器270被配置成在特定技術(shù)專用的攔截器上初始化活動信息收集。例如,當Java組件207通過Java數(shù)據(jù)庫連接(JDBC)與數(shù)據(jù)庫連接時,活動管理器270可以通過指示Java攔截器204跟蹤Java組件207上的包括JDBC調(diào)用的所有消息來跟蹤數(shù)據(jù)庫操作。應該注意,雖然圖2中所示出的特定實施例只示出了一個存儲服務(wù)(即,存儲服務(wù)四0),可由技術(shù)不可知的攔截器管理器230訪問多個存儲服務(wù)。例如,依賴關(guān)系管理器272可以使用第一存儲服務(wù)來存儲已發(fā)現(xiàn)的依賴關(guān)系,而活動管理器270可以使用第二存儲服務(wù)來存儲活動信息。第一存儲服務(wù)和第二存儲服務(wù)可以將數(shù)據(jù)存儲到相同的存儲位置或不同的存儲位置。技術(shù)不可知的攔截器管理器230上的身份監(jiān)測器260可包括對于分布式應用程序 201的每一個組件的身份監(jiān)測器。例如,身份監(jiān)測器260可包括對于分布式應用程序201 的web服務(wù)的端點監(jiān)測器。在一特定實施例中,對于特定組件的身份監(jiān)測器存儲涉及由附加到特定組件的技術(shù)專用的攔截器檢測到的事件(例如,軟件異?;蝈e誤)的數(shù)據(jù)。每一個身份監(jiān)測器都可以具有一個或多個客戶端,而每一個身份監(jiān)測器都可以執(zhí)行包括通過將特定事件的發(fā)生報告到一個或多個客戶端來報告特定事件的發(fā)生的指令的工作項。例如, 當.NET攔截器202生成包括報告.NET組件205上的錯誤的指令的工作項,對于.NET組件 205的身份監(jiān)測器可以通過向.NET組件205的身份監(jiān)測器的客戶端報告錯誤來執(zhí)行工作項。每一個身份監(jiān)測器都可以將事件數(shù)據(jù)存儲在監(jiān)測樹中,該監(jiān)測樹包括分配的監(jiān)測器,如組件監(jiān)測器、端點監(jiān)測器、活動監(jiān)測器、業(yè)務(wù)角度監(jiān)測器、操作調(diào)用監(jiān)測器、儀器監(jiān)測器或其任何組合。此處參考圖3進一步描述了監(jiān)測樹。技術(shù)不可知的攔截器管理器230也可以包括垃圾回收器觀4。垃圾回收器觀4可以被配置成以固定時間間隔運行,并解除分配在固定時間間隔內(nèi)沒有被使用的監(jiān)測器。在一特定實施例中,技術(shù)不可知的攔截器管理器230包括一個或多個配置設(shè)置 212。可以通過配置文件210來設(shè)置配置設(shè)置212。配置文件210可以被以任何格式(例如,XML)存儲,并可包括對于依賴關(guān)系管理器272、活動管理器270、工作項管理器MO以及垃圾回收器觀4的設(shè)置。例如,配置文件210可以按照XML存儲,并包括下列示例性XML片

CinterceptorManagerConfiguration> <dependencyManager
s torageClient=·’ DependencyS torageClient" submitBatchSize="2" submitFrequency="20" cacheExpiration="60"/> CworkItemManager
maxWorkItemQueueSize="40000" maxWorkItemThreads="2" requestedWorkItemExpiration="20"/> <activityManager storageClient="ActivityStorageClient"/> <garbageCollector
frequency="60"/> </interceptorManagerConfiguration>
12
在一特定實施例中,可以根據(jù)下列示例性C#接口來實現(xiàn)技術(shù)專用的攔截器public interface IlnterceptorService
bool ProcessDependencyDiscovery(bool turnOn), bool ProcessActivityMonitoring(bool turnOn); Guid SetupInstrument(
stringaddress,stringaction,stringbpXPath,stringbpNamespacestringcounterNamestring counterConfig, int instrumentlnterval); Guid SetupOperationCalllnstrument( string sourceAddress,
string sourceAction, string targetAddress, string targetAction, string bpXPath, string bpNamespace, string counterName, string counterConfig, int instrumentlnterval); Guid SetupActivityInstrument( string address, string action, string bpXPath, string bpNamespace, string counterName, string counterConfig, int instrumentlnterval); InstrumentData [ ] GetInstruments (Guici [] ids) /
public enum InstrumentDataState
InstrumentNotFound,
InstrumentDataValidf
IntrumentProcessingErrorpublic class InstrumentData {
public InstrumentDataState State { get; } public double Value { get; }
public InstrumentValueState ValueState { get; } public DateTime WindowStart { get; } public DateTime WindowEnd { get; }
public enum InstrumentValueState
NotSet,
WindowSet,
Set,
SetWithOverflow
}可以理解,當如上文那樣實現(xiàn)技術(shù)特定攔截器時,可以通過調(diào)用方法 ftOcessD印endencyDiscoveryO (進程依賴關(guān)系發(fā)現(xiàn))來打開或關(guān)閉技術(shù)專用的攔截器上的依賴關(guān)系發(fā)現(xiàn),并通過方法ftOcessActivityMonitoringO (進程活動檢測)來打開或關(guān)閉活動監(jiān)測。此外,還可以通過方法ktupInstrument ()(設(shè)置工具)來設(shè)置事件跟蹤,可以通過方法ktupOperationCalIInstrument ()(設(shè)置操作調(diào)用工具)來設(shè)置函數(shù)調(diào)用跟蹤, 并可以通過方法^^叩々(^&^7111計1~1111161^()(設(shè)置活動工具)來設(shè)置活動跟蹤。在一特定實施例中,技術(shù)不可知的攔截器管理器230可以位于分布式應用程序 201外部的代理208中。在這樣的實施例中,分布式應用程序上的諸如技術(shù)專用的攔截器 202-204之類的技術(shù)專用的攔截器可以被配置成通過外部代理208來跟蹤函數(shù)調(diào)用、跟蹤活動信息以及跟蹤事件。在操作中,可以通過配置文件210來配置技術(shù)不可知的攔截器管理器230。技術(shù)不可知的攔截器管理器230可以標識分布式應用程序201的組件,如.NET組件205、WCF組件 206以及Java組件207。技術(shù)不可知的攔截器管理器230還可以標識與組件中的一個或多個相關(guān)聯(lián)的特定技術(shù),并將技術(shù)專用的攔截器附加到一個或多個組件。例如,技術(shù)不可知的攔截器管理器230可以將.NET攔截器202附加到.NET組件205,將WCF攔截器203附加到 WCF組件206,并將Java攔截器204附加到Java攔截器207。技術(shù)不可知的攔截器管理器 230可以配置技術(shù)專用的攔截器以發(fā)現(xiàn)依賴關(guān)系、跟蹤活動信息以及跟蹤分布式應用程序201中的事件。例如,依賴關(guān)系管理器272可以在.NET攔截器202處打開依賴關(guān)系發(fā)現(xiàn), 并配置.NET攔截器202以跟蹤對.NET組件205上的特定.NET函數(shù)的調(diào)用。作為另一個示例,活動管理器270可以指示Java組件204以跟蹤Java組件207和數(shù)據(jù)庫之間的JDBC 調(diào)用。作為再一個示例,技術(shù)不可知的攔截器管理器230可以配置WCF攔截器203,以報告 WCF組件206上的軟件異常的每一次發(fā)生。技術(shù)專用的攔截器可以攔截分布式應用程序201的各種組件之間的一個或多個消息,并可以基于一個或多個攔截的消息來生成一個或多個工作項。例如,.NET攔截器202 可以攔截涉及對特定.NET函數(shù)的調(diào)用的消息,并發(fā)現(xiàn)WCF組件206上的源操作和.NET組件205上的目標操作之間的依賴關(guān)系。.NET攔截器202可以將相關(guān)的依賴關(guān)系工作項發(fā)送到技術(shù)不可知的攔截器管理器230。作為另一個示例,Java攔截器204可以檢測到Java 組件207已經(jīng)進行了 JDBC調(diào)用,并將相關(guān)的活動工作項發(fā)送到技術(shù)不可知的攔截器管理器 230。作為再一個示例,WCF攔截器203可以檢測到軟件異常在WCF組件206上的發(fā)生,并將相關(guān)的事件工作項發(fā)送到技術(shù)不可知的攔截器管理器230。當技術(shù)不可知的攔截器管理器230從.NET攔截器202接收到依賴關(guān)系工作項時,.NET工作項管理器(例如,當工作項管理器240是.NET工作項管理器時的工作項管理器M0)可以將依賴關(guān)系工作項添加到工作項隊列中(例如,當工作項管理器240是.NET工作項管理器時的工作項隊列M2)。工作項管理器上的工作項調(diào)度邏輯(例如,當工作項管理器240是.NET工作項管理器時的工作項調(diào)度邏輯M4)可以基于所預測的依賴關(guān)系工作項對分布式應用程序201的性能的影響來確定是否要調(diào)度依賴關(guān)系工作項以便執(zhí)行。當所預測的依賴關(guān)系工作項的影響低于可以接受的性能影響閾值時,工作項調(diào)度邏輯2M可以調(diào)度依賴關(guān)系工作項供在線程池220的前臺線程222或后臺線程224中的一個中執(zhí)行。依賴關(guān)系管理器272可以通過將WCF組件206上的源操作和.NET組件205上的目標操作之間的已發(fā)現(xiàn)的依賴關(guān)系添加到依賴關(guān)系緩存觀2中來執(zhí)行依賴關(guān)系工作項。在將已發(fā)現(xiàn)的依賴關(guān)系添加到依賴關(guān)系緩存觀2中之后,依賴關(guān)系管理器272可以通過存儲服務(wù)290存儲已發(fā)現(xiàn)的依賴關(guān)系。可另選地,當所預測的依賴關(guān)系工作項的影響超出可以接受的性能影響閾值時,可以丟棄依賴關(guān)系工作項。當技術(shù)不可知的攔截器管理器230從Java攔截器204接收到活動工作項時,Java 工作項管理器(例如,當工作項管理器240是Java工作項管理器時的工作項管理器M0) 可以將活動工作項添加到工作項隊列中(例如,當工作項管理器240是Java工作項管理器時的工作項隊列M2)。工作項管理器上的工作項調(diào)度邏輯(例如,當工作項管理器240是 Java工作項管理器時的工作項調(diào)度邏輯M4)可以基于所預測的活動工作項對分布式應用程序201的性能的影響來確定是否要調(diào)度活動工作項以便執(zhí)行。當所預測的活動工作項的影響低于可以接受的性能影響閾值時,工作項調(diào)度邏輯244可以調(diào)度活動工作項以便在線程池220的前臺線程222或后臺線程224中的一個中執(zhí)行。活動管理器270可以通過將由 Java組件207作出的JDBC調(diào)用添加到活動隊列觀0中來執(zhí)行活動工作項。在將JDBC調(diào)用添加到活動隊列觀0中之后,活動管理器270可以通過存儲服務(wù)290來存儲JDBC調(diào)用??闪磉x地,當所預測的活動工作項的影響超出可以接受的性能影響閾值時,可以丟棄活動工作項。當技術(shù)不可知的攔截器管理器230從WCF攔截器203接收到事件工作項時,WCF工作項管理器(例如,當工作項管理器240是WCF工作項管理器時的工作項管理器M0)可以將事件工作項添加到工作項隊列中(例如,當工作項管理器240是WCF工作項管理器時的工作項隊列M2)。工作項管理器上的工作項調(diào)度邏輯(例如,當工作項管理器240是WCF 工作項管理器時的工作項調(diào)度邏輯M4)可以基于所預測的事件工作項對分布式應用程序 201的性能的影響來確定是否要調(diào)度事件工作項以便執(zhí)行。當所預測的事件工作項的影響低于可以接受的性能影響閾值時,工作項調(diào)度邏輯244可以調(diào)度事件工作項以便在線程池 220的前臺線程222或后臺線程224中的一個中執(zhí)行。然后,WCF組件206的身份監(jiān)測器 (例如,身份監(jiān)測器260中的一個)可以通過將軟件異常報告到WCF組件206的身份監(jiān)測器的一個或多個客戶端來執(zhí)行事件工作項??闪磉x地,當所預測的事件工作項的影響超出可以接受的性能影響閾值時,可以丟棄該事件工作項??梢岳斫?,圖2的系統(tǒng)200包括節(jié)制功能以減輕監(jiān)測分布式應用程序201的總體性能影響。例如,依賴關(guān)系管理器272可以通過將已發(fā)現(xiàn)的依賴關(guān)系緩存在依賴關(guān)系緩存觀2中并成批地存儲已發(fā)現(xiàn)的依賴關(guān)系來減少依賴關(guān)系存儲操作的數(shù)量,每一個依賴關(guān)系存儲操作都可能是耗時的?;顒庸芾砥?70可以通過將活動信息排隊在活動隊列觀0中并當分布式應用程序201相對空閑時(例如,在夜里或在周末)存儲排隊的活動信息來降低活動存儲操作的影響。垃圾回收器284可以通過解除分配不再處于使用中的監(jiān)測器來減少圖2的系統(tǒng)200的存儲器占用空間。工作項調(diào)度邏輯244可以限制同時執(zhí)行的工作項的數(shù)量。工作項調(diào)度邏輯244也可以調(diào)度工作項以便在線程池220中優(yōu)先級比分布式應用程序 201的其他線程低的后臺線程中執(zhí)行。即,后臺線程將不會中斷其他執(zhí)行的線程以執(zhí)行調(diào)度的工作項。圖3是可以和諸如圖1的系統(tǒng)100或圖2的系統(tǒng)200之類的監(jiān)測分布式應用程序的系統(tǒng)一起使用的身份監(jiān)測器320的特定實施例的框圖300。身份監(jiān)測器320可以是包括諸如組件監(jiān)測器330之類的一個或多個組件監(jiān)測器322的監(jiān)測樹的根。監(jiān)測樹也可以包括業(yè)務(wù)角度監(jiān)測器340、操作調(diào)用目標端點監(jiān)測器370、計數(shù)器監(jiān)測器350以及儀器監(jiān)測器360 的一個或多個實例。在一說明性實施例中,身份監(jiān)測器320是圖2的身份監(jiān)測器沈0中的一個。身份監(jiān)測器320可以與分布式應用程序的特定組件相關(guān)聯(lián)。例如,身份監(jiān)測器320 可以與圖1的組件110或120或圖2的組件205、206或207中的一個相關(guān)聯(lián)。身份監(jiān)測器320可包括身份監(jiān)測器320與其相關(guān)聯(lián)的組件的地址321。地址321可以是因特網(wǎng)協(xié)議 (IP)地址或任何其他地址。例如,身份監(jiān)測器320可包括圖1的.NET組件120的IP地址。 身份監(jiān)測器320也可以包括諸如組件監(jiān)測器330之類的一個或多個組件監(jiān)測器322。組件監(jiān)測器330可包括一個或多個活動業(yè)務(wù)角度監(jiān)測器331,以及諸如業(yè)務(wù)角度監(jiān)測器340之類的一個或多個業(yè)務(wù)角度監(jiān)測器332。組件監(jiān)測器330也可以包括諸如操作調(diào)用目標端點監(jiān)測器370之類的一個或多個操作調(diào)用監(jiān)測器333。諸如業(yè)務(wù)角度監(jiān)測器340之類的每一業(yè)務(wù)角度監(jiān)測器,都可以為特定業(yè)務(wù)角度 (即,特定消息源)存儲計數(shù)器和儀器數(shù)據(jù)。例如,業(yè)務(wù)角度監(jiān)測器340可以存儲將通過跟蹤從圖1的WCF組件110發(fā)送到圖1的.NET組件120的消息而生成的計數(shù)器和儀器數(shù)據(jù)。 當消息是XML消息時,業(yè)務(wù)角度監(jiān)測器340可包括可對消息執(zhí)行以標識特定消息源的XML 路徑語言(XPATH)操作341。業(yè)務(wù)角度監(jiān)測器340也可以包括與特定消息源相關(guān)聯(lián)的名稱空間342。業(yè)務(wù)角度監(jiān)測器340也可以包括諸如計數(shù)器監(jiān)測器350之類的一個或多個計數(shù)器監(jiān)測器343。計數(shù)器監(jiān)測器350可以跟蹤特定事件在分布式應用程序上的發(fā)生。計數(shù)器監(jiān)測器 350可包括跟蹤特定事件的計數(shù)器名稱351和與該計數(shù)器相關(guān)聯(lián)的配置352。例如,計數(shù)器監(jiān)測器350可以跟蹤在圖2的.NET組件205上發(fā)生的并由圖2的WCF組件206所引起的異常,并包括名稱351 "WCF — . NET異常計數(shù)器”。計數(shù)器監(jiān)測器350也可以包括諸如儀器監(jiān)測器360之類的一個或多個儀器監(jiān)測器353。諸如儀器監(jiān)測器360之類的每一儀器監(jiān)測器可以被配置成在特定時間點存儲特定計數(shù)器的值。例如,儀器監(jiān)測器360可以被配置成在特定時間點存儲“WCF — . NET異常計數(shù)器”的值。在一特定實施例中,儀器監(jiān)測器360包括特定計數(shù)器的當前值361、特定計數(shù)器的當前值狀態(tài)362、以及與該特定計數(shù)器相關(guān)聯(lián)的當前窗口 363。儀器監(jiān)測器360也可以包括以前的值364、以前的值狀態(tài)365、以及前一窗口 366。當前值狀態(tài)362和以前的值狀態(tài)365可包括指出特定計數(shù)器沒有被初始化的狀態(tài)、指出特定計數(shù)器被初始化但是沒有被讀取的狀態(tài)、指出特定計數(shù)器包含有效值的狀態(tài)、或指出特定計數(shù)器由于溢出包含不精確的值的狀態(tài)。在一特定實施例中,每當特定計數(shù)器的值改變時,即分配新的儀器監(jiān)測器。操作調(diào)用目標端點監(jiān)測器370可以被配置成存儲涉及特定操作調(diào)用(例如,函數(shù)調(diào)用)的數(shù)據(jù)。在一特定實施例中,操作調(diào)用是分布式應用程序的組件內(nèi)部的。例如,操作調(diào)用可以是圖1的.NET組件120上的內(nèi)部函數(shù)調(diào)用??闪磉x地,操作調(diào)用可以是分布式應用程序的兩個組件之間的操作調(diào)用。例如,操作調(diào)用可以是具有圖1的WCF組件110上的源操作和圖1的.NET組件120上的目標操作的函數(shù)調(diào)用。在一特定實施例中,操作調(diào)用目標端點監(jiān)測器370是從對應于端點監(jiān)測器320的軟件類繼承的軟件類的對象,以使得每一操作調(diào)用目標端點監(jiān)測器包括諸如端點地址321和一個或多個操作監(jiān)測器322之類的端點監(jiān)測器320的特征。應該注意,圖3所示出的特定監(jiān)測樹是WCF技術(shù)專用的。監(jiān)測樹可包括對于不同的技術(shù)的監(jiān)測器的不同的層次結(jié)構(gòu)??梢岳斫?,圖3的監(jiān)測樹可以被用來組織來自由技術(shù)專用的攔截器所生成的工作項的數(shù)據(jù),加速了對這樣的數(shù)據(jù)的檢索。例如,可以按照操作、按照業(yè)務(wù)角度、或按照計數(shù)器來組織來自特定攔截的消息的數(shù)據(jù)。當攔截的消息指出操作調(diào)用時,也可以按照操作調(diào)用來組織數(shù)據(jù)。圖4是示出了監(jiān)測分布式應用程序(例如,圖1的分布式應用程序102或圖2的分布式應用程序201)的消息攔截的框圖400。在圖4中所示出的特定實施例中,攔截.NET 組件410和Java組件440之間的消息。在被附加到.NET組件410的.NET攔截器420上以及在被附加到Java組件440的Java攔截器430上攔截消息。在一說明性實施例中,.NET 組件410包括圖1的.NET組件110或圖2的.NET組件205,而Java組件440包括圖2的 Java 組件 207。 可以將.NET攔截器420附加到.NET組件410,以使得.NET組件410上的所有傳入和傳出的消息經(jīng)過.NET攔截器420。例如,可以將.NET攔截器420附加到.NET組件410 的.NET網(wǎng)絡(luò)接口 412。. NET組件410上的傳入和傳出的消息可以是XML消息,或者也可以是任何其他消息格式。
18
類似地,可以將Java攔截器430附加到Java組件440,以使得Java組件440上的所有傳入和傳出的消息經(jīng)過Java攔截器430。例如,可以將Java攔截器430附加到Java 組件440的Java網(wǎng)絡(luò)接口 442。Java組件440上的傳入和傳出的消息可以是XML消息,或者也可以是任何其他消息格式。在操作中,.NET組件410可以將消息460發(fā)送到Java組件440。消息460可以在.NET網(wǎng)絡(luò)接口 412處離開.NET組件410,并可以被附加到.NET網(wǎng)絡(luò)接口 412的.NET攔截器420攔截。在攔截消息460時,.NET攔截器420可以檢查消息460,以試圖發(fā)現(xiàn).NET 組件410的依賴關(guān)系、跟蹤包括.NET組件410的特定執(zhí)行路徑中的活動信息、或跟蹤特定事件在.NET組件410上的發(fā)生。在檢查攔截的消息460之后,.NET攔截器420可以將攔截的消息460發(fā)送到Java組件440。在到達Java組件440之前,可以再次攔截消息460,此時由Java攔截器430攔截。 Java攔截器430可以對攔截的消息460執(zhí)行類似的操作,如上文參考.NET攔截器420所描述的。例如,Java攔截器430也可以檢查消息460,以試圖發(fā)現(xiàn)Java組件440的依賴關(guān)系、 跟蹤包括Java組件440的特定執(zhí)行路徑中的活動信息、或跟蹤特定事件在Java組件440 上的發(fā)生。應該注意,在任何一個方向發(fā)送的消息都可以被攔截和檢查。例如,從Java組件 440發(fā)送到.NET組件410的第二消息470也可以被攔截和檢查,以發(fā)現(xiàn)依賴關(guān)系、跟蹤活動信息、以及跟蹤事件發(fā)生。還應注意,雖然圖4中所示出的特定實施例示出了被附加到兩個組件的攔截器,但是,甚至在兩個組件之間的消息路徑中只存在一個攔截器的情況下,也可以在兩個組件之間發(fā)現(xiàn)依賴關(guān)系。例如,當Java攔截器430不存在時,.NET組件410和 Java組件440之間的依賴關(guān)系仍然可以被.NET攔截器420發(fā)現(xiàn)。類似地,當Java攔截器 430不存在時,.NET組件410和Java組件440之間的依賴關(guān)系仍然可以被Java攔截器430 發(fā)現(xiàn)??梢岳斫?,如圖4所示,消息攔截可以被用來監(jiān)測分布式應用程序中與不同的技術(shù)(例如,· NET和Java)相關(guān)聯(lián)的組件。圖5是監(jiān)測分布式應用程序的方法500的特定實施例的流程圖。在一說明性實施例中,方法500可以由圖1的系統(tǒng)100或圖2的系統(tǒng)200來執(zhí)行。方法500包括在502標識分布式應用程序的多個組件。例如,在圖1中,技術(shù)不可知的攔截器管理器130可以標識 WCF組件110和.NET組件120。方法500還包括在504標識與多個組件中的特定組件相關(guān)聯(lián)的特定技術(shù)。例如,在圖1中,技術(shù)不可知的攔截器管理器130可以標識WCF組件110與 WCF技術(shù)相關(guān)聯(lián)。方法500還包括在506基于所標識的特定技術(shù)來將技術(shù)專用的攔截器附加到特定組件,使用附加的技術(shù)專用的攔截器來攔截由特定組件所發(fā)送的或接收到的消息。例如,在圖1中,技術(shù)不可知的攔截器管理器130可以將WCF攔截器112附加到WCF組件110,而WCF 攔截器112可以攔截由WCF組件110所發(fā)送的或接收到的消息。方法500還包括在508基于攔截的消息來生成至少一個潛在工作項。例如,在圖1中,WCF攔截器112可以基于攔截的消息來生成至少一個潛在工作項。方法500還包括在510確定是否要調(diào)度至少一個潛在工作項。基于所預測的至少一個潛在工作項對分布式應用程序的性能的影響,作出此判斷。例如,在圖1中,WCF工作項調(diào)度邏輯144可以基于所預測的至少一個潛在工作項對分布式應用程序102的性能的影響來確定是否要調(diào)度至少一個潛在工作項以便執(zhí)行。可以理解,可以使用圖5的方法500來監(jiān)測跨各種組件分布的并且包括各種技術(shù)的分布式應用程序。還可以理解,圖5的方法500可以通過不調(diào)度對分布式應用程序的性能具有所預測的高度影響的工作項,來降低這樣的監(jiān)測的總體性能影響。例如,圖5的方法 500可以通過限制排隊的工作項的數(shù)量來降低這樣的監(jiān)測的總體性能影響。因此,可以理解,圖5的方法500可以根據(jù)需求犧牲對于性能的監(jiān)測準確性,以使得實時的、幾乎實時、或任務(wù)關(guān)鍵的分布式應用程序的操作不被干擾。圖6是監(jiān)測分布式應用程序的方法600的另一特定實施例的流程圖。在一說明性實施例中,方法600可以由圖1的系統(tǒng)100或圖2的系統(tǒng)200來執(zhí)行。方法600包括在602 標識分布式應用程序的多個組件。例如,在圖1中,技術(shù)不可知的攔截器管理器130可以標識WCF組件110和.NET組件120。方法600還包括在604標識與多個組件中的特定組件相關(guān)聯(lián)的特定技術(shù)。例如,在圖1中,技術(shù)不可知的攔截器管理器130可以標識WCF組件110 與WCF技術(shù)相關(guān)聯(lián)。方法600還包括在606基于所標識的特定技術(shù)來將技術(shù)專用的攔截器附加到特定組件,使用附加的技術(shù)專用的攔截器來攔截由特定組件所發(fā)送的或接收到的消息。例如,在圖1中,技術(shù)不可知的攔截器管理器130可以將WCF攔截器112附加到WCF組件110,而WCF 攔截器112可以攔截由WCF組件110所發(fā)送的或接收到的消息。方法600還包括在608基于攔截的消息來生成至少一個潛在工作項。例如,在圖1中,WCF攔截器112可以基于攔截的消息來生成至少一個潛在工作項,并將該至少一個潛在工作項發(fā)送到技術(shù)專用的攔截器管理器,其中,該至少一個潛在工作項被插入WCF工作項隊列142中。方法600還包括在610計算所預測的至少一個潛在工作項對分布式應用程序的性能的影響。預測的影響可以是對處理器使用率的影響、對消息延遲的影響、或?qū)?zhí)行隊列長度的影響。例如,在圖1中,工作項調(diào)度邏輯144可以計算所預測的至少一個潛在工作項的影響,其中,預測的影響是對分布式應用程序102上的處理器使用率的影響、對分布式應用程序102上的消息延遲的影響或?qū)Ψ植际綉贸绦?02的執(zhí)行隊列長度的影響。方法600 還包括在612確定所預測的影響是否小于可以接受的性能影響閾值。例如,在圖1中,工作項調(diào)度邏輯144可以確定所預測的至少一個潛在工作項的性能影響是否小于可以接受的性能影響閾值。當確定所預測的影響小于可以接受的性能影響閾值時,該方法包括在614調(diào)度至少一個潛在工作項以便執(zhí)行,并執(zhí)行至少一個潛在工作項。例如,當確定所預測的影響小于可以接受的性能影響閾值時,WCF工作項調(diào)度邏輯144可以調(diào)度至少一個潛在工作項以便執(zhí)行,并可以執(zhí)行該至少一個潛在工作項。當確定所預測的影響不小于可以接受的性能影響閾值時,該方法包括在616丟棄該至少一個潛在工作項。例如,當確定所預測的影響不小于可以接受的性能影響閾值時,WCF工作項調(diào)度邏輯144可以通過從工作項隊列142中刪除該至少一個潛在工作項來丟棄它,而不調(diào)度該至少一個潛在工作項以便執(zhí)行??闪磉x地, 在圖1中,WCF工作項調(diào)度邏輯144可以允許至少一個潛在工作項保留在WCF工作項隊列 142中,其中,至少一個潛在工作項將自動地過期。可以理解,圖6的方法600可以被用來基于所預測的至少一個潛在工作項對分布
20式應用程序的性能的影響來有選擇地調(diào)度至少一個潛在工作項以便執(zhí)行。還可以理解,可以從工作項隊列中刪除具有預測的高度性能影響的工作項,為隨后接收到的工作項釋放工作項隊列中空間。圖7是監(jiān)測分布式應用程序的方法700的另一特定實施例的流程圖。在一說明性實施例中,方法700可以由圖1的系統(tǒng)100或圖2的系統(tǒng)200來執(zhí)行。方法700包括在702 標識分布式應用程序的多個組件。例如,在圖2中,技術(shù)不可知的攔截器管理器230可以標識.NET組件205、WCF組件206、Java組件207或其任何組合。方法700還包括在704標識與多個組件中的特定組件相關(guān)聯(lián)的特定技術(shù)。例如,在圖2中,技術(shù)不可知的攔截器管理器 230可以標識WCF組件206與WCF技術(shù)相關(guān)聯(lián)。方法700還包括在706基于所標識的特定技術(shù)來將技術(shù)專用的攔截器附加到特定組件,使用附加的技術(shù)專用的攔截器來攔截由特定組件所發(fā)送的或接收到的消息。例如,在圖2中,技術(shù)不可知的攔截器管理器230可以將WCF攔截器203附加到WCF組件206,而WCF 攔截器203可以攔截由WCF組件206所發(fā)送的或接收到的消息。方法700還包括在708基于攔截的消息來生成至少一個潛在工作項。例如,WCF攔截器203可以基于攔截的消息來生成至少一個潛在工作項。方法700還包括在710確定是否要調(diào)度至少一個潛在工作項以便執(zhí)行?;谒A測的至少一個潛在工作項對分布式應用程序的性能的影響,來作出此判斷。例如,在圖2中,WCF工作項調(diào)度邏輯244可以基于所預測的至少一個潛在工作項對分布式應用程序201的性能的影響來確定是否要調(diào)度至少一個潛在工作項以便執(zhí)行。方法700還包括在712計算涉及分布式應用程序的至少一個度量,如所生成的異常的數(shù)量或報告的錯誤的數(shù)量。例如,在圖2中,技術(shù)不可知的攔截器管理器230可以從 WCF攔截器203接收指出WCF組件206上的異常的工作項,并對接收到的這樣的工作項的數(shù)量計數(shù)。在一特定實施例中,異??梢杂蓤D3的身份監(jiān)測器320之類的身份監(jiān)測器來計數(shù)。 方法700還包括在714檢測分布式應用程序的故障情況。例如,可以檢測圖2的分布式應用程序201的故障情況。方法700還包括在716基于至少一個度量將特定組件標識為故障情況的潛在原因。例如,在圖2中,可以基于WCF組件206上的異常的數(shù)量將WCF組件206 標識為分布式應用程序201的故障情況的潛在原因??梢岳斫?,圖7的方法700可以被用來監(jiān)測分布式應用程序的組件,并基于當監(jiān)測特定組件時所生成的度量來將特定組件標識為分布式應用程序上的故障的潛在原因。如此,圖7的方法700可以縮短診斷并對分布式應用程序上的故障情況作出響應所花的時間。 還可以理解,當監(jiān)測分布式應用程序的組件時計算出的度量(例如,異?;蝈e誤的數(shù)量)可以被用來預測和防止未來的故障事件。例如,當由特定組件所生成的異常的數(shù)量增大時,可以向IT管理員通知異常增多,以使得IT管理員可以在特定組件發(fā)生故障之前解決該特定組件上的任何問題。圖8是監(jiān)測分布式應用程序的方法800的另一特定實施例的流程圖。在一說明性實施例中,方法800可以由圖1的系統(tǒng)100或圖2的系統(tǒng)200來執(zhí)行。方法800包括在802 標識分布式應用程序的多個組件。例如,在圖2中,技術(shù)不可知的攔截器管理器230可以標識.NET組件205、WCF組件206、Java組件207,或其任何組合。方法800還包括在804標識與多個組件中的特定組件相關(guān)聯(lián)的特定技術(shù)。例如,在圖2中,技術(shù)不可知的攔截器管理器230可以標識WCF組件206與WCF技術(shù)相關(guān)聯(lián)。
方法800還包括在806基于所標識的特定技術(shù)將技術(shù)專用的攔截器附加到特定組件。例如,在圖2中,技術(shù)不可知的攔截器管理器230可以將WCF攔截器203附加到WCF組件206。方法800包括兩個路徑包括808、810、812以及814的用于事件監(jiān)測的路徑;以及包括816、818、820、822以及824的用于活動監(jiān)測的路徑。在用于事件監(jiān)測的路徑中,方法800包括在808分配計數(shù)器監(jiān)測器以跟蹤特定事件的發(fā)生。例如,在圖2中,可以分配計數(shù)器監(jiān)測器以跟蹤WCF組件206上的異常,其中,計數(shù)器監(jiān)測器位于WCF組件206的身份監(jiān)測器(例如,身份監(jiān)測器沈0中的一個)的監(jiān)測樹上。在一特定實施例中,已分配的計數(shù)器監(jiān)測器包括圖3的計數(shù)器監(jiān)測器350。方法800還包括在810攔截涉及技術(shù)專用的攔截器上的特定事件的消息。例如,在圖2中,WCF攔截器 203可以攔截指出在WCF組件206上發(fā)生異常的消息。方法800還包括在812生成指出特定事件的發(fā)生的工作項。例如,在圖2中,WCF攔截器203可以生成指出在WCF組件206上發(fā)生異常的工作項。方法800還包括在814向計數(shù)器監(jiān)測器的一個或多個客戶端報告特定事件的發(fā)生。在一特定實施例中,當一個或多個客戶端輪詢計數(shù)器監(jiān)測器時,可以報告特定事件的發(fā)生。例如,在圖2中,可以將異常在WCF組件206上的發(fā)生向WCF組件206的身份監(jiān)測器的一個或多個客戶端(例如,身份監(jiān)測器沈0中的一個)報告。在用于活動監(jiān)測的路徑中,方法800包括在816分配活動監(jiān)測器以跟蹤沿著特定執(zhí)行路徑的活動。例如,在圖2中,可以分配活動業(yè)務(wù)角度監(jiān)測器以跟蹤沿分布式應用程序 201的包括WCF組件206的特定執(zhí)行路徑的活動,其中,活動業(yè)務(wù)角度監(jiān)測器位于WCF組件 206的端點監(jiān)測器(例如,端點監(jiān)測器沈0中的一個)的監(jiān)測樹中。在一特定實施例中,活動業(yè)務(wù)角度監(jiān)測器包括圖3的業(yè)務(wù)角度監(jiān)測器340。方法800還包括在818攔截涉及技術(shù)專用的攔截器上的特定執(zhí)行路徑的消息。例如,在圖2中,WCF攔截器203可以攔截指出沿著分布式應用程序201的特定執(zhí)行路徑的活動的消息。方法800還包括在820生成包括涉及特定執(zhí)行路徑的活動信息的工作項。例如,圖2的WCF攔截器203可以生成包括涉及特定執(zhí)行路徑的活動信息的工作項。方法800還包括在822將活動信息存儲在活動隊列中, 并在擬4通過存儲服務(wù)將活動信息從活動隊列傳輸?shù)酱鎯ξ恢?。例如,在圖2中,活動管理器270可以將活動信息存儲在活動隊列觀0中,并可以隨后通過存儲服務(wù)290將活動信息從活動隊列280傳輸?shù)酱鎯ξ恢???梢岳斫猓瑘D8的方法800可以被用來監(jiān)測可能在分布式應用程序中發(fā)生的諸如異常和錯誤之類的事件。還可以理解,圖8的方法800也可以被用來沿著分布式應用程序的特定執(zhí)行路徑跟蹤活動。例如,圖8的方法800可以被IT管理員用來跟蹤沿著分布式應用程序的執(zhí)行路徑錯誤地或低效執(zhí)行的活動。圖9是監(jiān)測分布式應用程序的方法900的另一特定實施例的流程圖。在一說明性實施例中,方法900可以由圖1的系統(tǒng)100或圖2的系統(tǒng)200來執(zhí)行。方法900包括在902 標識分布式應用程序的多個組件。例如,在圖2中,技術(shù)不可知的攔截器管理器230可以標識.NET組件205、WCF組件206、Java組件207或其任何組合。方法900還包括在904標識與多個組件中的特定組件相關(guān)聯(lián)的特定技術(shù)。例如,在圖2中,技術(shù)不可知的攔截器管理器 230可以標識WCF組件206與WCF技術(shù)相關(guān)聯(lián)。方法900還包括在906基于所標識的特定技術(shù)將技術(shù)專用的攔截器附加到特定組件。例如,在圖2中,技術(shù)不可知的攔截器管理器230可以將WCF攔截器203附加到WCF組件206。方法900還包括在908分配操作調(diào)用監(jiān)測器以跟蹤對特定組件上的特定函數(shù)的調(diào)用。例如,可以分配操作調(diào)用監(jiān)測器以跟蹤對WCF組件206的特定函數(shù)的調(diào)用,其中,操作調(diào)用監(jiān)測器位于WCF組件206的端點監(jiān)測器的監(jiān)測樹上(例如,端點監(jiān)測器沈0中的一個)。 在一特定實施例中,所分配的操作調(diào)用監(jiān)測器可包括圖3的操作調(diào)用目標端點監(jiān)測器370。方法900包括在910攔截由涉及特定函數(shù)的特定組件所發(fā)送的和接收到的消息。 例如,在圖2中,WCF攔截器203可以攔截由WCF組件206所發(fā)送的和接收到的消息,其中, 攔截的消息與特定函數(shù)相關(guān)聯(lián)。方法900還包括在912標識特定函數(shù)的源操作和特定函數(shù)的目標操作之間的依賴關(guān)系。例如,在圖2中,WCF攔截器203可以標識特定函數(shù)的源操作和特定函數(shù)的目標操作之間的依賴關(guān)系。在一特定實施例中,源操作和目標操作位于分布式應用程序201的不同的組件上(例如,源操作位于WCF組件206上,而目標操作位于.NET 組件205上)。方法900還包括在916將依賴關(guān)系緩存在依賴關(guān)系緩存中。例如,在圖2中,依賴關(guān)系管理器272可以將依賴關(guān)系緩存在依賴關(guān)系緩存觀2中。方法900還包括在918確定依賴關(guān)系先前是否已經(jīng)被存儲。例如,圖2的依賴關(guān)系管理器272可以確定依賴關(guān)系先前是否已經(jīng)被存儲。當依賴關(guān)系先前沒有被存儲時,方法900包括在920通過存儲服務(wù)將依賴關(guān)系傳輸?shù)酱鎯ξ恢谩@?,在圖2中,依賴關(guān)系管理器272可以通過存儲服務(wù)290將依賴關(guān)系從依賴關(guān)系緩存282傳輸?shù)酱鎯ξ恢?。當依賴關(guān)系先前已經(jīng)被存儲時,方法900包括在922 不存儲依賴關(guān)系。例如,在圖2中,依賴關(guān)系管理器272可以從依賴關(guān)系緩存觀2中刪除依賴關(guān)系而不存儲依賴關(guān)系??梢岳斫猓梢允褂脠D9的方法900來發(fā)現(xiàn)分布式應用程序中的各種源操作和目標操作之間的依賴關(guān)系,包括組件之間的依賴關(guān)系。還可以理解,圖9的方法900可以通過只存儲先前沒有被存儲的已發(fā)現(xiàn)的依賴關(guān)系來降低這樣的依賴關(guān)系發(fā)現(xiàn)的性能影響。圖10是在技術(shù)不可知的攔截器管理器上有選擇地調(diào)度工作項的方法1000的特定實施例的流程圖。在一說明性實施例中,方法1000可以由圖1的技術(shù)不可知的攔截器管理器130或圖2的技術(shù)不可知的攔截器管理器230來執(zhí)行。方法100包括在1002在技術(shù)不可知的攔截器管理器處從被附加到分布式應用程序的第一組件的第一技術(shù)專用的攔截器接收第一工作項。第一技術(shù)專用的攔截器是第一技術(shù)專用的,并且,第一組件與第一技術(shù)相關(guān)聯(lián)。例如,在圖1中,技術(shù)不可知的攔截器管理器130可以從被附加到分布式應用程序102 中的WCF組件110的WCF攔截器112接收第一工作項。方法1000還包括在1004在技術(shù)不可知的攔截器管理器處從被附加到分布式應用程序的第二組件的第二技術(shù)專用的攔截器接收第二工作項。第二技術(shù)攔截器是第二技術(shù)所專用的,第二組件與第二技術(shù)相關(guān)聯(lián),而第二技術(shù)不同于第一技術(shù)。例如,在圖1中,技術(shù)不可知的攔截器管理器130可以從被附加到分布式應用程序102中的.NET組件120的.NET 攔截器122接收第二工作項。方法1000還包括在1006確定是否要調(diào)度第一工作項和第二工作項以便執(zhí)行?;诘谝还ぷ黜棇Ψ植际綉贸绦虻牡谝挥绊?,并基于第二工作項對分布式應用程序的預測的影響,來作出此判斷。例如,在圖1中,WCF工作項調(diào)度邏輯144可以基于第一工作項對分布式應用程序102的第一影響來確定是否要調(diào)度第一工作項,而.NET工作項調(diào)度邏輯IM可以基于第二工作項對分布式應用程序102的第二影響來確定是否要調(diào)度第二工作項??梢岳斫?,圖10的方法1000可以被技術(shù)不可知的攔截器管理器(例如,圖1的技術(shù)不可知的攔截器管理器130或圖2的技術(shù)不可知的攔截器管理器230)用來基于所預測的工作項的影響,有選擇地調(diào)度工作項以便執(zhí)行。如此,可以攔截,圖10的方法1000可以被技術(shù)不可知的攔截器管理器用來避免干擾實時、幾乎實時、或關(guān)鍵分布式應用程序的常規(guī)執(zhí)行。技術(shù)不可知的攔截器管理器可以不調(diào)度對實時、幾乎實時、或關(guān)鍵分布式應用程序具有預測的高度影響的工作項。圖11是示出了分布式計算環(huán)境1100的特定實施例的一般圖。分布式計算環(huán)境 1100可包括分布式應用程序1110,應用程序1110包括一個或多個被監(jiān)測的應用程序組件, 如被監(jiān)測的Web客戶端1111、被監(jiān)測的web服務(wù)器1112、被監(jiān)測的應用程序服務(wù)器1113, 以及被監(jiān)測的數(shù)據(jù)庫服務(wù)器1114。分布式計算環(huán)境1100也可以包括可通信地耦合到分布式應用程序1110的組件的管理服務(wù)器1120,以及根管理服務(wù)器1130、操作數(shù)據(jù)庫服務(wù)器 1140、以及數(shù)據(jù)倉庫服務(wù)器1150。在一特定實施例中,分布式計算環(huán)境1100還包括被配置成為分布式應用程序1110生成監(jiān)測報告的報告服務(wù)器1160。在一說明性實施例中分布式應用程序1110可包括圖1的分布式應用程序102或圖2的分布式應用程序201。管理服務(wù)器1120包括技術(shù)不可知的攔截器管理器,如圖1的技術(shù)不可知的攔截器管理器130或圖2的技術(shù)不可知的攔截器管理器230。管理服務(wù)器1120也可以與根管理服務(wù)器1130進行通信。管理服務(wù)器1120可以存儲并從操作數(shù)據(jù)庫服務(wù)器1140和數(shù)據(jù)倉庫服務(wù)器1150檢索諸如依賴關(guān)系數(shù)據(jù)和活動數(shù)據(jù)之類的信息。在一特定實施例中,管理服務(wù)器1120被配置成通過報告服務(wù)器1160來生成包括發(fā)現(xiàn)數(shù)據(jù)和依賴關(guān)系數(shù)據(jù)的監(jiān)測報告。在操作中,被監(jiān)測的Web客戶端1111、被監(jiān)測的web服務(wù)器1112、被監(jiān)測的應用程序服務(wù)器1113,以及被監(jiān)測的數(shù)據(jù)庫服務(wù)器1114可以由一個或多個附加的技術(shù)專用的攔截器進行監(jiān)測。技術(shù)特定攔截器也可以生成工作項,并將工作項發(fā)送到管理服務(wù)器1120上的技術(shù)不可知的攔截器管理器。然后,管理服務(wù)器1120上的技術(shù)不可知的攔截器管理器可以基于所預測的對分布式應用程序1110的影響,或基于所預測的對特定分布式應用程序組件(例如,組件1111-1114中的一個)的影響,有選擇地調(diào)度接收到的工作項以便執(zhí)行??梢岳斫猓芾矸?wù)器1120可以監(jiān)測不同類型的分布式應用程序組件(例如,Web 客戶端、web服務(wù)器、應用程序服務(wù)器以及數(shù)據(jù)庫服務(wù)器)上的函數(shù)調(diào)用、活動以及事件。圖12示出了根據(jù)本公開的計算環(huán)境1200的框圖,包括可以支持計算機實現(xiàn)的方法、計算機程序產(chǎn)品,以及系統(tǒng)組件的實施例的計算設(shè)備1210。計算設(shè)備1210通常包括至少一個處理器1220和系統(tǒng)存儲器1230。取決于計算設(shè)備的確切配置和類型,系統(tǒng)存儲器1230可以是易失性的(如隨機存取存儲器或“RAM”)、非易失性的(如只讀存儲器或“ROM”、閃存,以及甚至在不提供電源的情況下也能保留存儲的數(shù)據(jù)的類似的存儲器設(shè)備),或兩個的某種組合。系統(tǒng)存儲器1230通常包括操作系統(tǒng)1232、 一個或多個應用程序平臺1234、一個或多個應用程序1236,并可包括程序數(shù)據(jù)1238。例如, 系統(tǒng)存儲器1230可包括分布式應用程序的一個或多個組件,如圖1的WCF組件110、圖2的 WCF組件206、圖1的.NET組件120、圖2的.NET組件205,或圖2的Java組件207。當計算設(shè)備1210包括組件時,計算設(shè)備1210也可以包括被附加到組件的一個或多個技術(shù)專用的攔截器。例如,計算設(shè)備1210可包括圖1的WCF攔截器112、圖2的WCF攔截器203、圖1的.NET攔截器122、圖2的.NET攔截器202,圖2的Java攔截器204。作為另一個示例, 系統(tǒng)存儲器1230可包括圖1的技術(shù)不可知的攔截器管理器130或圖2的技術(shù)不可知的攔截器管理器230。在一特定實施例中,分布式應用程序(例如,圖1的分布式應用程序102或圖2的分布式應用程序201)可包括多個計算設(shè)備(例如,計算設(shè)備1210),而每一這樣的計算設(shè)備都可包括分布式應用程序的一個或多個組件。計算設(shè)備1210還可具有附加特征或功能。例如,計算設(shè)備1210還可包括可移動和/或不可移動附加數(shù)據(jù)存儲設(shè)備,諸如磁盤、光盤、磁帶和標準大小的或微型閃存卡。在圖12中通過可移動存儲1240和不可移動存儲1250示出了這樣的附加存儲。計算機存儲介質(zhì)可包括以用于存儲諸如計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序組件或其他數(shù)據(jù)的信息的任何方法和/或技術(shù)實現(xiàn)的易失性和/或非易失性存儲器、可移動和/或不可移動介質(zhì)。系統(tǒng)存儲器1230、可移動存儲1240和不可移動存儲1250都是計算機存儲介質(zhì)的示例。計算機存儲介質(zhì)包括,但不限于,RAM、R0M、電可擦除可編程只讀存儲器(EEPROM)、閃存或其它存儲器技術(shù)、緊致盤(CD)、數(shù)字多功能盤(DVD)或其它光存儲、磁帶盒、磁帶、磁盤存儲或其它磁性存儲設(shè)備、或可用于存儲所希望的信息且可以由計算設(shè)備1210訪問的任何其它介質(zhì)。任何這樣的計算機存儲介質(zhì)都可以是計算設(shè)備1210的一部分。計算設(shè)備1210也可包括輸入設(shè)備1沈0,如鍵盤、鼠標、筆、語音輸入設(shè)備、觸摸輸入設(shè)備等等。也可包括輸出設(shè)備1270, 如顯示器、揚聲器、打印機等等。計算設(shè)備1210還包含一個或多個通信連接1觀0,它們允許計算設(shè)備1210通過有線或無線網(wǎng)絡(luò)與諸如一個或多個客戶端計算系統(tǒng)或其他服務(wù)器之類的其他計算設(shè)備1290 進行通信。例如,一個或多個通信連接1280可包括圖5的網(wǎng)絡(luò)接口 512或討2。一個或多個通信連接1280是通信介質(zhì)的一個示例。作為示例而非限制,通信介質(zhì)可包括有線介質(zhì), 如有線網(wǎng)絡(luò)或直接線連接,以及諸如聲學、射頻(RF)、紅外線及其他無線介質(zhì)之類的無線介質(zhì)。然而,可以理解,并非所有圖12所示或以其他方式在先前的附圖中描述的組件或設(shè)備都必須支持此處所描述的實施例。這里所描述的實施例的說明旨在提供對各實施例的結(jié)構(gòu)的一般理解。說明不旨在作為利用這里所描述的結(jié)構(gòu)或方法的裝置和系統(tǒng)的所有元件和特征的完整描述。許多其他實施例對本領(lǐng)域的技術(shù)人員在審閱本發(fā)明后是顯而易見的。也可以利用其他實施例,并從本發(fā)明派生出其他實施例,以便可以在不偏離本發(fā)明的范圍的情況下作出結(jié)構(gòu)和邏輯上的替換和改變。相應地,本發(fā)明和附圖應被視為說明性的,而不是限制性的。本領(lǐng)域技術(shù)人員將進一步理解,結(jié)合這里所說明的實施例所描述的各種說明性邏輯塊、配置、模塊、電路、以及算法步驟,可以作為電子硬件、計算機軟件或兩者的組合來實現(xiàn)。為清楚地示出硬件或軟件的此互換性,上文已經(jīng)一般地在功能方面描述了各種說明性組件、塊、配置、模塊、電路,以及步驟。此類功能集是被實現(xiàn)為硬件還是軟件取決于具體應用和強加于整體系統(tǒng)的設(shè)計約束。技術(shù)人員可針對每種特定應用以不同方式來實現(xiàn)所描述的功能集,但此類設(shè)計決策不應被解釋為致使脫離本公開的范圍。結(jié)合此處所公開的各實施例所描述的方法的各個步驟可直接用硬件、由處理器執(zhí)行的軟件模塊、或兩者的組合來實現(xiàn)。軟件模塊可駐留在諸如隨機存取存儲器(RAM)、閃存、 只讀存儲器(ROM)、寄存器、硬盤、可移動盤、⑶-ROM、或本領(lǐng)域內(nèi)已知的任何其他形式的存儲介質(zhì)等計算機可讀介質(zhì)中。示例性存儲介質(zhì)耦合到處理器以使得該處理器能從/向該存儲介質(zhì)讀取/寫入信息。在替換方案中,存儲介質(zhì)可以集成到處理器中,或者處理器和存儲介質(zhì)可以作為分立的元件駐留在計算機系統(tǒng)中。雖然這里顯示和描述了具體的實施例,但是,應該了解,被設(shè)計為實現(xiàn)相同或類似的目的的任何隨后的安排都可以代替所示出的具體實施例。本說明書計劃涵蓋各種實施例的任何隨后的修改或變化。提交本發(fā)明的摘要的同時要明白,將不用它來解釋或限制權(quán)利要求的范圍或含義。此外,在前面的具體實施方式
中,出于將本公開連成一個整體的目的,各種特征可以組合到一起,或在一個實施例中進行描述。本發(fā)明不應被解釋為反映帶權(quán)利要求的實施例需要比每一個權(quán)利要求中明確地記載的特征更多的特點的意圖。相反,如下面的權(quán)利要求所反映的,本發(fā)明的主題可以涉及少于所公開的實施例中的任一個的所有特征。提供上文對所公開的實施例的描述,以使本領(lǐng)域技術(shù)人員能作出或使用所公開的實施例。對這些實施例的各種修改對于本領(lǐng)域技術(shù)人員將是顯而易見的,并且本文中定義的普適原理可被應用于其他實施例而不會脫離本公開的范圍。因此,本發(fā)明并不旨在限于此處所示出的各實施例,而是按照與所附權(quán)利要求書所定義的原理和新穎特征相一致的盡可能最寬的范圍。
2權(quán)利要求
1.一種監(jiān)測方法,包括標識(502)分布式應用程序(102)的多個組件(110,120);標識(504)與所述多個組件(110,120)中的特定組件(110)相關(guān)聯(lián)的特定技術(shù);基于所述所標識的特定技術(shù),將技術(shù)專用的攔截器(112)附加(506)到所述特定組件 (110),并使用所述附加的技術(shù)專用的攔截器(112),攔截由所述特定組件(110)所發(fā)送的或接收到的消息;基于所攔截的消息,生成(508)至少一個潛在的工作項;以及基于所預測的所述至少一個潛在的工作項對所述分布式應用程序(10 的性能的影響,來確定(510)是否要調(diào)度所述至少一個潛在工作項以便執(zhí)行。
2.如權(quán)利要求1所述的方法,其特征在于,當所預測的所述至少一個潛在工作項的影響低于可以接受的性能影響閾值時,調(diào)度所述至少一個潛在工作項以便執(zhí)行,并且,其中, 當所預測的所述至少一個潛在工作項的影響超出所述可以接受的性能影響閾值時,不調(diào)度所述至少一個潛在工作項來執(zhí)行。
3.如權(quán)利要求1所述的方法,其特征在于,所預測的所述至少一個潛在工作項的影響指示對所述分布式應用程序上的處理器使用率、所述分布式應用程序上的消息延遲、所述分布式應用程序上的執(zhí)行隊列長度或其任何組合的影響。
4.如權(quán)利要求1所述的方法,其特征在于,當所述至少一個潛在工作項在工作項有效期內(nèi)未被調(diào)度時所述至少一個潛在工作項過期。
5.如權(quán)利要求1所述的方法,其特征在于,還包括執(zhí)行所述分布式應用程序上的所述至少一個潛在工作項,其中,所述至少一個潛在工作項包括存儲涉及所述分布式應用程序的已發(fā)現(xiàn)的依賴關(guān)系信息的指令、存儲涉及所述分布式應用程序的已監(jiān)測的活動信息的指令、報告涉及所述分布式應用程序的性能計數(shù)器信息的指令或其任何組合。
6.如權(quán)利要求5所述的方法,其特征在于,還包括基于所述攔截的消息,分配操作調(diào)用監(jiān)測器以跟蹤對特定組件上的特定函數(shù)的調(diào)用。
7.如權(quán)利要求6所述的方法,其特征在于,所述特定函數(shù)具有源操作和目標操作,其中,所述至少一個潛在工作項指示所述源操作和所述目標操作之間的依賴關(guān)系,并且,其中,執(zhí)行所述至少一個潛在工作項包括將所述依賴關(guān)系存儲在依賴關(guān)系緩存中。
8.如權(quán)利要求7所述的方法,其特征在于,還包括響應于確定所述依賴關(guān)系先前沒有被存儲,通過存儲服務(wù)將所述依賴關(guān)系從所述依賴關(guān)系緩存?zhèn)鬏數(shù)酱鎯ξ恢谩?br> 9.如權(quán)利要求5所述的方法,其特征在于,還包括分配活動監(jiān)測器以跟蹤所述特定組件上的特定執(zhí)行路徑的活動,其中,所述至少一個潛在工作項包括涉及所述特定執(zhí)行路徑的活動信息,并且,其中,執(zhí)行所述至少一個潛在的工作項包括將所述活動信息存儲在活動隊列中。
10.如權(quán)利要求9所述的方法,其特征在于,還包括通過存儲服務(wù)將所述活動信息從所述活動隊列傳輸?shù)酱鎯ξ恢谩?br> 11.如權(quán)利要求5所述的方法,其特征在于,還包括基于所述攔截的消息,分配計數(shù)器監(jiān)測器以跟蹤特定事件的發(fā)生,其中,所述至少一個潛在工作項指示所述特定事件的至少一次發(fā)生,并且,其中,執(zhí)行所述至少一個潛在工作項包括將向所述計數(shù)器監(jiān)測器的一個或多個客戶端報告所述特定事件的至少一次發(fā)生。
12.如權(quán)利要求1所述的方法,其特征在于,還包括計算涉及所述分布式應用程序的至少一個度量,其中,所述至少一個度量包括生成的異常的數(shù)量、報告的錯誤的數(shù)量、或其任何組合; 檢測所述分布式應用程序的故障情況;以及基于所述至少一個度量,將所述特定組件標識為所述故障情況的潛在原因。
13.一種監(jiān)測系統(tǒng),包括包括與第一技術(shù)相關(guān)聯(lián)的第一技術(shù)專用的攔截器(20 和與不同于所述第一技術(shù)的第二技術(shù)相關(guān)聯(lián)的第二技術(shù)專用的攔截器O03)的多個技術(shù)專用的攔截器;以及,技術(shù)不可知的攔截器管理器O30);其中,所述第一技術(shù)專用的攔截器(20 被配置成跟蹤與所述第一技術(shù)相關(guān)聯(lián)的第一分布式應用程序組件O05)的操作,包括攔截由所述第一分布式應用程序組件(20 所發(fā)送的和接收到的消息;基于所跟蹤的所述第一分布式應用程序組件O05)的操作,生成工作項;以及基于所跟蹤的所述第一分布式應用程序組件O05)的操作,將所述工作項發(fā)送到所述技術(shù)不可知的攔截器管理器O30);其中,所述第二技術(shù)專用的攔截器(20 被配置成跟蹤與所述第二技術(shù)相關(guān)聯(lián)的第二分布式應用程序組件O06)的操作,包括攔截由所述第二分布式應用程序組件(206)所發(fā)送的和接收到的消息;基于所跟蹤的所述第二分布式應用程序組件O06)的操作,生成工作項;以及基于所跟蹤的所述第二分布式應用程序組件O06)的操作,將所述工作項發(fā)送到所述技術(shù)不可知的攔截器管理器O30);以及其中,所述技術(shù)不可知的攔截器管理器(230)包括多個工作項管理器040),包括與所述第一技術(shù)專用的攔截器(20 相關(guān)聯(lián)的第一工作項管理器,以及與所述第二技術(shù)專用的攔截器(20 相關(guān)聯(lián)的第二工作項管理器;其中,每一工作項管理器(MO)都與特定技術(shù)專用的攔截器相關(guān)聯(lián),并被配置成 接收來自所述特定技術(shù)專用的攔截器的工作項; 將所述接收到的工作項排隊在工作項隊列(M2)中;將由所述特定技術(shù)專用的攔截器跟蹤的特定工作項對分布式應用程序組件的性能的影響與可以接受的性能影響閾值進行比較;當所述影響小于所述可以接受的性能影響閾值時,調(diào)度所述特定工作項以便執(zhí)行;以及當所述影響大于所述可以接受的性能影響閾值時,丟棄所述特定工作項,而不調(diào)度所述特定工作項來執(zhí)行。
14.如權(quán)利要求13所述的系統(tǒng),其特征在于,每一技術(shù)專用的攔截器還被配置成向其相關(guān)聯(lián)的工作項管理器請求空的工作項,通過將信息存儲在所述空工作項中生成工作項, 并將所生成的工作項發(fā)送到所述技術(shù)不可知的攔截器管理器。
15.如權(quán)利要求13所述的系統(tǒng),其特征在于,所述工作項管理器中的每一個還被配置成限制同時執(zhí)行的工作項的數(shù)量;限制所述工作項隊列的大??; 當所述工作項隊列滿時拒絕接收到的工作項;調(diào)度特定工作項以便在線程池的前臺線程中或在所述線程池的后臺線程中執(zhí)行;以及限制所述線程池的同時執(zhí)行的線程的數(shù)量。
全文摘要
公開了用于監(jiān)測分布式應用程序的方法、系統(tǒng),以及計算機可讀介質(zhì)。一種特定方法標識分布式應用程序的多個組件。該方法還標識與特定組件相關(guān)聯(lián)的特定技術(shù)并基于所標識的特定技術(shù)來將技術(shù)專用的攔截器附加到特定組件。該方法包括使用技術(shù)專用的攔截器來攔截由特定組件所發(fā)送的或接收到的消息。基于所攔截的消息,生成至少一個潛在的工作項。該方法包括基于所預測的至少一個潛在的工作項對分布式應用程序的性能的影響,來確定是否要調(diào)度該至少一個潛在工作項以便執(zhí)行。
文檔編號G06F17/00GK102369523SQ201080014022
公開日2012年3月7日 申請日期2010年3月19日 優(yōu)先權(quán)日2009年3月24日
發(fā)明者A·A·科埃略, A·J·薩格維, A·K·加內(nèi)桑, D·M·瑪哈簡, I·G·萊特卡, R·蘇達卡爾, V·S·K·庫拉帕蒂 申請人:微軟公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
高青县| 巴彦淖尔市| 当雄县| 林周县| 蓬安县| 泰顺县| 桂阳县| 盖州市| 壤塘县| 宁蒗| 姚安县| 松江区| 沂水县| 丽水市| 庆安县| 达拉特旗| 沈丘县| 南阳市| 长乐市| 凤阳县| 沈阳市| 关岭| 蓝山县| 宜兰市| 桂林市| 铁岭市| 抚州市| 观塘区| 蒙城县| 漯河市| 宾阳县| 三穗县| 平谷区| 唐海县| 阜平县| 延边| 黎川县| 横山县| 彭泽县| 宜兰市| 综艺|