我們僱傭了乙隻大猴子

2021-09-24 13:10:28 字數 2663 閱讀 6587

我們「僱傭」了乙隻大猴子,只為「搞破壞」,不開玩笑。

這只猴子是用來做什麼的?

從程式設計師的視角來看,提高系統穩定性的方法無外乎三種:

通過各種技術手段,例如在容器和排程、微服務、訊息、軟負載和配置中心等緯度提高系統和架構的健壯性;

提公升監控的廣度和深度,生產中一旦出現問題,能快速定位,給出解決方案;

生產就是大考,誰也不知道公升學考中會出現什麼樣的試題,建立故障演練機制,把各類可以預見的故障提前演練出來,例如隨機殺節點、延時響應,甚至中斷機房;

這只猴子就是我們雇來做破壞,進行故障演練的隊友。(瘋起來,我們連自己都打)

這只猴子最早**於哪?

netflix的流**服務最初由netflix工程師在microsoft軟體之上構建的,並位於垂直擴充套件的伺服器機架中。然而,這一單一故障點在2023年8月受到***,當時乙個主要的資料庫損壞導致了三天的停機時間,在此期間***無法傳送給客戶。

在此之後,netflix工程師開始將整個netflix堆疊從單片架構遷移到分布式雲架構中。

但是,這種向數百個微服務的分布式架構的重大轉變帶來了大量額外的複雜性。分布式系統中的這種複雜性和相互關聯性創造了一些難以處理的東西,並且需要一種新的方法來防止看似隨機的中斷。netflix向水平擴充套件軟體堆疊的轉變需要更可靠和容錯的系統。

最重要的經驗教訓之一是 「避免失敗的最佳方法是不斷失敗。」

2023年,netflix eng tools團隊開發出了chaos monkey,用來測試系統。netflix的這個猴子軍團可以在隨機殺死例項,或是讓某台機器的請求或返回變慢,還有就是搞掛乙個機房,巨集觀驗證業務容災和恢復的能力。

阿里的這只猴子是什麼來頭?

2023年

阿里巴巴開始做強弱依賴的治理和建設,希望提前發現因為依賴問題導致的系統故障,系統的代號是eos(出處是古希臘神話中的黎明女神,語意是能夠把紛亂的依賴關係梳理清楚)

2023年

完成交易的同城雙活後,我們就啟動了同城容災演練,也叫斷網演練。驗證核心系統的同城乙個機房掛掉的情況下,是否還可以正常工作。

2023年

因為一次宕機事故,公司內部得出乙個結論:任何基礎設施、生產系統、任何流程都可能出現問題,沒有經過重大災難驗證的容災設施都是耍流氓。 啟動了代號為虎虎虎的生產突襲專案,用來驗證異地多活的質量。

2023年

故障演練專案立項(goc+中介軟體),重新設計架構和產品流程,確定產品名為monkeyking,在交易和中介軟體鏈路嘗試演練。monkeyking是中國美猴王的意思,看重的是孫悟空高強的本領(火眼精金、七十二變)和極具反叛的精神來,希望用一種創新的思路來保證穩定性。

**於 qcon·北京

阿里的這只猴子能做些什麼?

阿里巴巴因為其多元化的業務場景和日益複雜的技術架構,會遇到各式各樣的故障,故障治理的難度相比流**服務故障治理,難度是也增量了幾個台階。

前面介紹過的強弱依賴和容災演練只能覆蓋到部分故障。如果對故障整體做初步畫像,故障整體可以分為iaas層、paas層、saas層的故障,每一層都可能有很多故障出發原因和表現。

**於 qcon·北京

故障如此之多,讓人摸不著頭腦,我們試著把維度降低一下,換乙個視角來看故障:

任何故障,一定是硬體如iaas層,軟體如paas或saas的故障, 並且有個規律,硬體故障的現象,一定可以在軟體故障現象上有所體現;

故障一定隸屬於單機或是分布式系統之一,分布式故障包含單機故障;

對於單機或同機型的故障,以系統為視角,故障可能是當前程序內的故障,比如:如fullgc,cpu飆高; 程序外的故障,比如其他程序突然搶占了記憶體,導致當前系統異常等;

人為誤操作,或流程不當導致;

任何故障都可以套入到這個故障模型中。有了這個模型,我們就可以開始來設計模擬故障的演練系統了。

**於 qcon·北京

在客戶機器部署os層的故障外掛程式,用來模擬硬體層的故障和單機程序外的故障。

對於應用程序內的故障,提供插拔式的故障外掛程式,也可以使用者按照我們的故障api做自己的實現。

對於分布式故障,則通過服務端按照ip來控制故障的範圍。

對於一些因為各種原因無法觸及的應用,比如資料庫。我們提供了乙個故障三方實現的標準,供故障服務接入。

通過上面的方式,基本上就把技術型故障的模型就cover全了。

那麼,從**可以僱傭到這只猴子?

方式一:

2023年,chaos monkey(netflix的猴子名稱)進行開源,但自2023年11月發布第三個版本,未再發布新版本。

方式二:

2023年9月,monkeyking(阿里的猴子名稱)以免費服務的方式向阿里雲公有雲客戶進行輸出,產品名稱是應用高可用服務 ahas,目前已支援k8s集群接入。

我們僱傭了乙隻大猴子

我們 僱傭 了乙隻大猴子,只為 搞破壞 不開玩笑。從程式設計師的視角來看,提高系統穩定性的方法無外乎三種 這只猴子就是我們雇來做破壞,進行故障演練的隊友。瘋起來,我們連自己都打 netflix的流 服務最初由netflix工程師在microsoft軟體之上構建的,並位於垂直擴充套件的伺服器機架中。然...

我們僱傭了乙隻大猴子

為什麼80 的碼農都做不了架構師?我們 僱傭 了乙隻大猴子,只為 搞破壞 不開玩笑。從程式設計師的視角來看,提高系統穩定性的方法無外乎三種 這只猴子就是我們雇來做破壞,進行故障演練的隊友。瘋起來,我們連自己都打 netflix的流 服務最初由netflix工程師在microsoft軟體之上構建的,並...

見鬼了!!!打到乙隻鬼!!!

printf duration d s,file size d bytes,overall bit rate d kb s n ctx duration 1000000,ctx file size,ctx bit rate 1000 printf duration d s n ctx duratio...