偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

G 行 EverDB 自動(dòng)化混沌測(cè)試之路

數(shù)據(jù)庫(kù) 其他數(shù)據(jù)庫(kù) 自動(dòng)化
EverDB是G行自有知識(shí)產(chǎn)權(quán)、與合作伙伴共研的一款基于中間件的分布式數(shù)據(jù)庫(kù)產(chǎn)品。在分布式架構(gòu)優(yōu)勢(shì)下實(shí)現(xiàn)了數(shù)據(jù)庫(kù)的可擴(kuò)展性,但與優(yōu)勢(shì)并存的是,分布式架構(gòu)組件多,集群規(guī)模大,組件或節(jié)點(diǎn)間有著各種調(diào)用或相互依賴,使得系統(tǒng)異常事件的發(fā)生概率大幅攀升。

本文轉(zhuǎn)載自微信公眾號(hào)「匠心獨(dú)運(yùn)維妙維效」,作者數(shù)據(jù)庫(kù)管理團(tuán)隊(duì)。轉(zhuǎn)載本文請(qǐng)聯(lián)系匠心獨(dú)運(yùn)維妙維效公眾號(hào)。

EverDB是G行自有知識(shí)產(chǎn)權(quán)、與合作伙伴共研的一款基于中間件的分布式數(shù)據(jù)庫(kù)產(chǎn)品。在分布式架構(gòu)優(yōu)勢(shì)下實(shí)現(xiàn)了數(shù)據(jù)庫(kù)的可擴(kuò)展性,但與優(yōu)勢(shì)并存的是,分布式架構(gòu)組件多,集群規(guī)模大,組件或節(jié)點(diǎn)間有著各種調(diào)用或相互依賴,使得系統(tǒng)異常事件的發(fā)生概率大幅攀升。

為盡早發(fā)現(xiàn)系統(tǒng)薄弱點(diǎn),做出彌補(bǔ)改進(jìn),我們?cè)诜植际綌?shù)據(jù)庫(kù)測(cè)試中引入了混沌工程理論。通過(guò)在系統(tǒng)環(huán)境中模擬故障,來(lái)觀察故障的發(fā)生對(duì)系統(tǒng)產(chǎn)生的影響,以期提前發(fā)現(xiàn)系統(tǒng)潛在的問(wèn)題與風(fēng)險(xiǎn),針對(duì)性的對(duì)系統(tǒng)進(jìn)行加固防范,這種測(cè)試方法被稱為混沌測(cè)試。本文為大家分享基于GitLab CI的自動(dòng)化混沌測(cè)試實(shí)踐。

混沌測(cè)試技術(shù)架構(gòu)

為實(shí)現(xiàn)混沌測(cè)試的敏捷性、靈活性和自動(dòng)化,我們選擇了云原生技術(shù)方案,整個(gè)混沌測(cè)試運(yùn)行于k8s平臺(tái),使用容器化技術(shù)Docker實(shí)現(xiàn)EverDB集群的容器化部署、Chaos Mesh實(shí)現(xiàn)故障注入、Argo workflow實(shí)現(xiàn)混沌測(cè)試流程編排、Prometheus+Grafana實(shí)現(xiàn)監(jiān)控?cái)?shù)據(jù)采集存儲(chǔ)和可視化。它們?cè)趉8s上的部署及連接關(guān)系如下圖1所示。

圖1 EverDB混沌測(cè)試部署架構(gòu)圖

其中,Argo workflow是整個(gè)混沌測(cè)試流程的總調(diào)度單元,無(wú)論是集群拉起還是故障注入,任何一個(gè)任務(wù)環(huán)節(jié)都在Argo workflow中進(jìn)行規(guī)范定義。Argo-server會(huì)依據(jù)我們定義的任務(wù)流程調(diào)度k8s資源(包括job,Statefulset,Chaos等)。

自動(dòng)化流程設(shè)計(jì)實(shí)現(xiàn)

