【Zookeeper】二、主从应用(master-worker架构)

以一张具有代表性的架构风格展开本篇论述

一般在这种架构中,主节点所负责的工作主要有

  • 跟踪从节点状态
  • 分配任务到从节点,并跟踪任务的有效性(任务是否正常执行完成)

此时,我们需要关注三个问题

  • 主节点崩溃
    如果主节点发生了错误,那么整个系统将无法分配新的任务;对于已经失败的任务也无法进行重新分配。
  • 从节点崩溃
    如果从节点发生错误,已经分配的任务将无法执行完成。
  • 主从之间的通信发生故障
    如果主从之间通信故障,主节点将无法感知从节点的任务执行状态,并且从节点也无法接收新的任务。
主节点崩溃

对于这个问题,我们需要有一个备份主节点(backup master)。当主要主节点(primary master)崩溃时,backup master能够接管primary master的任务,进行故障转移。接管意味着,新的master能够切入到旧的master崩溃时的状态。此时,就需要旧的master失效时的一些信息,而这个信息已经无法从旧的master进行获取,需要从其他地方获取,即通过Zookeeper进行获取。

还有另外一种情况。当主节点负载很高,导致消息传递发生了延迟,导致backup master误认为primary master已经失效,此时backup master会成为第二个primary master。同时由于网络等原因,一些从节点无法与第一个primary mastter通信,而与第二个primary master建立了主从关系。这种情况被称之为脑裂(split-brain)。简单来讲,脑裂就是系统中两个或多个部分开始独立工作,导致整体行为不一。

所以需要一种方法来处理主节点失效的情况,并且避免脑裂。

从节点崩溃

主节点分配任务到有效的从节点,从节点执行任务并报告任务的执行状态。如果从节点崩溃了,主节点需要将尚未完成的任务重新派发到其他从节点。所以,主节点需要具备检测从节点失效的能力,并确定那些从节点有效以便于派发任务。

主从之间的通信发生故障

如果一个从节点与主节点的网络连接断开,重新分配一个任务可能会导致两个从节点执行相同的任务。如果一个任务允许多次执行,我们在进行任务再分配时可以不用关心从节点是否完成了该任务。如果一个任务不允许,那么我们的应用需要适应多个从节点执行相同任务的可能性。

通过以上描述,总结出主从架构有以下几点需求
  • 主节点选举
  • 崩溃检测
  • 组成员关系管理:主节点需要知道哪一个从节点具备执行任务的能力。
  • 元数据管理。用于保存任务的分配状态和执行状态。

ZooKeeper提供了实现这些原语的关键机制,使得开发者可以更加关注应用本身的业务逻辑。

什么是原语?

比如说我写到这里的时候,饥肠辘辘,想吃宫保鸡丁,于是我开始自己动手做这道菜。

  • 切(原语):首先,需要将鸡肉切成丁,将辣椒切成段。
  • 炒(原语):其次,需要在锅中加热油,然后炒鸡肉。
  • 调味(原语):最后,在炒的过程中,需要加入调料,如酱油、糖、醋等。

通过这些基本的"原语"(准备食材和烹饪操作),可以组合它们来完成一道美味的菜肴。在计算机中,原语就是构建更复杂系统和程序的基本构件。

相关推荐
古月居GYH1 小时前
一文了解ARM内部架构
arm开发·架构
mit6.8241 小时前
[Redis#1] 前言 | 再谈服务端高并发分布式结构的演进
linux·数据库·redis·分布式·后端
鹧鸪云光伏与储能软件开发1 小时前
光伏电站的方案PPT总结
分布式·powerpoint·光伏发电·光伏·光伏计算
爪哇学长2 小时前
JavaFX 与其他图形库的详细比较:现代架构与性能优势
java·架构·系统架构
天冬忘忧2 小时前
Kafka:分布式消息系统的核心原理与安装部署
大数据·分布式·kafka
꧁薄暮꧂2 小时前
kafka中节点如何服役和退役
分布式·kafka
斑驳竹影2 小时前
Kafka中ACKS LSO LEO LW HW AR ISR OSR解析
分布式·kafka
苍老流年2 小时前
2. kafka 生产者
分布式·kafka·linq
打孔猿2 小时前
kafka消费者出现频繁Rebalance
分布式·kafka
那一抹阳光多灿烂3 小时前
Hadoop 3.x 新特性详解
大数据·hadoop·分布式