简而言之,为了整个系统的利益,我们是否应该将死亡设计在较低的程序,进程和线程中?
失败发生。进程死亡。我们计划灾难,并偶尔从灾难中恢复。但是我们很少设计和实现无法预测的程序终止。我们希望我们的服务正常运行时间只要我们愿意保持它们正常运行即可。
Netflix的Chaos Monkey是该概念的一个宏观示例,它在某些情况下会随机终止AWS实例。他们声称这有助于他们发现问题并构建更多的冗余系统。
我在说的是较低的水平。这个想法是让传统上长时间运行的进程随机退出。这将迫使冗余进入设计并最终产生更具弹性的系统。
这个概念已经有名字了吗?它已经在行业中使用了吗?
编辑
根据评论和答案,恐怕我不清楚我的问题。为了清楚起见:
- 是的,我的意思是随机的,
- 是的,我的意思是在生产中,并且
- 不,不仅用于测试。
解释一下,我想比喻多细胞生物。
在自然界中,生物由许多细胞组成。这些单元自行分叉以创建冗余,然后最终死亡。但是,应始终有足够种类的正确细胞供生物体发挥功能。这种高度冗余的系统还有助于在受伤时进行康复。细胞死亡,生物体得以生存。
将随机死亡纳入程序中将迫使更大的系统采用冗余策略以保持生存。这些相同的策略是否可以在遇到其他无法预测的故障时使系统保持稳定?
而且,如果有人尝试过这种方法,那叫什么呢?如果它已经存在,我想了解更多。