當(dāng)前,EverDB代碼庫(kù)托管于GitLab平臺(tái)。EverDB每次發(fā)版前通過(guò)GitLab CI進(jìn)行功能回歸測(cè)試。為保持技術(shù)方案統(tǒng)一,我們將混沌測(cè)試集成到GitLab CI,由開(kāi)發(fā)人員在代碼提交后自動(dòng)觸發(fā)執(zhí)行,實(shí)現(xiàn)了EverDB發(fā)版前的自動(dòng)化混沌測(cè)試。同時(shí),考慮bug觸發(fā)的偶發(fā)性,混沌測(cè)試也被配置為周期性任務(wù),通過(guò)重復(fù)實(shí)驗(yàn)驗(yàn)證數(shù)據(jù)庫(kù)的可靠性。

圖2 EverDB混沌測(cè)試流程設(shè)計(jì)

上圖2即是EverDB的混沌測(cè)試流程設(shè)計(jì),實(shí)現(xiàn)依托于GitLab和k8s兩大平臺(tái),Chaos Mesh、Argo workflow兩個(gè)關(guān)鍵技術(shù)組件。主要包括Gitlab CI配置、EverDB集群部署、測(cè)試用例拉起、故障注入、測(cè)試報(bào)告生成和可視化跟蹤六個(gè)部分。

Gitlab CI配置

EverDB容器化集群及Chaos Mesh故障注入等組件均布置在k8s環(huán)境中,為了方便調(diào)度,我們將CI任務(wù)的執(zhí)行器(GitLab CI runner)也部署到k8s環(huán)境中,由它在k8s環(huán)境中調(diào)起測(cè)試流程。GitLab CI runner任務(wù)如下圖3。

圖3 Gitlab CI任務(wù)流程

GitLab CI任務(wù)實(shí)際是執(zhí)行了一個(gè)python腳本調(diào)起了一個(gè)混沌測(cè)試工作流。該腳本完成的工作有四部分:

參數(shù)解析處理,讀取用戶在CI任務(wù)中的設(shè)定的實(shí)驗(yàn)參數(shù)、配置文件并解析;

工作流模板渲染,利用第一步讀取的配置參數(shù),按照工作流模板渲染生成工作流;

工作流部署,將工作流部署到k8s平臺(tái)運(yùn)行;

持續(xù)檢查工作流狀態(tài),將工作流的運(yùn)行狀態(tài),成功與否反饋到CI平臺(tái)。

EverDB集群部署

源代碼提交時(shí)觸發(fā)CI任務(wù)進(jìn)行EverDB集群部署,包括源代碼編譯、制作鏡像上傳至鏡像倉(cāng)庫(kù)、使用最新鏡像在k8s平臺(tái)上部署EverDB集群。對(duì)于混沌測(cè)試周期性任務(wù),則從鏡像倉(cāng)庫(kù)中拉取最新的EverDB鏡像進(jìn)行部署。

圖5 EverDB源碼編譯打包上傳

測(cè)試用例拉起

EverDB集群部署完成后,CI任務(wù)會(huì)按照實(shí)驗(yàn)編排有序拉起測(cè)試用例。測(cè)試用例分為功能、性能和高可用三類,通過(guò)對(duì)比EverDB在正常運(yùn)行態(tài)和故障注入后運(yùn)行態(tài)的各項(xiàng)測(cè)試指標(biāo),驗(yàn)證數(shù)據(jù)庫(kù)對(duì)各種異常場(chǎng)景的處理能力和健壯性。

 

 

測(cè)試用例

測(cè)試內(nèi)容

壓力測(cè)試

Sysbench

OLTP基準(zhǔn)測(cè)試

數(shù)據(jù)庫(kù)一致性測(cè)試

Bank

并發(fā)轉(zhuǎn)賬,驗(yàn)證測(cè)試完成后賬戶余額總數(shù)

Bank2

增加事務(wù)競(jìng)爭(zhēng)度控制的Bank測(cè)試

Pbank

記錄每次讀寫(xiě)事務(wù)的操作以及返回結(jié)果

Tpc-c

五種事務(wù)模型并發(fā)執(zhí)行

數(shù)據(jù)庫(kù)隔離級(jí)別測(cè)試

Elle

并發(fā)讀寫(xiě)寄存器,檢查是否違反一致性模型

高可用測(cè)試

Hatest1-18

測(cè)試各種故障場(chǎng)景,驗(yàn)證數(shù)據(jù)庫(kù)高可用性是否符合預(yù)期


表1 測(cè)試用例表

故障注入

