关于牛与宠物的区别与兰迪偏倚 这里有很大的讨论。马丁·福勒谈到了SnowFlakeServer。
在一系列会谈中,禤浩焯科克克罗夫特讨论了他们如何转向牛服务器来解决Netflix的可伸缩性问题。
这种区别的挑战始终是管理持久状态。把数据库服务器当作牛对待是有意义的吗?如果(a)管理牛模型外的状态(码头容器的外部卷),或者(b)使用像卡桑德拉这样的分布式数据库,允许单个节点失败,但仍然在集群中维护状态,则会发生这种情况。
我知道,您可以非常接近安装共享卷的Docker容器的“持久化状态下的可处置性”,通过启动AMIs来处理安装共享驱动器的实例。您可以通过创建一个自动标度组来重新创建您已经使用过的机器,从而进一步了解计划集群管理的这一概念。
对我来说,机器实例缺少码头容器的粒度。他们更倾向于“宠物”的极限。
我的问题是:“牛而不是宠物”的区别是否同样适用于机器实例和容器?
发布于 2017-05-30 17:28:54
虽然在技术上,容器和虚拟机是非常不同的,但是从软件的角度来看并没有明显的区别。你问题中的论点似乎是,数据是特殊的,永远是独一无二的雪花,所以你的问题基本上可以归结为如何在DevOps、CI和自动化方面来处理它。
这是DevOps模型的永恒挑战。最终,您要问的是,A)您的数据将在数据库中,或者B)一个数据存储,那么您如何管理呢?
答案是肯定的,您的数据库服务器可以而且应该被看作是牛-和内部的我最近详细介绍了几种这样做的技术和技术。。如果您不将您的数据存储(数据库、存储文件程序)视为牛,您将发现在您的数据(基本)基础结构中有一个单一的故障点,并且缺乏可伸缩性和冗余性。我在链接答案中讨论的这些技术基本上允许您以类似Cassandra的方式分发和集群关系数据库。
管理您的数据(基础)和使数据(基础)变得冗余可能是DevOps面临的最困难的挑战。解决问题的最简单方法是:将头疼的问题外包给云提供商。
总之,是的,“牛而不是宠物”的区别同样适用于机器实例和容器。
https://devops.stackexchange.com/questions/1254
复制相似问题