分布式數(shù)據(jù)庫容錯(cuò)性故障注入測試工具
發(fā)布時(shí)間:2021-01-09 16:10
分布式數(shù)據(jù)庫對比集中式數(shù)據(jù)庫有更高的可擴(kuò)展性和性能。由于分布式數(shù)據(jù)庫的復(fù)雜性,在實(shí)際應(yīng)用過程中無法避免網(wǎng)絡(luò)中斷,丟包,節(jié)點(diǎn)宕機(jī)等軟硬件故障。為了減輕故障問題對分布式數(shù)據(jù)庫帶來的影響,分布式數(shù)據(jù)庫需要持續(xù)進(jìn)行故障注入測試,即在系統(tǒng)正常運(yùn)行過程中通過編碼模擬主動(dòng)觸發(fā)故障問題,提高分布式數(shù)據(jù)庫的可靠性以及驗(yàn)證系統(tǒng)內(nèi)部容錯(cuò)機(jī)制的正確性。本文設(shè)計(jì)并實(shí)現(xiàn)了針對分布式數(shù)據(jù)庫系統(tǒng)容錯(cuò)性問題的故障注入測試工具AFTest。主要貢獻(xiàn)為:1.輕量級的任務(wù)調(diào)度設(shè)計(jì):同時(shí)支持手動(dòng)提交測試案例和自動(dòng)遍歷已有情況下的事件組合情況。測試人員可以通過前端界面實(shí)時(shí)查詢測試進(jìn)度,歷史記錄以及被測試系統(tǒng)當(dāng)前狀態(tài)。后端任務(wù)調(diào)度程序能夠定時(shí)生成測試案例并根據(jù)案例生成執(zhí)行腳本,然后分配工作線程執(zhí)行測試并記錄相應(yīng)的日志信息和測試過程中系統(tǒng)狀態(tài)的變化。2.實(shí)現(xiàn)了一個(gè)故障注入框架:分析分布式數(shù)據(jù)庫在現(xiàn)實(shí)應(yīng)用過程中曾經(jīng)出現(xiàn)的各類軟硬件故障問題,通過編碼模擬實(shí)現(xiàn)其中常見的多種軟硬件故障問題以及Cedar特有的系統(tǒng)操作。模塊化故障注入框架便于嵌入測試工具中使用。3.減少事件組合空間冗余問題:深度遍歷所有故障組合事件,避免繁瑣的測試案例編寫,更...
【文章來源】: 沈靖 華東師范大學(xué)
【文章頁數(shù)】:77 頁
【學(xué)位級別】:碩士
【部分圖文】:
4對稱性
第六章消除冗余案例華東師范大學(xué)碩士學(xué)位論文49為了體現(xiàn)這兩個(gè)不同順序組合之間因?yàn)閷ΨQ性而表現(xiàn)出的一致性,直觀方法是將節(jié)點(diǎn)間信息傳遞過程抽象成模型。我們能夠?qū)⒆钕劝l(fā)出請求的節(jié)點(diǎn)定義為1,之后回復(fù)請求的節(jié)點(diǎn)定義為2,這樣一來,原本圖6.1b中寫請求X是從A-B就轉(zhuǎn)變成了X是從1-2,同樣的在圖6.1c中寫請求M是從B-A轉(zhuǎn)變成1-2,也就是說兩張圖中事件發(fā)生的順序都是同樣類型的寫請求從節(jié)點(diǎn)1傳遞給節(jié)點(diǎn)2并得到回復(fù),然后再是同樣類型的寫請求從節(jié)點(diǎn)2傳遞給節(jié)點(diǎn)1并得到回復(fù),這樣的事件發(fā)生過程是一致的。當(dāng)然僅僅從節(jié)點(diǎn)間寫請求傳遞的對稱性不足以描述分布式數(shù)據(jù)庫中更為復(fù)雜的情況,諸如領(lǐng)導(dǎo)者選舉協(xié)議中信息傳遞過程中會(huì)帶有各自節(jié)點(diǎn)中的投票信息。但是從這個(gè)信息傳遞的對稱性出發(fā),考慮到分布式數(shù)據(jù)庫中不同節(jié)點(diǎn)有不同的角色分類,集群內(nèi)的身份變換通常取決于節(jié)點(diǎn)間的信息傳遞。進(jìn)一步思考分布式數(shù)據(jù)庫中各節(jié)點(diǎn)身份變化引起的狀態(tài)對稱性也能發(fā)現(xiàn)更多的冗余情況。從上圖6.2中的并發(fā)更新可以更為直觀的體現(xiàn)狀態(tài)對稱性。圖6.2是一個(gè)簡單的Paxos一致性協(xié)議第一階段更新提交的流程。節(jié)點(diǎn)A廣播自身的請求信息,兩條請求分別發(fā)給自身和節(jié)點(diǎn)B并且都附加了提案號為1的信息。同樣節(jié)點(diǎn)B廣播自身的請求信息也分別發(fā)送給自身和節(jié)點(diǎn)A并且都附帶了提案號為2。單獨(dú)判斷圖6.2左右兩圖中不同的執(zhí)行順序,我們明顯能發(fā)現(xiàn)這是兩種不同的情況,圖6.215狀態(tài)對稱性
第六章消除冗余案例華東師范大學(xué)碩士學(xué)位論文52作的先后順序,比如將對變量x的先寫后讀改成先讀后寫。那么節(jié)點(diǎn)A對于節(jié)點(diǎn)B中的操作是獨(dú)立于節(jié)點(diǎn)B對節(jié)點(diǎn)A的操作的。只要單個(gè)節(jié)點(diǎn)的相對讀寫順序不改變,不管節(jié)點(diǎn)間事件順序如何變化,最終兩個(gè)節(jié)點(diǎn)的狀態(tài)變化都是一致的,所以沒有必要改變獨(dú)立事件之間的發(fā)生順序。實(shí)現(xiàn)這個(gè)方法的主要問題是如何評估事件之間的獨(dú)立性。我們在測試工具實(shí)現(xiàn)過程中依舊通過Reporter采集的分布式數(shù)據(jù)庫集群中各個(gè)節(jié)點(diǎn)的狀態(tài)信息,并根據(jù)各個(gè)事件發(fā)生時(shí)所涉及的操作建立各個(gè)事件對應(yīng)的受到其影響的變量集合,比如讀取的數(shù)據(jù)集合,需要修改的數(shù)據(jù)集合。因此對于兩個(gè)事件E1E2,只要E1的讀取數(shù)據(jù)集合和E2的修改數(shù)據(jù)集合不重合,那么這兩個(gè)事件之間就是獨(dú)立不相干的,反之亦然。一旦判定事件之間是獨(dú)立的那么這兩者之間就可以互相交換,不需要再重復(fù)測試多余的事件組合的測試案例。故障注入測試中包括節(jié)點(diǎn)宕機(jī)的故障注入事件,節(jié)點(diǎn)的宕機(jī)對于發(fā)現(xiàn)分布式數(shù)據(jù)庫深層次故障問題非常有必要,根據(jù)針對分布式系統(tǒng)中故障問題的詳細(xì)研究,分布式并發(fā)問題中有50%的觸發(fā)條件需要至少存在一個(gè)節(jié)點(diǎn)宕機(jī),還有12%的故障問題觸發(fā)條件需要至少兩個(gè)節(jié)點(diǎn)在特定時(shí)間宕機(jī)[26]。由于節(jié)點(diǎn)宕機(jī)會(huì)對集群產(chǎn)生較大影響,針對節(jié)點(diǎn)宕機(jī)事件的重新排序也就會(huì)耗費(fèi)更多的測試時(shí)間。因此根據(jù)事件獨(dú)立性能減少不必要的宕機(jī)事件組合而成的測試案例。比如,在分布圖6.316事件獨(dú)立性
本文編號:2966984
【文章來源】: 沈靖 華東師范大學(xué)
【文章頁數(shù)】:77 頁
【學(xué)位級別】:碩士
【部分圖文】:
4對稱性
第六章消除冗余案例華東師范大學(xué)碩士學(xué)位論文49為了體現(xiàn)這兩個(gè)不同順序組合之間因?yàn)閷ΨQ性而表現(xiàn)出的一致性,直觀方法是將節(jié)點(diǎn)間信息傳遞過程抽象成模型。我們能夠?qū)⒆钕劝l(fā)出請求的節(jié)點(diǎn)定義為1,之后回復(fù)請求的節(jié)點(diǎn)定義為2,這樣一來,原本圖6.1b中寫請求X是從A-B就轉(zhuǎn)變成了X是從1-2,同樣的在圖6.1c中寫請求M是從B-A轉(zhuǎn)變成1-2,也就是說兩張圖中事件發(fā)生的順序都是同樣類型的寫請求從節(jié)點(diǎn)1傳遞給節(jié)點(diǎn)2并得到回復(fù),然后再是同樣類型的寫請求從節(jié)點(diǎn)2傳遞給節(jié)點(diǎn)1并得到回復(fù),這樣的事件發(fā)生過程是一致的。當(dāng)然僅僅從節(jié)點(diǎn)間寫請求傳遞的對稱性不足以描述分布式數(shù)據(jù)庫中更為復(fù)雜的情況,諸如領(lǐng)導(dǎo)者選舉協(xié)議中信息傳遞過程中會(huì)帶有各自節(jié)點(diǎn)中的投票信息。但是從這個(gè)信息傳遞的對稱性出發(fā),考慮到分布式數(shù)據(jù)庫中不同節(jié)點(diǎn)有不同的角色分類,集群內(nèi)的身份變換通常取決于節(jié)點(diǎn)間的信息傳遞。進(jìn)一步思考分布式數(shù)據(jù)庫中各節(jié)點(diǎn)身份變化引起的狀態(tài)對稱性也能發(fā)現(xiàn)更多的冗余情況。從上圖6.2中的并發(fā)更新可以更為直觀的體現(xiàn)狀態(tài)對稱性。圖6.2是一個(gè)簡單的Paxos一致性協(xié)議第一階段更新提交的流程。節(jié)點(diǎn)A廣播自身的請求信息,兩條請求分別發(fā)給自身和節(jié)點(diǎn)B并且都附加了提案號為1的信息。同樣節(jié)點(diǎn)B廣播自身的請求信息也分別發(fā)送給自身和節(jié)點(diǎn)A并且都附帶了提案號為2。單獨(dú)判斷圖6.2左右兩圖中不同的執(zhí)行順序,我們明顯能發(fā)現(xiàn)這是兩種不同的情況,圖6.215狀態(tài)對稱性
第六章消除冗余案例華東師范大學(xué)碩士學(xué)位論文52作的先后順序,比如將對變量x的先寫后讀改成先讀后寫。那么節(jié)點(diǎn)A對于節(jié)點(diǎn)B中的操作是獨(dú)立于節(jié)點(diǎn)B對節(jié)點(diǎn)A的操作的。只要單個(gè)節(jié)點(diǎn)的相對讀寫順序不改變,不管節(jié)點(diǎn)間事件順序如何變化,最終兩個(gè)節(jié)點(diǎn)的狀態(tài)變化都是一致的,所以沒有必要改變獨(dú)立事件之間的發(fā)生順序。實(shí)現(xiàn)這個(gè)方法的主要問題是如何評估事件之間的獨(dú)立性。我們在測試工具實(shí)現(xiàn)過程中依舊通過Reporter采集的分布式數(shù)據(jù)庫集群中各個(gè)節(jié)點(diǎn)的狀態(tài)信息,并根據(jù)各個(gè)事件發(fā)生時(shí)所涉及的操作建立各個(gè)事件對應(yīng)的受到其影響的變量集合,比如讀取的數(shù)據(jù)集合,需要修改的數(shù)據(jù)集合。因此對于兩個(gè)事件E1E2,只要E1的讀取數(shù)據(jù)集合和E2的修改數(shù)據(jù)集合不重合,那么這兩個(gè)事件之間就是獨(dú)立不相干的,反之亦然。一旦判定事件之間是獨(dú)立的那么這兩者之間就可以互相交換,不需要再重復(fù)測試多余的事件組合的測試案例。故障注入測試中包括節(jié)點(diǎn)宕機(jī)的故障注入事件,節(jié)點(diǎn)的宕機(jī)對于發(fā)現(xiàn)分布式數(shù)據(jù)庫深層次故障問題非常有必要,根據(jù)針對分布式系統(tǒng)中故障問題的詳細(xì)研究,分布式并發(fā)問題中有50%的觸發(fā)條件需要至少存在一個(gè)節(jié)點(diǎn)宕機(jī),還有12%的故障問題觸發(fā)條件需要至少兩個(gè)節(jié)點(diǎn)在特定時(shí)間宕機(jī)[26]。由于節(jié)點(diǎn)宕機(jī)會(huì)對集群產(chǎn)生較大影響,針對節(jié)點(diǎn)宕機(jī)事件的重新排序也就會(huì)耗費(fèi)更多的測試時(shí)間。因此根據(jù)事件獨(dú)立性能減少不必要的宕機(jī)事件組合而成的測試案例。比如,在分布圖6.316事件獨(dú)立性
本文編號:2966984
本文鏈接:http://www.sikaile.net/kejilunwen/shengwushengchang/2966984.html
最近更新
教材專著