主从系统的需要解决的三个关键问题javascript:void(null)
1.主节点崩溃。如果主节点发生错误或失效,系统将无法分配新的任务或者重新分配已经执行失败的任务。
2.从节点崩溃。如果从节点崩溃,系统无法执行已经分配的任务。
3.通信故障。如果主节点和从节点之间发生通信故障,从节点无法得知新任务已经分配给它。
主节点失效
主节点失效时,需要一个备份主节点。当主节点崩溃,备份主节点承担主节点的角色,备份主节点启用后,并不是直接开始工作,必须能够恢复到旧的主节点崩溃时的状态。对于主节点的状态获取,不能依靠旧的主节点,而是从zookeeper获取这些信息。
还有一种情况,假若主节点有效,备份节点任务主节点宕机。这种错误的假设可能发生在以下情况,例如主节点负载很高,导致消息延迟,从节点误认为主节点崩溃,此时,备份主节点成为第二个主节点。更糟的是,如果一些从节点无法与主节点通信,由于网络分区错误,这些从节点可能会与主节点断开,与第二个主节点建立通信,从而导致脑裂。
从节点失效
从节点崩溃,主节点分配给从节点未完成的任务,需要重新派发。因此主节点分配任务前,具备检测从节点是否崩溃的能力。从节点崩溃时,派发的任务可能没有执行完成,也可以执行完成,但是没有报告结果。因此,重新派发任务前,必须清楚任务的状态。
通信故障
从节点与主节点通信断开,重新分配任务,可能导致两个从节点执行相同的任务,若果,任务可以被多次执行,无需验证改任务是否执行完成。若任务不允许多次执行,需要适应多个从节点执行任务的可能性
网友评论