欧美一区2区三区4区公司二百,国产精品婷婷午夜在线观看,自拍偷拍亚洲精品,国产美女诱惑一区二区

什么是混沌工程?混沌工程是如何工作的?

在分布式系統中查找故障超出了標準應用程序測試的能力。公司需要更智能的方法來持續測試微服務。一種越來越受歡迎的策略是混沌工程。使用這種主動測試實踐,組織可以在故障導致代價高昂的停機之前尋找并修復故障。繼續閱讀以了解混沌工程如何提高大型分布式系統的可靠性。

什么是混沌工程?混沌工程是如何工作的?

什么是混沌工程?定義

混沌工程是一種發現分布式系統漏洞的策略。這種做法需要在生產過程中將故障和錯誤注入軟件。一旦你故意造成錯誤,監控效果以查看系統如何響應壓力。通過故意“破壞”,您會發現可能影響組件和最終用戶的新問題。在導致數據丟失或服務影響之前解決已識別的弱點。

混沌工程允許管理員:

  • 識別系統中的弱點。
  • 實時查看系統如何響應壓力。
  • 讓團隊為真正的失敗做好準備。
  • 識別尚未導致系統范圍問題的錯誤。

Netflix 是第一個引入混沌工程的組織。2010 年,該公司發布了一款名為Chaos Monkey的工具。使用此工具,管理員能夠以隨機間隔在隨機位置造成故障。這種測試方法使 Netflix 的分布式基于云的系統對故障更具彈性。

誰使用混沌工程?

許多科技公司采用混沌工程來提高分布式系統的彈性。Netflix 繼續開創這種做法,但 Facebook、谷歌、微軟和亞馬遜等公司也有類似的測試模型。更多的傳統組織也開始使用混沌測試。例如,澳大利亞國民銀行應用混亂隨機關閉服務器并建立系統彈性。

混沌工程的需要

Sun Microsystem 的 Peter Deutsch 和他的同事列出了程序員通常對分布式系統做出的八個錯誤假設:

  • 網絡可靠。
  • 延遲為零。
  • 帶寬是無限的。
  • 網絡是安全的。
  • 拓撲永遠不會改變。
  • 有一個管理員。
  • 運輸成本為零。
  • 網絡是同質的。

這些謬誤顯示了在微服務架構中設計的分布式應用程序的動態性。這種系統有很多活動部件,管理員對云基礎設施幾乎沒有控制權。對設置的不斷更改會導致意外的系統行為。無法預測這些行為,但我們可以通過混沌工程重現和測試它們。

什么是混沌工程?混沌工程是如何工作的?

混沌工程與故障測試之間的區別

失敗測試檢查單個條件并確定屬性是真還是假。這樣的測試以先入為主的方式破壞了系統。結果通常是二進制的,它們不會發現有關應用程序的新信息。混沌測試的目標是生成關于系統的新知識。更廣泛的范圍和不可預測的結果使您能夠了解系統的行為、屬性和性能。您開辟了新的探索途徑,并了解如何改進系統。

雖然不同,但混亂和故障測試確實在關注點和使用的工具上有一些重疊。當您使用這兩個學科來測試應用程序時,您會獲得最佳結果。

混沌工程是如何工作的

混沌工程中的所有測試都是通過所謂的混沌實驗進行的。每個實驗都從將特定故障注入系統開始,例如延遲、CPU 故障或網絡黑洞。然后,管理員觀察并比較他們認為會發生的事情與實際發生的事情。一個實驗通常涉及兩組工程師。第一組控制故障注入,第二組處理效果。

以下是混沌實驗的分步流程:

第 1 步:創建假設

工程師分析系統并選擇導致什么故障。混沌工程的核心步驟是預測系統遇到特定錯誤后的行為方式。

工程師還需要在開始測試之前確定關鍵指標閾值。指標通常分為兩組:

  • 關鍵指標:這些是實驗的主要指標。例如,您可以衡量對延遲、每秒請求數或系統資源的影響。
  • 客戶指標:這些是預防性指標,可以告訴您測試是否太過分。客戶指標的示例是每分鐘訂單數或每秒流啟動數。如果測試開始影響客戶指標,這表明管理員停止試驗。

在某些測試中,這兩個指標可能重疊。

第 2 步:故障注入

工程師將特定故障添加到系統中。由于無法確定應用程序的行為方式,因此始終有一個備份計劃。大多數混沌工程工具都有反向選項。這樣,如果出現問題,您可以安全地中止測試并返回應用程序的穩定狀態。

什么是混沌工程?混沌工程是如何工作的?

第 3 步:衡量影響

當錯誤導致重大問題時,工程師會監控系統。關鍵指標是主要關注點,但始終監控整個系統。如果測試開始模擬中斷,團隊會尋找修復它的最佳方法。

第 4 步:驗證(或反駁)你的假設

成功的混沌測試有兩種結果之一。您要么驗證系統的彈性,要么找到需要修復的問題。兩者都是很好的結果。

混沌工程原理

雖然名稱可能暗示其他情況,但混沌工程中沒有任何隨機性。

這種測試方法遵循嚴格的原則,包括以下原則:

了解系統的正常狀態

定義系統的穩態。系統的通常行為是任何混沌實驗的參考點。通過了解系統何時處于健康狀態,您將更好地了解錯誤和故障的影響。

注入現實的錯誤和失敗

所有實驗都應反映現實和可能的情況。當您注入現實生活中的故障時,您會很好地了解哪些流程和技術需要升級。

