最近看到下面这样一张谷歌 Borg 的架构图,无意中数了下 BorgMaster 的图块层数,发现是 5 层。
那么,值得思考的问题是: 为什么是 5 层呢 ? 可以是其他数量么? 可以是偶数么?
1、单点风险
所谓单点风险就是单服务实例运行所带来的风险。由于没有备份,那么如果这个实例挂了,就无法提供服务。
而对于任何服务器来说,都是存在故障的可能的,
因此生产环境中,应该尽可能避免单点风险。即类似于上图的 BorgMaster 这种服务节点,是不可能单例提供服务的。
2、最大容错
所谓最大容错,是指一个集群最多可以容忍死亡多少个实例。
假如只部署 2 个 zk 进程实例,当其中一个 zk 进程实例挂了后,那么剩下的那个进程实例并不能构成一个 quorum 的大多数。
因此 2 个 zk 进程实例构成的集群,其最大容错为 0 ,
而 1 个 zk 进程实例,其死亡容忍度自然也是 0,
这就意味着 ,2 个实例 和 1 个实例 的最大容错并没有区别。
另外,部署 2 个实例甚至比单点模式还更不可靠,因为 2 个实例其中一个不可用的可能性比 1 个实例不可用的可能性还大。
因此搭建 2 个实例的集群是不合适的。</