您的位置: 首頁(yè) >科技 >

現(xiàn)代系統(tǒng)必須能夠處理混亂以避免停機(jī)

2022-08-26 03:18:10 編輯:賀榮伯 來(lái)源:
導(dǎo)讀 盡管我們盡最大努力避免它們,但I(xiàn)T事件是這項(xiàng)工作不可避免的一部分 - 并且試圖保持領(lǐng)先于業(yè)務(wù)影響的停機(jī)時(shí)間只會(huì)變得更加棘手。今天的系...

盡管我們盡最大努力避免它們,但I(xiàn)T事件是這項(xiàng)工作不可避免的一部分 - 并且試圖保持領(lǐng)先于業(yè)務(wù)影響的停機(jī)時(shí)間只會(huì)變得更加棘手。今天的系統(tǒng)緊密耦合,越來(lái)越復(fù)雜,更多的移動(dòng)部件帶來(lái)更多出錯(cuò)的機(jī)會(huì)。

這就是為什么越來(lái)越多的組織轉(zhuǎn)向微服務(wù)以提高服務(wù)可用性和更好地恢復(fù)故障的原因之一。雖然這些是破壞單片應(yīng)用程序的重要前提,但它們也可能增加失敗的風(fēng)險(xiǎn) - 除非明確考慮到彈性設(shè)計(jì)。

準(zhǔn)備失敗

鑒于分布式系統(tǒng)固有的混亂特性,應(yīng)該開發(fā)服務(wù),不僅要預(yù)測(cè)故障,還要在發(fā)生故障時(shí)自動(dòng)恢復(fù)。這意味著定期發(fā)生故障,以確保您的系統(tǒng)能夠處理混亂而不會(huì)中斷對(duì)最終客戶的服務(wù)。為了實(shí)現(xiàn)這一目標(biāo),您需要能夠在測(cè)試環(huán)境中模擬類似生產(chǎn)的流量。

當(dāng)然,在更改生產(chǎn)之前測(cè)試彈性是個(gè)好主意。如果您不這樣做,您將無(wú)法驗(yàn)證您的服務(wù)是否支持平均和峰值負(fù)載。事實(shí)上,最安全的選擇是確保您的產(chǎn)品能夠處理峰值量的兩倍而無(wú)需擴(kuò)大規(guī)模。

在彈性測(cè)試方面,正確的工具不應(yīng)過(guò)于關(guān)注請(qǐng)求的處理方式,只要他們最終能夠產(chǎn)生正確的影響。請(qǐng)記住,在某些情況下,輸入服務(wù)可能無(wú)法將請(qǐng)求移交給系統(tǒng)的其余部分,但不會(huì)報(bào)告失敗。通過(guò)確保實(shí)際上正在進(jìn)行端到端驗(yàn)證,不要冒險(xiǎn)在監(jiān)控雷達(dá)下飛行的問(wèn)題。

下一步

在了解服務(wù)如何在負(fù)載下運(yùn)行之后,是時(shí)候開始介紹故障事件了。與所有軟件測(cè)試一樣,最好使用自動(dòng)化工具,以便您輕松快速地重現(xiàn)場(chǎng)景,以便您可以協(xié)調(diào)影響不同基礎(chǔ)架構(gòu)技術(shù)的復(fù)雜事件。除了驗(yàn)證修復(fù)和服務(wù)更改的能力之外,這還允許您在任何環(huán)境和計(jì)劃中運(yùn)行隨機(jī)故障方案。

有意義的失敗事件在很大程度上取決于您的服務(wù)布局,您可以通過(guò)詢問(wèn)與您相關(guān)的特定問(wèn)題來(lái)制定它們。例如,當(dāng)數(shù)據(jù)庫(kù)在一段時(shí)間內(nèi)無(wú)法訪問(wèn)時(shí),使用前端的人員會(huì)受到什么影響?這些用戶是否仍可以在Web UI中導(dǎo)航?他們是否仍然可以對(duì)其信息進(jìn)行更新,并且當(dāng)數(shù)據(jù)庫(kù)再次可以訪問(wèn)時(shí),是否可以正確處理這些更新?

