專利名稱:用于分布式應(yīng)用確認(rèn)的模型檢查的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)應(yīng)用領(lǐng)域,尤其涉及分布式應(yīng)用。
背景技術(shù):
分布式系統(tǒng)的復(fù)雜性及其測試機(jī)制已經(jīng)被廣泛地探索了許多年。在分布式系統(tǒng)中存在許多固有的挑戰(zhàn),諸如異步通信的等待時(shí)間、差錯(cuò)恢復(fù)、時(shí)鐘漂移、以及服務(wù)分區(qū),從而導(dǎo)致眾多問題,包括死鎖、競爭條件、以及許多其他困難。測試這樣的復(fù)雜系統(tǒng)提出了巨大挑戰(zhàn)。在幾年中,已經(jīng)調(diào)查并實(shí)現(xiàn)了許多自動(dòng)測試生成、部署以及執(zhí)行方法。然而,在自動(dòng)系統(tǒng)確認(rèn)和驗(yàn)證的領(lǐng)域中仍然要求大量努力。由于事件順序控制復(fù)雜性以及隨著系統(tǒng)規(guī)模增加導(dǎo)致的測試場景的激增,絕大多數(shù)測試方法在使用基于模型的方法方面是隨機(jī)的。在這樣的情況下,驗(yàn)證無法與特定動(dòng)作和故障相耦合。典型的當(dāng)前模型構(gòu)造分布式系統(tǒng)可到達(dá)并隨后進(jìn)行蠻力驗(yàn)證的狀態(tài)圖,這導(dǎo)致狀態(tài)空間激增以及高級系統(tǒng)抽象中的困難。大型分布式系統(tǒng)的一個(gè)示例是微軟TM SQL Azure0 SQL Azure提供基于云的存儲服務(wù),該基于云的存儲服務(wù)可將大量數(shù)據(jù)存儲在分布式數(shù)據(jù)中心中的各種實(shí)際物理硬件上。SQL Azure是巨大的分布式系統(tǒng)。另外,系統(tǒng)規(guī)模動(dòng)態(tài)地改變以便提供彈性存儲。不僅對這樣的系統(tǒng)的開發(fā)而且對這樣的系統(tǒng)的測試提出了巨大挑戰(zhàn)。傳統(tǒng)測試方法可能在一個(gè)物理計(jì)算機(jī)上測試功能,并依賴故障注入來測試故障轉(zhuǎn)移以及依賴長運(yùn)距工具來將負(fù)載引入系統(tǒng)。測試隨后可檢查分布式系統(tǒng)是否健康而沒有錯(cuò)誤、沒有分區(qū)處于異常狀態(tài)、沒有節(jié)點(diǎn)處于停機(jī)等等。調(diào)查分布式系統(tǒng)的問題是非平凡的過程。當(dāng)分布式系統(tǒng)上發(fā)生問題時(shí),調(diào)查涉及特定領(lǐng)域的專長和知識。太多軌跡可涉及相關(guān)(correlation)和長期調(diào)查。當(dāng)前,事件相關(guān)是手動(dòng)地進(jìn)行的,該相關(guān)涉及對一組歷史表的相關(guān)。不知道有關(guān)的系統(tǒng)組件的細(xì)節(jié),是難以追蹤到問題的根源的。監(jiān)視分布式系統(tǒng)的健康也主要是手動(dòng)過程。受限自動(dòng)監(jiān)視可檢查某些因素,諸如可用性、服務(wù)切換以及監(jiān)督錯(cuò)誤,但個(gè)人只是在某一事物出錯(cuò)的情況下檢查其他大量的度量;否則,信息僅被記錄并被忽略。另外,某些異常行為本身可能不表現(xiàn)為明顯的應(yīng)用錯(cuò)誤或?qū)е旅黠@的應(yīng)用錯(cuò)誤,或可以無法按自動(dòng)監(jiān)視需要的方式被永久存儲。典型示例是存儲器中的狀態(tài)、由于失效觸發(fā)事件的不必要狀態(tài)轉(zhuǎn)換、 以及可被手動(dòng)檢查忽略的瞬時(shí)健康狀態(tài)。
發(fā)明內(nèi)容
此處描述了模型檢查系統(tǒng),該模型檢查系統(tǒng)通過提供模型和通用框架來檢查應(yīng)用不變屬性、檢測異常行為并監(jiān)視應(yīng)用健康從而有效地驗(yàn)證和確認(rèn)分布式應(yīng)用的設(shè)計(jì)。由模型檢查器驗(yàn)證的屬性適用于該系統(tǒng)中的單個(gè)實(shí)體、適用于該系統(tǒng)中的許多實(shí)體的組、以及適用于作為整體的系統(tǒng)。模型檢查系統(tǒng)檢查針對從應(yīng)用的正式描述所導(dǎo)出的應(yīng)用模型來檢查在線應(yīng)用行為,這被稱為模型檢查。該系統(tǒng)將具體應(yīng)用制定為抽象模型以及期望在所有條件下適用于應(yīng)用的多個(gè)規(guī)則或?qū)傩?。存在四個(gè)類型的不變屬性,包括安全性——在系統(tǒng)中任何點(diǎn)處總為真;活躍度——在系統(tǒng)中故障靜止之后最終為真;公平性——沒有總是忽略某些可應(yīng)用的轉(zhuǎn)換的系統(tǒng)執(zhí)行;以及穩(wěn)定性——在某一時(shí)間點(diǎn)之后總為真。模型檢查器將實(shí)際應(yīng)用執(zhí)行與模型相比較,并且確認(rèn)屬性保持為真或是報(bào)告屬性被違反。在可同步進(jìn)行各種驗(yàn)證和確認(rèn)活動(dòng)的情況下,實(shí)現(xiàn)了通用框架。模型檢查系統(tǒng)將目標(biāo)分布式應(yīng)用建模成小的有限狀態(tài)機(jī)的集合和依賴圖來捕捉組件之間的相關(guān)。在某些實(shí)施例中,模型檢查器所使用的相關(guān)關(guān)鍵字不依賴于分布式應(yīng)用運(yùn)行的機(jī)器上的物理時(shí)鐘時(shí)間。該系統(tǒng)基于事件依賴圖自動(dòng)地執(zhí)行根本原因分析。即使失敗涉及多個(gè)機(jī)器、組件和日志,該系統(tǒng)可將整個(gè)事件序列進(jìn)行相關(guān),以便從在每一組件的貢獻(xiàn)動(dòng)作期間一直導(dǎo)致問題的操作來跟蹤該問題。由此,模型檢查系統(tǒng)提供了在更現(xiàn)實(shí)的生產(chǎn)條件下對分布式應(yīng)用的有效且全面的確認(rèn)。提供發(fā)明內(nèi)容述以便以簡化形式介紹將在以下的具體實(shí)施方式
中進(jìn)一步描述的一些概念。本發(fā)明內(nèi)容并不旨在標(biāo)識所要求保護(hù)主題的關(guān)鍵特征或必要特征,也不旨在用于限制所要求保護(hù)主題的范圍。
圖1是示出在一個(gè)實(shí)施例中的模型檢查系統(tǒng)的各組件的框圖。圖2是示出在一個(gè)實(shí)施例中的模型檢查系統(tǒng)用于使用模型檢查來執(zhí)行分布式應(yīng)用的處理的流程圖。圖3是示出在一個(gè)實(shí)施例中模型檢查系統(tǒng)用于學(xué)習(xí)分布式應(yīng)用行為的一個(gè)或多個(gè)模型的處理的流程圖。
具體實(shí)施例方式此處描述了模型檢查系統(tǒng),該模型檢查系統(tǒng)通過提供模型和通用框架來檢查應(yīng)用不變屬性、檢測異常行為并監(jiān)視應(yīng)用健康從而更有效地驗(yàn)證和確認(rèn)分布式應(yīng)用的設(shè)計(jì)。模型檢查系統(tǒng)檢查針對從應(yīng)用的正式描述所導(dǎo)出的應(yīng)用模型來檢查在線應(yīng)用行為,這被稱為模型檢查。該系統(tǒng)將具體應(yīng)用制定為抽象模型以及期望在所有條件下適用于應(yīng)用的多個(gè)規(guī)則或?qū)傩浴DP蜋z查器將實(shí)際應(yīng)用執(zhí)行與模型相比較,并且確認(rèn)屬性保持為真或是報(bào)告屬性被違反。與現(xiàn)有模型檢查方法相比,此處描述的模型檢查系統(tǒng)不遭受狀態(tài)空間激增的問題和高級系統(tǒng)抽象中的困難。在這一系統(tǒng)中,應(yīng)用模型是應(yīng)用行為的充分選擇的方面并以容易且直接的方式來描述。該系統(tǒng)具有橫向擴(kuò)展和縱向擴(kuò)展的靈活性。另外,該系統(tǒng)提供追蹤至根本原因以供錯(cuò)誤分析的功能,這節(jié)省了大量人類調(diào)查的時(shí)間。在可同步或異步地進(jìn)行各種驗(yàn)證和確認(rèn)活動(dòng)的情況下,實(shí)現(xiàn)了通用框架。對于應(yīng)用專用模型、其對應(yīng)的行為提供者、以及模型檢查器,該框架易于擴(kuò)展。模型檢查系統(tǒng)將目標(biāo)分布式應(yīng)用建模成小的有限狀態(tài)機(jī)的集合和依賴圖來捕捉組件之間的相關(guān)。該系統(tǒng)基于事件依賴圖自動(dòng)地執(zhí)行根本原因分析。即使失敗涉及多個(gè)機(jī)器、組件和日志,該系統(tǒng)可將整個(gè)事件序列進(jìn)行相關(guān),以從在每一組件的貢獻(xiàn)動(dòng)作期間一直導(dǎo)致問題的操作來跟蹤該問題。該系統(tǒng)還提供通用框架以允許除了有限狀態(tài)以外的可由應(yīng)用開發(fā)者添加以供進(jìn)一步測試其分布式應(yīng)用的各種確認(rèn)方法。由此,模型檢查系統(tǒng)提供了在現(xiàn)實(shí)的生產(chǎn)條件下對分布式應(yīng)用的更有效且全面的確認(rèn)。以下段落更詳細(xì)地描述模型檢查系統(tǒng),從而呈現(xiàn)模型檢查機(jī)制以便通過使用所提議的框架來確認(rèn)并驗(yàn)證分布式應(yīng)用的行為。建立模型使用某領(lǐng)域的知識來定義和構(gòu)建該模型,并且這提供更多的靈活性來合并新特征、丟棄舊特征、確定要檢查什么行為、以及要調(diào)查多少細(xì)節(jié)。這一機(jī)制有助于以更為成本有效的方式來在大規(guī)模應(yīng)用的可靠性方面獲得置信、減小錯(cuò)誤調(diào)查時(shí)間、以及執(zhí)行詳細(xì)的驗(yàn)證。另外,該框架允許到其他應(yīng)用的方便擴(kuò)展。艦?zāi)P蜋z查是基于一組所抽象的規(guī)則或不變屬性來自動(dòng)分析反應(yīng)系統(tǒng)的過程。它具有一旦錯(cuò)誤發(fā)生在某些可觀察輸出級就檢測到錯(cuò)誤行為的能力。這具有在與晚期階段發(fā)現(xiàn)相比校正更便宜的早期階段標(biāo)識定時(shí)問題并防止災(zāi)難性失敗的潛能,其在生產(chǎn)環(huán)境中呈現(xiàn)很大的價(jià)值。在某些實(shí)施例中,模型檢測系統(tǒng)依賴于最終被表示為某些類型的日志文件的系統(tǒng)行為。這樣的日志可忠實(shí)地捕捉所有相關(guān)應(yīng)用行為,包括應(yīng)用狀態(tài)轉(zhuǎn)換、錯(cuò)誤、以及性能度量。在某些實(shí)施例中,分布式系統(tǒng)的日志被集成到中央存儲以便于失敗調(diào)查。只要提供了對應(yīng)的日志讀取器,模型檢查引擎就不依賴于集中式軌跡存儲。在引擎內(nèi)部,這一工作是通過若干管理組件及其工作者的協(xié)作來完成的。模型是要分析的目標(biāo)應(yīng)用的某些不變屬性。為示出該框架,考慮一下三個(gè)類型的模型——有限狀態(tài)機(jī)(FSM)、錯(cuò)誤、以及性能度量——作為示例,但它們不限于此處所討論的類型。第一類型的模型是有限狀態(tài)機(jī)模型。為避免模型抽象的復(fù)雜性和狀態(tài)空間激增的問題,該系統(tǒng)聚焦于在各個(gè)機(jī)器上運(yùn)行的FSM。FSM之間的關(guān)系是通過對不同機(jī)器上的事件進(jìn)行相關(guān)來捕捉的。換言之,應(yīng)用行為被變換成小的FSM集合以及事件依賴圖。變量對于分布式系統(tǒng)的大小都是不變的。該系統(tǒng)將狀態(tài)中的每一個(gè)定義為以下類型之一 Atart (開始)(FSM的入口點(diǎn)),Normal (正常)(除最終以外的任何可接受狀態(tài)),以及Final (最終) (沒有事件可觸發(fā)從這一狀態(tài)的轉(zhuǎn)換)。對于Mart和Normal狀態(tài),狀態(tài)生存期的某一統(tǒng)
計(jì)信息在學(xué)習(xí)階段期間被收集,隨后它被用于執(zhí)行驗(yàn)證。以下是典型狀態(tài)機(jī)及其模型描述。
權(quán)利要求
1.一種用于執(zhí)行分布式應(yīng)用以及驗(yàn)證分布式系統(tǒng)行為的正確性的計(jì)算機(jī)實(shí)現(xiàn)的方法, 所述方法包括接收(210)描述所述分布式應(yīng)用的期望行為的一個(gè)或多個(gè)模型;在線或離線地開始(220)模型檢測服務(wù),所述模型檢測服務(wù)監(jiān)視所述分布式應(yīng)用的執(zhí)行以檢測所述應(yīng)用的行為;收集(230) —個(gè)或多個(gè)軌跡,所述一個(gè)或多個(gè)軌跡將所述應(yīng)用的行為描述為發(fā)生在所述應(yīng)用的分布式組件處的一系列一個(gè)或多個(gè)事件;基于所收集的軌跡來標(biāo)識(MO) —個(gè)或多個(gè)事件;針對所標(biāo)識的事件來檢查(250)所接收的一個(gè)或多個(gè)模型,以確定是否已發(fā)生任何非期望的應(yīng)用行為;以及在確定(260)模型檢查失敗之后,標(biāo)識( )與所述失敗的模型檢查有關(guān)的根本原因事件;以及基于所標(biāo)識的根本原因和失敗的模型檢查來報(bào)告(270)錯(cuò)誤,其中前面的各步驟由至少一個(gè)處理器來執(zhí)行。
2.如權(quán)利要求1所述的方法,其特征在于,接收所述一個(gè)或多個(gè)模型包括接收以從由有限狀態(tài)機(jī)、錯(cuò)誤和性能度量組成的組中選出的形式的分布式應(yīng)用的一個(gè)或多個(gè)不變屬性。
3.如權(quán)利要求1所述的方法,其特征在于,接收一個(gè)或多個(gè)模型包括接收對所述應(yīng)用的每一組件進(jìn)行建模的有限狀態(tài)機(jī)以及對各組件之間的依賴性進(jìn)行建模的依賴圖。
4.如權(quán)利要求1所述的方法,其特征在于,開始所述模型檢查服務(wù)包括開始一個(gè)或多個(gè)軌跡加載器,所述一個(gè)或多個(gè)軌跡加載器觀察所述應(yīng)用的各組件以獲取描述所述應(yīng)用內(nèi)發(fā)生的事情的輸出信息。
5.如權(quán)利要求1所述的方法,其特征在于,收集一個(gè)或多個(gè)軌跡包括收集日志文件并聚集到中央位置以供處理。
6.如權(quán)利要求1所述的方法,其特征在于,標(biāo)識一個(gè)或多個(gè)事件包括將各事件進(jìn)行相關(guān)以標(biāo)識源自所述應(yīng)用內(nèi)相同動(dòng)作的各事件,使得如果非期望應(yīng)用行為被標(biāo)識,則可追溯事件鏈至所述失敗的根本原因。
7.如權(quán)利要求1所述的方法,其特征在于,檢查所述模型包括標(biāo)識違反所述模型的狀態(tài)轉(zhuǎn)換以及向用戶報(bào)告模型違反。
8.如權(quán)利要求1所述的方法,其特征在于,檢查所述模型包括標(biāo)識在所述應(yīng)用正在正確地行為的情況下不會發(fā)生的錯(cuò)誤以及向用戶報(bào)告模型違反。
9.如權(quán)利要求1所述的方法,其特征在于,檢查所述模型包括標(biāo)識在預(yù)定的閾值以外的性能度量以及向用戶報(bào)告模型違反。
10.如權(quán)利要求1所述的方法,其特征在于,標(biāo)識根本原因事件包括導(dǎo)航與使所述模型檢查失敗的事件相關(guān)的事件鏈,并且其中標(biāo)識所述根本原因事件包括標(biāo)識不依賴于所述分布式應(yīng)用運(yùn)行的機(jī)器上的物理時(shí)鐘時(shí)間的相關(guān)關(guān)鍵字。
11.如權(quán)利要求1所述的方法,其特征在于,報(bào)告所述錯(cuò)誤包括向個(gè)人發(fā)送報(bào)告以供手動(dòng)分析以及更新所述模型或修復(fù)應(yīng)用軟件代碼中的隱錯(cuò)。
12.如權(quán)利要求1所述的方法,其特征在于,還包括在確定對所述應(yīng)用的監(jiān)視完成之后,停止所述模型檢查服務(wù)。
13.一種用于對分布式系統(tǒng)確認(rèn)進(jìn)行模型檢查的計(jì)算機(jī)系統(tǒng),所述系統(tǒng)包括 被配置成執(zhí)行包含在以下組件內(nèi)的軟件指令的處理器和存儲器;服務(wù)管理組件(110),所述服務(wù)管理組件(110)被配置成通過開始、停止、暫停、以及恢復(fù)模型檢查服務(wù)來管理模型檢查;應(yīng)用模型組件(120),所述應(yīng)用模型組件(120)被配置成管理所述分布式應(yīng)用的一個(gè)或多個(gè)模型,其中所述模型描述所述分布式應(yīng)用的不變的期望行為;軌跡管理組件(130),所述軌跡管理組件(130)被配置成控制軌跡讀取器的集合以便從與所述分布式應(yīng)用相關(guān)聯(lián)的各種資源中加載軌跡;模型檢查組件(140),所述模型檢查組件(140)被配置成管理模型檢查器的集合以學(xué)習(xí)并且驗(yàn)證所述分布式應(yīng)用的行為;事件相關(guān)組件(150),所述事件相關(guān)組件(150)被配置成跨所述應(yīng)用對事件進(jìn)行相關(guān)并進(jìn)行根本原因分析以標(biāo)識根本原因事件;以及通知組件(160),所述通知組件(160)被配置成提供標(biāo)識通過模型檢查來標(biāo)識的非期望應(yīng)用行為的一個(gè)或多個(gè)報(bào)告和警告。
14.如權(quán)利要求13所述的系統(tǒng),其特征在于,所述模型檢查組件進(jìn)一步被配置成開始不同的檢查器,向每一檢查器分配特定模型,并加載對應(yīng)的檢查器配置。
15.如權(quán)利要求13所述的系統(tǒng),其特征在于,所述模型檢查組件還被配置成在所述應(yīng)用執(zhí)行時(shí),監(jiān)視所述分布式應(yīng)用的組件以獲取違反由模型所指定的一個(gè)或多個(gè)不變屬性的非期望應(yīng)用行為。
全文摘要
本發(fā)明公開了用于分布式應(yīng)用確認(rèn)的模型檢查。此處描述了模型檢查系統(tǒng),該模型檢查系統(tǒng)通過提供模型和通用框架來檢查應(yīng)用不變屬性、檢測異常行為并監(jiān)視應(yīng)用健康從而更有效地驗(yàn)證和確認(rèn)分布式應(yīng)用的設(shè)計(jì)。模型檢查系統(tǒng)針對從應(yīng)用的正式描述所導(dǎo)出的應(yīng)用模型來檢查在線應(yīng)用行為。該系統(tǒng)將具體應(yīng)用制定為抽象模型以及期望在所有條件下適用于應(yīng)用的多個(gè)規(guī)則或?qū)傩?。模型檢查器將實(shí)際應(yīng)用執(zhí)行與模型相比較,并且確認(rèn)屬性保持為真或是報(bào)告屬性被違反。由此,模型檢查系統(tǒng)提供了在更現(xiàn)實(shí)的生產(chǎn)條件下對分布式應(yīng)用的更有效且全面的確認(rèn)。
文檔編號G06F9/44GK102436376SQ201110340478
公開日2012年5月2日 申請日期2011年10月19日 優(yōu)先權(quán)日2010年10月20日
發(fā)明者L·張, L·繆, M·G·塔塔, P·宋 申請人:微軟公司