3重化系统可能比2重化冗余系统的可靠性低
简而言之
当计算三重化系统(例如动物园管理员等)的运行率时,可能会比双重冗余系统更糟糕。以下是解释原因。
引子
我们开始处理Kafka(Confluent)了。
当我说Kafka和Hadoop使用的Zookeeper是通过三重冗余来实现高可用性时,有人告诉我最近通常都采用三重冗余来提高系统运行率,因为二重冗余可能导致系统停止。但实际上,使用三重冗余系统的可用性比二重冗余更差。因此,我觉得很难让人们明白这个原因,所以我想详细解释一下三重冗余系统。
三重化的概念
针对3层化的动物管理员在发生故障时的操作
当Zookeeper被配置为三重化时,在发生故障时会执行以下操作。
需要注意的是,当有两台设备发生故障时,运营将会停止。
计算稼动率
为了更加清晰地进行比较,我使用了稼动率为0.9的服务器,记录了双重和三重状态如下所示。
- 2重化の場合
系统的运行率是,①+②+③=0.99
计算式:$ (1-x)^2 $
- 3重化の場合
飼养员的情况下,必须有两台设备正常运行,所以由①~④运行中
运行率为 ①+②+③+④ = 0.972
计算公式: $ x^3 + 3(1-x)x^2 = (3-2x)x^2 $
比较稼动率。
根据上面的情况,我们可以看出,尽管双重备份系统的运行率为99%,但如果采用三重备份系统,运行率将降至97.2%。
这表明,并不一定三重备份系统的运行率就会更高。
(请注意)
即使是三重备份系统,只要所有设备中有一台正常运行,那么运行率将达到99.9%,比双重备份更高。
三重化系统的目标 huà de
在动物园管理员的情况下,他们通过更新Hadoop和Kafka等信息来保持实时更新并持有正确的数据。如果存在正确的数据,那么他们可以轻松进行恢复,但是如果数据损坏,系统恢复将变得困难,甚至可能导致重要客户数据的丢失。为了避免成为更大的故障,他们有一种考虑,在恢复工作变得困难的情况下,暂时停止系统以便轻松恢复,这样可以通过保护数据(停止操作并禁止数据更新)来防止出现更严重的故障。这是最好的方案,即使发生意外故障,也能避免第二次和第三次的损害。
总结
如果假设在3重化系统中有2台故障正处于运行状态,那么相较于2重化冗余,可运行率会变差。
然而,3重化是为了避免第二次和第三次损害并实现正常恢复所必需的方法。
请确保检查并确认在两台设备发生故障时系统的运作情况,因为并非所有的三重化系统都适用于此稼动率计算。