一千萬個為什麽

搜索

“牛不寵物”的定義是什麽?



近年來,“把你的服務器當作非牛不寵物”這個術語激增,特別是在應用於Docker容器和虛擬機時

Pets vs. Cattle

這實際上意味著什麽?

轉載註明原文: “牛不寵物”的定義是什麽?

一共有 2 個回答:

Randy Bias 記載歷史這個詞稱其可能起源於2011年或2012年,當比爾貝克在描述“擴大規模”與“擴大規模”建築策略時使用類比。 Bias在他關於雲架構模式的演講中采納了這一點:

在舊的做事方式中,我們將我們的服務器視為寵物,例如Bob的郵件服務器。如果鮑勃垮臺,這一切都在甲板上。 CEO不能收到他的電子郵件,這是世界末日。以新的方式,服務器被編號,就像牛群中的牛。例如,www001到www100。當一臺服務器出現故障時,它會被取出,開槍並在線上更換。

偏見繼續將寵物定義為

服務器或服務器對被視為不可缺少或獨一無二的永不停機的系統。通常他們是手動建立,管理和“手動”。例子包括大型機,孤立服務器,HA負載均衡器/防火墻(主動/主動或主動/被動),設計為主/從(主動/被動)的數據庫系統等。

和牛一樣

使用自動化工具構建的兩臺以上服務器的陣列,專為故障而設計,其中無一臺,兩臺甚至三臺服務器是不可替代的。通常,在故障事件期間,不需要人為幹預,因為該陣列通過重啟失敗的服務器或通過諸如三重復制或擦除編碼之類的策略來復制數據來展現“圍繞失敗路由”的屬性。示例包括Web服務器陣列,多主數據存儲庫(如Cassandra群集),將多個齒輪組合在一起的群集,以及幾乎任何負載均衡和多主控制器。

從根本上講,Bias和Baker所要傳達的是必須從我們如何對待服務器的過渡轉變為從“獨特的雪花”與名稱和情感附件,模型,如果我們有一個服務器的問題,我們創建一個替換和銷毀有問題的服務器。

最後,可能值得一提的是,在規定的環境中,將服務器退出並進行拍攝可能不是最佳選擇。在這些情況下,“凍結”服務器通常是有利的,例如使用 docker pause 來凍結一個容器。這可以用來執行根本原因分析,作為事件或問題管理流程的一部分。

要添加到Richards的答案,通常這個類比在考慮服務器丟失的影響方面是有幫助的。

如果您對任何單個基礎設施的損失感到某種困擾,那麽將其視為寵物(讀反模式)。

如果你知道如果任何一支艦隊停止作戰,你會覺得很舒服,這對行動沒有實際影響,那麽你就是在談論牛。

使用類比來簡單分類服務器常常很誘人,即“我們的工作負載節點很牛,但我們的負載均衡器是寵物”,但陷入困境正是問題所在。在現代計算環境中(如在雲中,商品硬件等),沒有寵物的地方。如果所有的服務器都被認為是牛,並且易於更換,那麽你可以開始尋找像混沌猴這樣的東西來幫助確保您的基礎架構真正具有彈性。