理解主从架构中的分布式难题
主节点失效
主节点失效时,我们需要一个备用主节点,它会接管主节点的角色,进行故障转移。他需要能够恢复到旧的主节点崩溃时的状态,而这个状态是通过ZooKeeper来获取的。此外还有脑裂(WTF?)的情况:主节点只是响应慢了点,并没有失效,但备用主节点认为失效了也启动类。于是系统中存在两个独立的主节点,各自工作,造成整体行为的不一致。
从节点失效
客户端向主节点提交任务,主节点将任务委派给从节点,从节点完成任务后返回结果,主节点将结果返回客户端。如果从节点崩溃,主节点需要重新分配,所以主节点需要具有检测从节点崩溃的功能。
通信故障
不知道一个任务是否被子节点执行完毕?锁机制?客户端需要报告ZooKeeper某些数据是临时数据,还需要发送存活心跳。
任务总结
主节点选举
从节点崩溃检测
从节点任务状态管理
保存主从节点的元数据