生成表示應(yīng)用對(duì)外部服務(wù)的故障的模擬的響應(yīng)的指紋的制作方法
【專(zhuān)利說(shuō)明】
【背景技術(shù)】
[0001]遠(yuǎn)程計(jì)算服務(wù)提供商(例如,云服務(wù)供應(yīng)商)可以在遠(yuǎn)離企業(yè)的計(jì)算機(jī)系統(tǒng)上為企業(yè)托管計(jì)算機(jī)應(yīng)用。服務(wù)提供商可以托管應(yīng)用來(lái)代表企業(yè)為客戶(hù)或其他用戶(hù)提供服務(wù),在某些情況下,服務(wù)提供商可以同意以某些預(yù)定的性能等級(jí)來(lái)為用戶(hù)提供服務(wù)。這樣的性能等級(jí)可以由例如服務(wù)等級(jí)協(xié)議(SLA)或服務(wù)等級(jí)目標(biāo)(SLO)來(lái)定義。
【附圖說(shuō)明】
[0002]下面的詳細(xì)描述參照附圖,其中:
[0003]圖1是用于生成表示應(yīng)用對(duì)外部服務(wù)的故障的模擬的響應(yīng)的測(cè)試應(yīng)用指紋的示例計(jì)算設(shè)備的框圖;
[0004]圖2是用于比較測(cè)試應(yīng)用指紋和產(chǎn)品應(yīng)用指紋的示例計(jì)算設(shè)備的框圖;
[0005]圖3是用于在具有關(guān)聯(lián)的外部服務(wù)和關(guān)聯(lián)的外部服務(wù)的故障的描述的儲(chǔ)存庫(kù)中存儲(chǔ)測(cè)試應(yīng)用指紋的示例系統(tǒng)的框圖;
[0006]圖4是用于基于獲取的測(cè)試指標(biāo)生成測(cè)試應(yīng)用指紋的示例方法的流程圖;以及
[0007]圖5是用于將與測(cè)試應(yīng)用指紋相關(guān)聯(lián)的外部服務(wù)和故障識(shí)別為檢測(cè)到的問(wèn)題的來(lái)源的示例方法的流程圖。
【具體實(shí)施方式】
[0008]出于很多原因,包括SLA和SLO的存在,遠(yuǎn)程計(jì)算服務(wù)提供商可能對(duì)維持在遠(yuǎn)離企業(yè)的計(jì)算機(jī)系統(tǒng)上為企業(yè)托管的計(jì)算機(jī)應(yīng)用的高等級(jí)的性能有強(qiáng)烈的興趣。這樣,在應(yīng)用被托管在由服務(wù)提供商操作的計(jì)算機(jī)系統(tǒng)上時(shí),服務(wù)提供商可能期望準(zhǔn)確地識(shí)別應(yīng)用的性能問(wèn)題的來(lái)源。
[0009]然而,可能難以確認(rèn)某些應(yīng)用性能問(wèn)題的來(lái)源。例如,應(yīng)用可能依賴(lài)于與應(yīng)用和服務(wù)提供商分離的計(jì)算機(jī)系統(tǒng)而操作的外部服務(wù)。在此類(lèi)示例中,應(yīng)用可以經(jīng)由由例如與外部服務(wù)相關(guān)聯(lián)的應(yīng)用程序接口(API)等定義的函數(shù)調(diào)用來(lái)從外部服務(wù)獲取數(shù)據(jù)。示例外部服務(wù)可以包括外部應(yīng)用,例如數(shù)據(jù)饋送(如豐富站點(diǎn)摘要(RSS)源等)、電子郵件系統(tǒng)、代表性狀態(tài)傳輸(REST)網(wǎng)絡(luò)服務(wù)、基于網(wǎng)絡(luò)的地圖應(yīng)用等。
[0010]服務(wù)提供商托管的應(yīng)用中的性能問(wèn)題可能經(jīng)常由被托管的應(yīng)用所依賴(lài)的外部服務(wù)中發(fā)生的故障引起。這種外部服務(wù)故障可能級(jí)聯(lián)成被托管的應(yīng)用的多個(gè)不期望行為,使得這種外部服務(wù)故障難以識(shí)別。此外,由于被托管的應(yīng)用所依賴(lài)的各種外部服務(wù)可能由與服務(wù)提供商分離的實(shí)體(例如,公司)控制,因而服務(wù)提供商可能不能在外部服務(wù)中引導(dǎo)故障,以在外部服務(wù)的故障的條件下系統(tǒng)地測(cè)試被托管的應(yīng)用。
[0011]為了解決這些問(wèn)題,本文描述的示例可以在應(yīng)用的測(cè)試期間,指示外部服務(wù)虛擬化系統(tǒng)將外部服務(wù)的故障模擬為外部服務(wù)的模擬的一部分。示例可以進(jìn)一步生成表示應(yīng)用對(duì)外部服務(wù)的故障的模擬的響應(yīng)的測(cè)試應(yīng)用指紋,并且將測(cè)試應(yīng)用指紋與存儲(chǔ)測(cè)試應(yīng)用指紋的儲(chǔ)存庫(kù)中的模擬的外部服務(wù)和模擬的故障相關(guān)聯(lián)。以這種方式,在應(yīng)用的測(cè)試期間,本文描述的示例可以存儲(chǔ)可以被用于將發(fā)生故障的外部服務(wù)識(shí)別為在應(yīng)用的非測(cè)試執(zhí)行期間檢測(cè)到的性能問(wèn)題的來(lái)源的信息。
[0012]例如,在測(cè)試期間生成測(cè)試應(yīng)用指紋并且將測(cè)試應(yīng)用指紋與外部服務(wù)和故障相關(guān)聯(lián)之后,本文描述的示例可以在非生產(chǎn)執(zhí)行期間評(píng)估應(yīng)用的性能。響應(yīng)于在執(zhí)行應(yīng)用的非測(cè)試執(zhí)行期間檢測(cè)到問(wèn)題,本文描述的示例可以生成表示應(yīng)用的狀態(tài)的生產(chǎn)應(yīng)用指紋。示例可以進(jìn)一步比較測(cè)試應(yīng)用指紋和生產(chǎn)應(yīng)用指紋,并且可以基于比較的結(jié)果,將與測(cè)試應(yīng)用指紋相關(guān)聯(lián)的外部服務(wù)和故障識(shí)別為檢測(cè)到的問(wèn)題的來(lái)源。例如,響應(yīng)于在多個(gè)指紋中,確定生產(chǎn)應(yīng)用指紋與測(cè)試應(yīng)用指紋最相似并且生產(chǎn)應(yīng)用指紋滿(mǎn)足與測(cè)試應(yīng)用指紋有關(guān)的相似性閾值,與測(cè)試應(yīng)用指紋相關(guān)聯(lián)的外部服務(wù)和故障可以被識(shí)別為檢測(cè)到的問(wèn)題的來(lái)源。
[0013]此外,通過(guò)利用虛擬化系統(tǒng)來(lái)將外部服務(wù)的故障模擬為外部服務(wù)總體模擬的一部分,本文所述的示例可以在測(cè)試期間,在沒(méi)有實(shí)際外部服務(wù)控制的情況下,在外部服務(wù)發(fā)生故障的條件下,系統(tǒng)地測(cè)試應(yīng)用。以這種方式,本文描述的示例可以獲得應(yīng)用在非測(cè)試(例如生產(chǎn))環(huán)境下執(zhí)行時(shí)對(duì)識(shí)別實(shí)際的外部服務(wù)故障有用的信息。
[0014]現(xiàn)在參照附圖,圖1是用于生成表示應(yīng)用對(duì)外部服務(wù)的故障的模擬的響應(yīng)的測(cè)試應(yīng)用指紋的示例計(jì)算設(shè)備100的框圖。如本文使用的,“計(jì)算設(shè)備”可以是臺(tái)式計(jì)算機(jī),筆記本電腦,工作站,平板電腦,移動(dòng)電話,智能設(shè)備,服務(wù)器,刀片式機(jī)箱或任何其它處理裝置或設(shè)備。在圖1的示例中,計(jì)算設(shè)備100包括處理資源110和編碼有指令121 - 123的機(jī)器可讀存儲(chǔ)介質(zhì)120。在一些示例中,存儲(chǔ)介質(zhì)120可以包括另外的指令。在一些示例中,指令121 - 123和本文關(guān)于存儲(chǔ)介質(zhì)120描述的任何其它指令可以被存儲(chǔ)在遠(yuǎn)離計(jì)算設(shè)備100和處理資源110但可由計(jì)算設(shè)備100和處理資源110訪問(wèn)的機(jī)器可讀存儲(chǔ)介質(zhì)上。
[0015]在本文描述的示例中,處理資源可以包括例如被包括在單個(gè)計(jì)算設(shè)備中或被分布在多個(gè)計(jì)算設(shè)備上的一個(gè)處理器或多個(gè)處理器。如本文使用的,“處理器”可以是以下至少之一:中央處理單元(CPU)、基于半導(dǎo)體的微處理器、圖形處理單元(GPU)、被配置成獲取和執(zhí)行指令的現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)、其它適于獲取和執(zhí)行機(jī)器可讀存儲(chǔ)介質(zhì)上存儲(chǔ)的指令的電路或其組合。處理資源110可以提取、解碼和執(zhí)行存儲(chǔ)介質(zhì)120上存儲(chǔ)的指令,以執(zhí)行下面描述的功能。在其它示例中,存儲(chǔ)介質(zhì)120的任何指令的功能都可以以電路的形式、以編碼在機(jī)器可讀存儲(chǔ)介質(zhì)上的可執(zhí)行指令的形式、或其組合實(shí)現(xiàn)。
[0016]在圖1的示例中,計(jì)算設(shè)備100可以與儲(chǔ)存庫(kù)140通信,儲(chǔ)存庫(kù)140可由至少一個(gè)機(jī)器可讀存儲(chǔ)介質(zhì)實(shí)現(xiàn)。盡管在圖1的示例中,儲(chǔ)存庫(kù)140與計(jì)算設(shè)備100分離,但是在其它示例中,計(jì)算設(shè)備100可以包括儲(chǔ)存庫(kù)140。如本文使用的,“機(jī)器可讀存儲(chǔ)介質(zhì)”可以是任何電子的、磁的、光的、或其它物理存儲(chǔ)裝置,用來(lái)包含或存儲(chǔ)諸如可執(zhí)行指令、數(shù)據(jù)等的信息。例如,本文描述的機(jī)器可讀存儲(chǔ)介質(zhì)可以是隨機(jī)存取存儲(chǔ)器(RAM)、易失性存儲(chǔ)器、非易失性存儲(chǔ)器、閃存、存儲(chǔ)驅(qū)動(dòng)器(例如硬盤(pán)驅(qū)動(dòng)器)、固態(tài)驅(qū)動(dòng)器、任何類(lèi)型的存儲(chǔ)盤(pán)(例如光盤(pán)、DVD等),或其組合的任何一個(gè)。此外,本文描述的任何機(jī)器可讀存儲(chǔ)介質(zhì)都可以是非瞬態(tài)的。
[0017]計(jì)算設(shè)備100還可以與測(cè)試系統(tǒng)150和外部服務(wù)虛擬化系統(tǒng)155通信。測(cè)試系統(tǒng)150可以是任何能夠測(cè)試計(jì)算機(jī)應(yīng)用的系統(tǒng)。如本文使用的,“應(yīng)用”(或“計(jì)算機(jī)應(yīng)用”)是可以由至少一個(gè)計(jì)算設(shè)備的至少一個(gè)處理資源執(zhí)行的機(jī)器可讀指令的集合。在本文描述的示例中,應(yīng)用可以是由多層計(jì)算機(jī)系統(tǒng)的幾個(gè)不同層運(yùn)行的復(fù)合應(yīng)用。在此類(lèi)示例中,復(fù)合應(yīng)用可以實(shí)現(xiàn)Web應(yīng)用、網(wǎng)絡(luò)服務(wù)等、或其組合。
[0018]測(cè)試系統(tǒng)150可以能夠以不同的負(fù)載、不同數(shù)量的用戶(hù)、各種用戶(hù)行為等對(duì)應(yīng)用進(jìn)行測(cè)試。在圖1的示例中,測(cè)試系統(tǒng)150可以測(cè)試要被托管在由例如遠(yuǎn)程計(jì)算服務(wù)提供商操作的計(jì)算機(jī)系統(tǒng)上的應(yīng)用105。測(cè)試系統(tǒng)150可以被實(shí)現(xiàn)在至少一個(gè)計(jì)算設(shè)備上,測(cè)試系統(tǒng)150的功能可以以電路的形式、編碼在機(jī)器可讀存儲(chǔ)介質(zhì)上的可執(zhí)行指令的形式,或其組合實(shí)現(xiàn)。
[0019]測(cè)試系統(tǒng)150可以與外部服務(wù)虛擬化系統(tǒng)155通信,外部服務(wù)虛擬化系統(tǒng)155可以是能夠模擬正在被測(cè)試的應(yīng)用的外部服務(wù)的任何系統(tǒng)。在本文描述的示例中,“外部服務(wù)”可以是被實(shí)現(xiàn)為與給定應(yīng)用分離的任何服務(wù)(例如,web服務(wù)、應(yīng)用、web應(yīng)用、系統(tǒng)等、或其組合),給定應(yīng)用被配置成在其執(zhí)行期間依賴(lài)(例如,訪問(wèn)、從其請(qǐng)求信息等)該服務(wù)。在圖1的示例中,應(yīng)用105可以在應(yīng)用105的非測(cè)試執(zhí)行期間(例如,在生產(chǎn)中)依賴(lài)外部服務(wù)(例如,數(shù)據(jù)饋送、單獨(dú)的Web應(yīng)用等)。在此類(lèi)示例中,外部服務(wù)虛擬化系統(tǒng)155可以在測(cè)試系統(tǒng)150對(duì)應(yīng)用105的測(cè)試期間,實(shí)現(xiàn)應(yīng)用105可以調(diào)用或以其它方式訪問(wèn)的外部服務(wù)的模擬156。在其它示例中,系統(tǒng)155可以實(shí)現(xiàn)另外的模擬、其它模擬、或其組合。
[0020]在本文描述的示例中,外部服務(wù)的“模擬”可以是任何應(yīng)用或過(guò)程,用來(lái)提供對(duì)針對(duì)外部服務(wù)的請(qǐng)求的響應(yīng),例如外部服務(wù)的API定義的函數(shù)調(diào)用。在圖1的示例中,通過(guò)例如響應(yīng)于外部服務(wù)的API定義的函數(shù)調(diào)用而提供模擬響應(yīng)(例如,模擬數(shù)據(jù)),系統(tǒng)155可以實(shí)現(xiàn)模擬156來(lái)模擬外部服務(wù)對(duì)這種函數(shù)調(diào)用的響應(yīng)。外部服務(wù)虛擬化系統(tǒng)155可以被實(shí)現(xiàn)在至少一個(gè)計(jì)算設(shè)備上,并且系統(tǒng)155的功能性可以以電路的形式、編碼在機(jī)器可讀存儲(chǔ)介質(zhì)上的可執(zhí)行指令的形式、或其組合實(shí)現(xiàn)。
[0021]在圖1的示例中,指令121可以指示外部服務(wù)虛擬化系統(tǒng)155模擬由模擬156模擬的外部服務(wù)的故障。例如,指令121可以向系統(tǒng)155提供指定外部服務(wù)的故障的故障模擬消息182以進(jìn)行模擬。消息182可以指定可能發(fā)生在外部服務(wù)中的任何合適的故障。例如,消息182可以指示模擬156模擬慢的響應(yīng)時(shí)間(例如通過(guò)延遲對(duì)應(yīng)用105的響應(yīng)),波動(dòng)的響應(yīng)時(shí)間(例如通過(guò)改變響應(yīng)時(shí)間),非反應(yīng)性(例如通過(guò)不對(duì)來(lái)自應(yīng)用105的請(qǐng)求提供響應(yīng))等。在其它示例中,消息182可以指定任何其他合適的外部服務(wù)故障,例如提供不一致的響應(yīng)、不正確的響應(yīng)、誤差等。在系統(tǒng)155模擬多個(gè)外部服務(wù)的示例中,消息182還可以識(shí)別模擬156 (或由其模擬的外部服務(wù))。根據(jù)消息182中指定的故障,由外部服務(wù)模擬156執(zhí)行的故障模擬183可以包括任何這樣的響應(yīng)(或缺少這樣的響應(yīng))。
[0022]如本文使用的,外部服務(wù)的“故障”(或“外部服務(wù)故障”)可以是使得外部服務(wù)表現(xiàn)異常的外部服務(wù)的任何情況或情況的集合。在本文描述的示例中,如圖1中故障模擬183圖示的,外部服務(wù)的故障可以通過(guò)模擬依賴(lài)外部服務(wù)的應(yīng)用可能經(jīng)歷的故障的影響而模擬。本文描述的示例可以通過(guò)指示外部服務(wù)虛擬化系統(tǒng)模擬依賴(lài)外部服務(wù)的應(yīng)用可能經(jīng)歷的故障的影響,來(lái)指示該系統(tǒng)模擬外部服務(wù)故障。
[0023]在圖1的示例中,測(cè)試系統(tǒng)150可以在測(cè)試期間監(jiān)測(cè)應(yīng)用105的性能。在這些示例中,在應(yīng)用105的測(cè)試期間,測(cè)試系統(tǒng)150可以監(jiān)測(cè)應(yīng)用105對(duì)外部服務(wù)故障模擬183的響應(yīng),并且將應(yīng)用105對(duì)故障模擬183的響應(yīng)的指示184提供給計(jì)算設(shè)備100。例如,測(cè)試系統(tǒng)150可以收集指標(biāo)。在本文描述的示例中,“指標(biāo)”可以是量化或以其它方式表示應(yīng)用的性能的信息。在這些示例中,應(yīng)用的性能可以包括應(yīng)用的操作的功能正確性、執(zhí)行應(yīng)用的