騰訊區域鏈領域的混沌工程實踐

摘取自 騰訊區塊鏈測試團隊的混沌工程實踐

[初衷]:做虛擬化方面的混沌工程實踐有段時間了,也想看下其它產品混沌工程如何展開的。

一個產品(業務鏈)為什么要進行混沌工程演練

區塊鏈是一種由多方共同維護,使用密碼學保證傳輸和訪問安全,能夠實現數據一致存儲、難以篡改、防止抵賴的記賬技術,也稱為分布式賬本技術

按照接入范圍,區塊鏈可分為公有鏈、聯盟鏈和私有鏈。

目前國內最普遍使用的是聯合行業或組織內成員搭建合作、共贏的聯盟鏈。區塊鏈服務建立在分布式系統之上,可能遇到的故障非常多,不僅僅是節點故障、各種網絡故障、文件系統故障,甚至內核錯誤都時有發生。如果區塊鏈服務不能很好地處理這些異常,那么服務的穩定性將遭到挑戰,其后果也不堪設想。出于此考慮,騰訊金融科技區塊鏈測試團隊建立了適用于區塊鏈領域的混沌工程實施框架。

[匯總一句話]區域鏈服務是建立在分布式系統之上,服務的穩定性可能存在不可預知的問題,需要混沌工程來解決。

混沌工程穩態假設:業務指標(如何判斷區塊鏈服務是否正常?)

區塊鏈往往是個基于EDA架構的自運轉系統,無請求時,也會有空塊產出,而聯盟鏈通常采用的是BFT類共識算法,該類算法支持3F+1容錯,所以判斷區塊鏈的對外服務是否正常不能單一依據節點進程是否運行來給出,這里給出幾個體現區塊鏈服務是否正常的健康度指標,也就是混沌工程里提到的穩態指標。

1)節點數據一致性

區塊鏈中的數據是經過共識節點交叉驗證后存儲上鏈的,所以正常預期是分布式的節點數據滿足最終一致性,這些數據包括區塊數據、交易數據、業務數據等。所以需要提供數據一致性校驗工具。

2)并發場景下區塊鏈服務的QPS/TPS

在穩定并發場景下,區塊鏈對外服務的QPS、TPS應該保持穩定,如果注入一些網絡延遲、或者CPU高負載等異常,會導致QPS/TPS波動起伏,不再穩定。

3)并發場景下區塊鏈服務的響應時間(RT)

同樣地,在穩定并發場景下,區塊鏈對外服務的響應時間應該保持穩定,波動不大,注入異常后,會引起RT的波動,也會破壞系統穩態。

4)區塊鏈在一段時間內的round切換頻率

共識節點出現異常,導致發起的提案失敗,會引發round值的切換,觸發下一個節點發起共識,所以一個區塊內round值越大,說明系統出現問題的概率越大。

5)區塊鏈在一段時間內不同節點的高度差

區塊鏈是一個自轉系統,在無請求時,高度也會追加,正常情況下,不同節點在共識+同步的雙重影響下,高度不會差距太大,如果出現不同節點高度差有變大的趨勢,也預示著系統的穩態遭到破壞。

[收益的點]不同產品定義各自的業務指標,不同深度的指標,表示該產品對業務服務的精細化(SLA),也表示該產品對其穩定性的決心。數據有多份,是檢查多份間數據的一致性還是檢查容錯忍受范圍內的數據一致性,拜占庭機制下只要大于一半以上的均是可以對外提供服務的。業務服務是并發場景下QPS/TPS,還是單場景下的,一個產品支持1億萬用戶在線,只要少于1億用戶都是問題。一個產品客戶端頁面響應時間在2-5秒,只要影響這個響應時長的都是問題。拿虛擬化產品來說,業務是以支持1千用戶創建虛機成功的指標為標準還是任意用戶創建虛機的本次操作成功為標準。前者可能是某個時間段內,比如5分鐘內1千用戶創建虛機成功的指標,后者偏向于一次虛機創建是否成功。

混沌工程穩態假設(可觀測性指標)

可觀測性,在系統中是非常重要的一環。通常來說可觀測性主要包含 Metrics(指標),Logging(日志)和 Tracing(追蹤)。三者的關系如下圖所示:

[自己一點經驗]這三點都有,對于混沌工程的推進和問題定位收斂,起到事半功倍的作用,進行過混沌工程演練的人一定深有體會。

基于工作流的混沌工程實施框架

整個實施框架分為以下幾部分:

BlockChain:被測區塊鏈網絡區域,搭建好的區塊鏈網絡分為共識域和同步域,每個區塊鏈節點上都會部署相應的ChaosAgent。

Load/Test Script:壓測腳本,用來對被測的區塊鏈網絡施加穩定的基準流量,這些流量用例包括合約執行、交易上鏈、交易查詢等。

ChaosServer:負責接收指令請求,向具體的節點施加具體的異常場景,包括CPU、磁盤、網絡、進程等。

Tools:配套工具集,包括部署、日志收集、數據分析等。

Scheduler:混沌場景調度器,將某個時間點向某個節點施加某個異常,以工作流的形式放入任務隊列中,然后調度器按時取任務,然后向ChaosServer發送命令請求。

我們借助PipeLine搭建了區塊鏈的DevOps研發流水線。流水線將開發自測、構建、覆蓋率、質量紅線、異常測試、混沌實驗、自動化測試、報告收集等流程打通。

通過對區塊鏈實施混沌實驗,并將故障注入、實驗分析、可觀測性告警等流程自動化后,帶來的收益也較為顯著:

1)自動化實施混沌實驗,可減少手工構造異常場景的時間成功。

2)模擬的故障場景豐富,可涵蓋接近真實生產的異常條件。

3)結合系統可觀測性的實現,可以實現分鐘級問題發現和告警能力,并且累計發現Bug數十個,回歸混沌場景數百次。

[感受]不同的評價緯度,也是其對混沌工程的看法。混沌工程的好壞不能以故障注入的時長為標準,某種意義上的還行。混沌演練工具也有發展階段,如果在初期,也存在不穩定的情況,有可能還沒有手工注入的時間短。

?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,663評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,125評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,506評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,614評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,402評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,934評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,021評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,168評論 0 287
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,690評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,596評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,784評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,288評論 5 357
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,027評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,404評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,662評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,398評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,743評論 2 370

推薦閱讀更多精彩內容