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

news/2024/11/26 1:55:59/
以一张具有代表性的架构风格展开本篇论述

在这里插入图片描述一般在这种架构中,主节点所负责的工作主要有

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

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

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

对于这个问题,我们需要有一个备份主节点(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提供了实现这些原语的关键机制,使得开发者可以更加关注应用本身的业务逻辑。

什么是原语?

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

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

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


http://www.ppmy.cn/news/1549959.html

相关文章

tcpdump抓取流量包详解

tcpdump 是 Linux 下强大的网络抓包工具,广泛用于网络诊断和分析。以下是对 tcpdump 的详细讲解,包括安装、使用方法和常见示例。 1. 基本概念 tcpdump 用于捕获和分析网络数据包,可以过滤并显示传输中的数据,支持协议、端口等多…

【JAVA】Java基础—面向对象编程:常用API与数据结构—集合框架(List、Set、Map等)

Java集合框架是Java编程语言中一个强大的工具集,它提供了数据结构的实现和操作方法,用于存储和处理对象。Java集合框架的核心接口包括List、Set和Map,它们为开发者提供了灵活而高效的数据管理方式。在日常开发中,集合框架的使用无…

微服务系列概览

分布式和微服务的区别是什么? 分布式是把一个集中式系统拆分成多个系统,每一个系统单独对外提供部分功能,整个分布式系统整体对外提供一整套服务。对于访问分布式系统的用户来说,感知上就像访问一台计算机一样。 而分布式架构的…

网络安全 - DOS

1.1.1 摘要 最近网络安全成了一个焦点,除了国内明文密码的安全事件,还有一件事是影响比较大的——Hash Collision DoS(通过Hash碰撞进行的拒绝式服务攻击),有恶意的人会通过这个安全漏洞让你的服务器运行巨慢无比&…

[译]Elasticsearch Sequence ID实现思路及用途

原文地址:https://www.elastic.co/blog/elasticsearch-sequence-ids-6-0 如果 几年前,在Elastic,我们问自己一个"如果"问题,我们知道这将带来有趣的见解: "如果我们在Elasticsearch中对索引操作进行全面排序会怎样…

在SQLyog中导入和导出数据库

导入 假如我要导入一个xxx.sql,我就先创建一个叫做xxx的数据库。 然后右键点击导入、执行SQL脚本 选择要导入的数据库文件的位置,点击执行即可 注意: 导入之后记得刷新一下导出 选择你要导出的数据库 右键选择:备份/导出、…

移动端自动化环境搭建_Android

adb的安装与使用 adb安装adb环境变量adb使用adb常用命令adb简介adb作用 adb安装 选择对应系统进入下载界面,选中版本下载即可: Windows版本:Windows Mac版本:Mac Linux版本:Linux 安装完成后,进行压缩&…

Android开发教程案例源码分享-匹配动画多个头像飘动效果

Android开发教程案例源码分享-匹配动画多个头像飘动效果 匹配往往出现多个头像飘动,吸引人点击,有时出现的位置还不固定 一、思路: 用MotionLayout 二、效果图: 看视频更直观点: Android开发教程案例源码分享-匹配…