故障注入通過(guò)調(diào)用PingCAP開(kāi)源的混沌測(cè)試工具Chaos Mesh實(shí)現(xiàn)。Chaos Mesh使用Kubernetes CRD來(lái)定義Chaos對(duì)象資源,在EverDB混沌測(cè)試中,可以直接調(diào)度這些Chaos資源,模擬簡(jiǎn)單的故障場(chǎng)景,也可以對(duì)這些基礎(chǔ)Chaos資源進(jìn)行編排,構(gòu)造更復(fù)雜的故障場(chǎng)景。

圖6 故障注入支持類型

測(cè)試報(bào)告生成

測(cè)試用例在整個(gè)測(cè)試周期內(nèi)持續(xù)運(yùn)行,實(shí)現(xiàn)數(shù)據(jù)庫(kù)能力測(cè)試方案的同時(shí),也會(huì)采集測(cè)試指標(biāo)數(shù)據(jù)并進(jìn)行轉(zhuǎn)儲(chǔ)。測(cè)試結(jié)束后,測(cè)試報(bào)告生成模塊會(huì)進(jìn)行數(shù)據(jù)收集、分析、報(bào)告生成及歸檔。目前測(cè)試報(bào)告包括測(cè)試結(jié)論、環(huán)境參數(shù)和EverDB集群配置等信息,后續(xù)會(huì)隨著混沌測(cè)試實(shí)踐的深入,對(duì)結(jié)果信息進(jìn)行豐富和優(yōu)化。

圖 7 測(cè)試結(jié)果收集

可視化跟蹤

除了輸出測(cè)試報(bào)告以外,我們也可以使用可視化的Dashboard、監(jiān)控系統(tǒng)等工具,對(duì)整個(gè)混沌測(cè)試過(guò)程進(jìn)行實(shí)時(shí)跟蹤和觀察。

圖8 一個(gè)EverDB混沌測(cè)試工作流示例

總結(jié)與期待 

EverDB通過(guò)引入混沌測(cè)試,已在可靠性提升上有了一定的測(cè)試成果,同時(shí)我們對(duì)混沌測(cè)試的未來(lái)也進(jìn)行了思考與規(guī)劃。在測(cè)試擴(kuò)展方面,不斷豐富測(cè)試用例、編排更復(fù)雜的故障場(chǎng)景、完善測(cè)試報(bào)告內(nèi)容;通過(guò)建設(shè)混沌實(shí)驗(yàn)平臺(tái)使混沌測(cè)試常態(tài)化、便捷化;同時(shí)建立混沌測(cè)試文化,使其在G行分布式架構(gòu)轉(zhuǎn)型中發(fā)揮更大的作用。

 

責(zé)任編輯:武曉燕 來(lái)源: 匠心獨(dú)運(yùn)維妙維效
相關(guān)推薦

2022-11-08 07:20:55

EverDB混沌測(cè)試

2012-02-27 17:34:12

Facebook自動(dòng)化

2021-09-03 09:56:18

鴻蒙HarmonyOS應(yīng)用

2022-02-17 10:37:16

自動(dòng)化開(kāi)發(fā)團(tuán)隊(duì)預(yù)測(cè)

2013-05-16 10:58:44

Android開(kāi)發(fā)自動(dòng)化測(cè)試

2014-04-16 14:15:01

QCon2014

2023-01-10 07:26:12

監(jiān)控標(biāo)準(zhǔn)化演進(jìn)

2022-12-01 09:12:49

CodeQL自動(dòng)化審計(jì)

2015-11-09 14:27:36

Ansiblelinux自動(dòng)化運(yùn)維

2011-12-23 17:09:57

自動(dòng)化測(cè)試

2021-06-30 19:48:21

前端自動(dòng)化測(cè)試Vue 應(yīng)用

2012-12-24 22:54:31

2024-11-01 15:05:12

2014-11-20 13:49:15

2011-06-03 17:24:48

自動(dòng)化測(cè)試

2023-03-27 15:37:43

自動(dòng)化測(cè)試開(kāi)發(fā)

2011-05-30 17:31:26

自動(dòng)化測(cè)試

2011-01-20 10:17:25

ibmdwWeb

2012-03-29 10:57:12

Web自動(dòng)化測(cè)試

2022-06-08 14:22:55

自動(dòng)化測(cè)試測(cè)試
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)