Answers:
兰迪·比亚斯( Randy Bias)对该术语的历史进行了记述,指出该术语可能起源于2011年或2012年,当时比尔·贝克(Bill Baker)在描述“按比例放大”与“按比例缩小”的建筑策略时使用了此类比喻。Bias在他关于云架构模式的演示中采纳了这一点:
在旧的处理方式中,我们将服务器视为宠物,例如邮件服务器Bob。如果鲍勃摔倒了,那一切全都放在甲板上了。CEO无法收到他的电子邮件,这是世界末日。用新的方式对服务器进行编号,就像牛群中的牛一样。例如,从www001到www100。当一台服务器出现故障时,将其取出,射击并在线更换。
偏见继续将Pets定义为
被视为必不可少的或永不停机的独特系统的服务器或服务器对。通常,它们是手动构建,管理和“手动添加”的。示例包括大型机,单独的服务器,HA负载平衡器/防火墙(主动/主动或主动/被动),被设计为主/从(主动/被动)的数据库系统,等等。
和牛一样
使用自动化工具构建的多于两个服务器的阵列,这些阵列专为发生故障而设计,其中没有一台,两台甚至三台服务器是不可替代的。通常,在故障事件期间,不需要人工干预,因为阵列通过重启故障服务器或通过三重复制或擦除编码等策略来复制数据来展现“绕过故障”的属性。示例包括Web服务器阵列,多主机数据存储(例如Cassandra集群),在集群中组合在一起的多个机架,以及几乎所有负载均衡和多主机的设备。
从根本上说,Bias和Baker试图传达的是,必须从我们如何对待服务器(从带有名称和情感附件的“独特雪花”)过渡到一个模型,如果服务器出现问题,我们将创建替换模型。并销毁有问题的服务器。
最后,可能值得一提的是,在规范的环境中,将服务器撤出并进行拍摄可能不是最佳选择。在这些情况下,“冻结”服务器通常是有利的,例如docker pause
用于冻结容器。然后,可以将其用作事件或问题管理过程中的根本原因分析。
要增加Richards的答案,通常在考虑服务器丢失带来的影响方面,类比很有帮助。
如果您对任何单个基础设施的损失都感到不安,请考虑将其视为宠物(请阅读反模式)。
如果您知道任何一个舰队停止运行不会对运营产生真正的影响,您会感到很自在,那么您在谈论的是牛。
使用类比来简单地对服务器进行分类通常很诱人,即“我们的工作负载节点是牛,但是我们的负载均衡器是宠物”,但是陷入这个陷阱正是问题所在。在现代计算环境中(例如,在云中,在商品硬件等上),没有宠物的地方。如果您所有的服务器都被视为牛,并且易于更换,那么您可以开始考虑像混沌猴子这样的事情来帮助您建立基础架构真正具有弹性的保证。