如果您運(yùn)行多個(gè)微服務(wù),則可以詢問(wèn)是否存在全局中斷,如果任何單個(gè)服務(wù)崩潰。或者,如果您有一個(gè)緩沖服務(wù)之間通信的排隊(duì)機(jī)制,當(dāng)消費(fèi)者服務(wù)(或服務(wù))停止工作時(shí)會(huì)發(fā)生什么?用戶是否仍然可以使用您的應(yīng)用程序?并且考慮到平均負(fù)載,在隊(duì)列溢出并開始丟失消息之前你有多長(zhǎng)時(shí)間?

一旦定義了有關(guān)基礎(chǔ)架構(gòu)的幾個(gè)關(guān)鍵問(wèn)題,就可以開始列出模擬這些失敗的不同方法。停止特定服務(wù)或數(shù)據(jù)庫(kù)服務(wù)器可能就足夠了。您可能希望阻止服務(wù)的主線程來(lái)模擬死鎖,而其容器仍然響應(yīng)并運(yùn)行。您可能決定在網(wǎng)絡(luò)中引入規(guī)則以阻止特定服務(wù)之間的流量。在Linux環(huán)境中,您可以使用“tc”等工具來(lái)模擬網(wǎng)絡(luò)情況,如高延遲,丟失,損壞或重復(fù)的數(shù)據(jù)包。

通過(guò)演練學(xué)習(xí)和提高

創(chuàng)建故障場(chǎng)景最有價(jià)值的方面之一是它們可以暴露系統(tǒng)可能失敗的所有潛在方式,從而為自我修復(fù)邏輯奠定了基礎(chǔ)。您的團(tuán)隊(duì)將完成手動(dòng)恢復(fù)服務(wù)的步驟 - 順便說(shuō)一下,確保他們能夠在SLA中執(zhí)行此操作??梢允褂么嘶謴?fù)過(guò)程的自動(dòng)化,但與此同時(shí),您可以輕松了解您的團(tuán)隊(duì)已經(jīng)完成了使服務(wù)重回正軌的過(guò)程。通過(guò)使故障情景隨機(jī)且有規(guī)律并且不公開運(yùn)行的完整細(xì)節(jié),您還可以包括對(duì)演習(xí)的發(fā)現(xiàn)和診斷 - 畢竟這是SLA的關(guān)鍵部分。

混沌工程的核心是將系統(tǒng)的復(fù)雜性作為給定,通過(guò)模擬新的和古怪的條件來(lái)測(cè)試它,并觀察系統(tǒng)如何響應(yīng)。這是數(shù)據(jù)工程團(tuán)隊(duì)需要重新設(shè)計(jì)和重新配置系統(tǒng)以實(shí)現(xiàn)更高的彈性。學(xué)習(xí)新的有用的東西有很多機(jī)會(huì)。例如,您可能會(huì)發(fā)現(xiàn)下游服務(wù)發(fā)生更改時(shí)服務(wù)未獲得更新的實(shí)例,或者完全缺少監(jiān)視的區(qū)域。有一些令人興奮的方法可以讓您的產(chǎn)品更具彈性和穩(wěn)健性!


免責(zé)聲明:本文由用戶上傳,如有侵權(quán)請(qǐng)聯(lián)系刪除!

最新文章

精彩推薦

圖文推薦

點(diǎn)擊排行

2016-2022 All Rights Reserved.平安財(cái)經(jīng)網(wǎng).復(fù)制必究 聯(lián)系QQ280 715 8082   備案號(hào):閩ICP備19027007號(hào)-6

本站除標(biāo)明“本站原創(chuàng)”外所有信息均轉(zhuǎn)載自互聯(lián)網(wǎng) 版權(quán)歸原作者所有。