生產測試

如果將測試應用于生產環境,您只能看到中斷對系統的影響。如果您的團隊幾乎沒有混沌測試經驗,讓他們開始在開發環境中進行試驗。準備好后測試生產環境。

控制爆炸半徑

始終最小化混沌測試的爆炸半徑。由于這些測試發生在生產環境中,因此測試可能會影響最終用戶。另一個標準預防措施是讓團隊為實際事件響應做好準備,以防萬一。

什么是混沌工程?混沌工程是如何工作的?

連續混沌

您可以將混沌實驗自動化到與 CI/CD 管道相同的級別。持續的混亂使您的團隊能夠不斷改進當前和未來的系統。

混沌工程的好處

混沌工程的好處跨越多個業務領域:

商業利益

混沌工程通過防止長時間的中斷來幫助阻止巨大的收入損失。這種做法還允許公司在不損失服務可靠性的情況下快速擴展。

技術優勢

來自混沌實驗的見解可以減少事故,但這并不是技術優勢的終點。團隊對系統模式和依賴關系有了更深入的了解,從而使他們能夠構建更強大的系統設計。混沌測試對于工程團隊來說也是極好的隨叫隨到的培訓。

客戶利益

更少的中斷意味著對最終用戶的干擾更少。改進的服務可用性和持久性是混沌工程的兩個主要客戶優勢。

混沌工程工具

這些是最常見的混沌工程工具:

  • Chaos Monkey:這是 Netflix 創建的原始工具。雖然它于 2010 年問世,但 Chaos Monkey 仍然會定期更新,并且是首選的混沌測試工具。
  • Gremlin:?Gremlin 幫助客戶設置和控制混沌測試。該工具的免費版本提供基本測試,例如關閉機器和模擬高 CPU 負載。
  • Chaos Toolkit:這個開源計劃通過開放 API 和標準 JSON 格式使測試更容易。
  • Pumba:?Pumba 是 Docker 的混沌測試和網絡仿真工具。
  • Litmus:用于 Kubernetes 上的有狀態工作負載的混沌工程工具。

為了跟上新工具??的步伐,請為 Chaos Engineering Slack 社區創建的圖表添加書簽。除了工具之外,該圖表還記錄了從事混沌測試的已知工程師。

什么是混沌工程?混沌工程是如何工作的?

混沌工程示例

混沌實驗沒有限制。您運行的測試類型取決于您的分布式系統的架構和業務目標。

以下是最常見的混沌測試列表:

  • 模擬微型組件的故障。
  • 關閉虛擬機以查看依賴項如何反應。
  • 模擬高 CPU 負載。
  • 斷開系統與數據中心的連接。
  • 在服務之間注入延遲。
  • 隨機導致函數拋出異常(也稱為基于函數的混亂)。
  • 向程序添加指令并允許故障注入(也稱為代碼插入)。
  • 破壞系統時鐘之間的同步。
  • 模擬 I/O 錯誤。
  • 導致流量突然激增。
  • 注入拜占庭式故障。

混沌工程和 DevOps

混沌工程是DevOps 文化中的一種常見做法。這樣的測試使 DevOps 能夠徹底分析應用程序,同時跟上敏捷開發的節奏。DevOps 團隊通常使用混沌測試來定義基礎設施的功能基線和容差。測試還通過闡明穩態和混沌輸出來幫助創建更好的政策和流程。一些公司更喜歡將混沌工程集成到他們的軟件開發生命周期中。集成混亂使公司能夠確保每個新功能的可靠性。

任何大型分布式系統的必備工具

對軟件的持續檢查對于應用程序的安全性和功能性都至關重要。通過主動檢查系統,您可以減輕運營負擔、提高系統可用性和彈性。

文章鏈接: http://www.qzkangyuan.com/5116.html

文章標題:什么是混沌工程?混沌工程是如何工作的?

文章版權:夢飛科技所發布的內容,部分為原創文章,轉載請注明來源,網絡轉載文章如有侵權請聯系我們!

聲明:本站所有文章,如無特殊說明或標注,均為本站原創發布。任何個人或組織,在未征得本站同意時,禁止復制、盜用、采集、發布本站內容到任何網站、書籍等各類媒體平臺。如若本站內容侵犯了原著者的合法權益,可聯系我們進行處理。

給TA打賞
共{{data.count}}人
人已打賞
IDC云庫

基礎設施即代碼的最佳實踐

2022-3-31 10:41:20

IDC云庫

Pulumi與Terraform之間的差異

2022-3-31 10:57:17

0 條回復 A文章作者 M管理員
    暫無討論,說說你的看法吧
?
個人中心
購物車
優惠劵
今日簽到
有新私信 私信列表
搜索
主站蜘蛛池模板: 绥德县| 淮安市| 同江市| 偏关县| 图木舒克市| 新乡县| 龙岩市| 靖江市| 申扎县| 咸丰县| 武邑县| 迭部县| 城固县| 黄浦区| 巫山县| 新沂市| 宜兴市| 唐山市| 梧州市| 吉安市| 阿克陶县| 赫章县| 迭部县| 奉化市| 玉山县| 呈贡县| 东乌珠穆沁旗| 浪卡子县| 宁波市| 虹口区| 屯门区| 满洲里市| 洛南县| 吉首市| 屯留县| 尖扎县| 荆州市| 余庆县| 红河县| 隆化县| 义乌市|