近年来,“像对待牛而不是宠物一样对待服务器”一词激增,特别是当应用于Docker容器和虚拟机时。 br />

评论

这里有详细的描述,包括沿线的每个“模型”的优点/缺点。

#1 楼

兰迪·比亚斯(Randy Bias)对该术语的历史进行了记述,指出该术语可能起源于2011年或2012年,当时,比尔·贝克(Bill Baker)在描述“向上扩展”与“向外扩展”架构策略时使用了此类比喻。 Bias在他关于云体系结构模式的演示中采纳了这一点:在旧的处理方式中,我们将服务器视为宠物,例如邮件服务器Bob。如果鲍勃摔倒了,那就全都放手了。首席执行官无法收到他的电子邮件,这是世界末日。用新的方式对服务器编号,就像牛群中的牛一样。例如,从www001到www100。当一台服务器出现故障时,将其取出,开枪并在生产线上更换。


Bias继续将Pets定义为


服务器或被视为必不可少的或永不停机的独特系统的服务器对。通常,它们是手动构建,管理和“手动添加”的。示例包括大型机,单独的服务器,HA负载平衡器/防火墙(主动/主动或主动/被动),设计为主/从(主动/被动)的数据库系统等。






两个以上的服务器阵列,这些阵列是使用自动化工具构建的,并且为故障而设计,其中没有一台,两台甚至三台服务器是不可替代的。通常,在故障事件期间,不需要人工干预,因为阵列通过重新启动故障服务器或通过三重复制或擦除编码等策略复制数据来展现“绕过故障”的属性。示例包括Web服务器阵列,多主数据存储库(例如Cassandra集群),在集群中放在一起的多个机架以及几乎所有负载均衡的多主数据库。


从根本上说,Bias和Baker试图传达的是必须从我们如何对待服务器(从带有名称和情感附件的“独特雪花”)过渡到一个模型,该模型可以在服务器出现问题时创建替换并销毁有问题的服务器。

最后,值得一提的是,在受监管的环境中,将服务器撤出并进行射击可能不是最佳选择。在这些情况下,“冻结”服务器通常是有利的,例如使用docker pause冻结容器。然后,可以将其用作事件或问题管理过程中的根本原因分析。

#2 楼

要增加Richards的回答,通常在考虑服务器丢失的影响方面,该类比是有帮助的。然后将其视为宠物(请阅读反模式)。

如果您知道如果任何舰队停止运行不会对运营产生任何实际影响,您会感到很自在,那么您在谈论的是牛。 br />
使用类比来简单地对服务器进行分类通常很诱人,即“我们的工作负载节点是牛,但我们的负载均衡器是宠物”,但陷入这个陷阱正是问题所在。在现代计算环境中(例如,在云中,在商品硬件等上),没有宠物的地方。如果您所有的服务器都被视为牛,并且易于更换,那么您可以开始研究混乱的猴子之类的东西来帮助您建立基础架构真正具有弹性的保证。

评论


“如果您对任何单个基础设施的损失感到某种困扰,那么就将其视为宠物(阅读反模式)。” TIL数据库是一种反模式。

–贝斯特
20年5月13日在16:43

@Beefster我仍然坚持我的2017年答案,如果您设计的数据库使您对基础架构的损失感到不安,那么您只是设计了一个非常昂贵的(即,为非常可靠的专业人士花了很多钱硬件)或极其脆弱的数据库系统(即,如果节点发生故障,则最好唤醒支持团队并恢复该状态并使其恢复健康)。

– hvindin
20年6月20日在2:44