【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提供了实现这些原语的关键机制,使得开发者可以更加关注应用本身的业务逻辑。
什么是原语?
比如说我写到这里的时候,饥肠辘辘,想吃宫保鸡丁,于是我开始自己动手做这道菜。
- 切(原语):首先,需要将鸡肉切成丁,将辣椒切成段。
- 炒(原语):其次,需要在锅中加热油,然后炒鸡肉。
- 调味(原语):最后,在炒的过程中,需要加入调料,如酱油、糖、醋等。
通过这些基本的“原语”(准备食材和烹饪操作),可以组合它们来完成一道美味的菜肴。在计算机中,原语就是构建更复杂系统和程序的基本构件。
相关文章:
【Zookeeper】二、主从应用(master-worker架构)
以一张具有代表性的架构风格展开本篇论述 一般在这种架构中,主节点所负责的工作主要有 跟踪从节点状态分配任务到从节点,并跟踪任务的有效性(任务是否正常执行完成) 此时,我们需要关注三个问题 主节点崩溃 如果主节…...
Diffusion【2】:VAE
系列文章目录 文章目录 系列文章目录前言1. Abstract2. Introduction2.1. Motivation2.2. Contribution 3. Methods3.1. Problem Scenario3.2. The variational bound3.3. The SGVB estimator and AEVB algorithm3.3.1. Stochastic Gradient Variational Bayes Estimator3.3.2.…...
高级java每日一道面试题-2024年11月19日-基本篇-获取一个类Class对象的方式有哪些?
如果有遗漏,评论区告诉我进行补充 面试官: 获取一个类Class对象的方式有哪些? 我回答: 在 Java 中,获取一个类的 Class 对象有多种方式。这些方式各有优缺点,适用于不同的场景。以下是常见的几种方法及其详细解释: 1. 使用 new 关键字实…...
xilinx xapp1171学习笔记
在xapp1171示例中,假设Host PC将PCIE:BAR0赋值为:0x00000000_def00000 PCIEBAR2AXIBAR_00x81000000,即Host PC读写0x00000000_def00000就是在读写AXI地址0x81000000(BRAM在AXI总线上的基地址) 在AXI总线上࿰…...
一次需升级系统的wxpython安装(macOS M1)
WARNING: The scripts libdoc, rebot and robot are installed in /Users/用户名/Library/Python/3.8/bin which is not on PATH. 背景:想在macos安装Robot Framework ,显示pip3不是最新,更新pip3后显示不在PATH上 参看博主文章末尾 MAC系统…...
el-table 数据去重后合并表尾合计行,金额千分位分割并保留两位小数,表尾合计行表格合并
问题背景 最近在做后台管理项目el-table 时候需要进行表尾合计,修改合计后文字的样式,合并单元格。 想实现的效果 合并表尾单元格前三列为1格;对某些指定的单元格进行表尾合计;合计后的文本样式加粗;涉及到金额需要千…...
Springboot整合mybatis-plus使用pageHelper进行分页
PageHelper 使用步骤全解析 在进行 Web 应用开发时,经常会涉及到数据库数据的分页展示。PageHelper 是一个非常实用的 MyBatis 分页插件,它能够方便地实现数据库查询结果的分页功能,极大地提高了开发效率。以下将简单介绍 PageHelper 的使用…...
【Xbim+C#】创建拉伸的墙
基础 基础回顾 效果图 简单的工具类 using System.Collections.Generic; using System.Linq; using Xbim.Common.Step21; using Xbim.Ifc; using Xbim.Ifc4.GeometricConstraintResource; using Xbim.Ifc4.GeometricModelResource; using Xbim.Ifc4.GeometryResource; using…...
【阅读记录-章节3】Build a Large Language Model (From Scratch)
目录 3 Coding attention mechanisms3.1 The problem with modeling long sequences背景:注意力机制的动机 3.2 Capturing data dependencies with attention mechanismsRNN的局限性与改进Transformer架构的革命 3.3 Attending to different parts of the input wit…...
three.js 对 模型使用 视频进行贴图修改材质
three.js 对 模型使用 视频进行贴图修改材质 https://threehub.cn/#/codeMirror?navigationThreeJS&classifyapplication&idvideoModel import * as THREE from three import { OrbitControls } from three/examples/jsm/controls/OrbitControls.js import { GLTFLoad…...
MySQL - 数据库基础 | 数据库操作 | 表操作
文章目录 1、数据库基础1.1为什么要有数据库1.2主流的数据库1.3连接MySQL1.4服务器、数据库、表的关系1.5 MySQL框架1.6 SQL分类1.7储存引擎 2.数据库操作2.1创建数据库2.2字符集和校验规则2.3删除数据库2.4修改数据库2.5备份与恢复2.6查看连接情况 3.表的操作3.1创建表3.2查看…...
maven父子项目
目录 一、创建Maven父子项目 二、父子项目的关联 三、父子项目的继承关系 四、构建父子项目 五、Maven父子项目的优势 Maven父子项目是一种项目结构,它允许一个父项目(也称为根项目)管理多个子项目(也称为模块)。…...
NLP论文速读(多伦多大学)|利用人类偏好校准来调整机器翻译的元指标
论文速读|MetaMetrics-MT: Tuning Meta-Metrics for Machine Translation via Human Preference Calibration 论文信息: 简介: 本文的背景是机器翻译(MT)任务的评估。在机器翻译领域,由于不同场景和语言对的需求差异&a…...
MyBatis——#{} 和 ${} 的区别和动态 SQL
1. #{} 和 ${} 的区别 为了方便,接下来使用注解方式来演示: #{} 的 SQL 语句中的参数是用过 ? 来起到类似于占位符的作用,而 ${} 是直接进行参数替换,这种直接替换的即时 SQL 就可能会出现一个问题 当传入一个字符串时ÿ…...
解决sql字符串
根据你描述的情况以及调试截图中的内容,我可以确认你的 sql 字符串在 Python 中由于转义字符的问题,可能导致在 Oracle 中运行时出错。 以下是一些排查和修改建议: 问题分析 转义字符问题: 在调试界面中可以看到,DEC…...
深度解析:Android APP集成与拉起微信小程序开发全攻略
目录 一、背景以及功能介绍 二、Android开发示例 2.1 下载 SDK 2.2 调用接口 2.3 获取小程序原始Id 2.4 报错提示:bad_param 2.4.1 错误日志 2.4.2 解决方案 相关推荐 一、背景以及功能介绍 需求:产品经理需要APP跳转到公司的小程序(最好指定页…...
Leetcode 被围绕的区域
算法思想(解题思路): 这道题的核心是 将所有被边界包围的 O 保留下来,而将其他被围绕的 O 转换为 X。为了实现这一目标,我们可以分三步完成: 第一步:标记边界及其相连的 O 为特殊标记ÿ…...
ssm框架-spring-spring声明式事务
声明式事务概念 声明式事务是指使用注解或 XML 配置的方式来控制事务的提交和回滚。 开发者只需要添加配置即可, 具体事务的实现由第三方框架实现,避免我们直接进行事务操作! 使用声明式事务可以将事务的控制和业务逻辑分离开来,提…...
React第五节 组件三大属性之 props 用法详解
特性 a、props最好是仅限于父子上下级之间的数据传递,如果是祖孙多级之间传递属性,可以考虑使用props是否合适,或者使用替代方案 useContext() 或者使用 redux状态管理; b、props 中的属性是只读属性,如果想修改其中的…...
测评部署和管理 WordPress 最方便的面板
新版宝塔面板快速搭建WordPress新手教程 - 倚栏听风-Morii - 博客园 初学者使用1Panel面板快速搭建WordPress网站 - 倚栏听风-Morii - 博客园 可以看到,无论是宝塔还是1Panel,部署和管理WordPress都有些繁琐,而且还需要额外去配置Nginx和M…...
3分钟告别Windows桌面混乱:这款免费工具让你的图标瞬间变整齐
3分钟告别Windows桌面混乱:这款免费工具让你的图标瞬间变整齐 【免费下载链接】NoFences 🚧 Open Source Stardock Fences alternative 项目地址: https://gitcode.com/gh_mirrors/no/NoFences 还在为Windows桌面上那些杂乱无章的图标头疼吗&…...
政策快报网的申报引擎:从政策匹配到材料准备的全流程设计
用户通过政策匹配引擎找到了一条适合自己的政策,然后呢? 这是很多政策信息平台共同面临的问题。在传统的政策快报网设计思路中,价值链条往往止步于“告诉用户有这条政策”。但真正的需求远不止于此——用户需要知道申报截止时间、需要准备哪些材料、材料有什么格式要求、提…...
C语言学习笔记20260522—交换两个整数的值(地址传递)/打印1-100直接3倍数的数字/两个数最大公约数(最小公倍数)
一.知识点 函数需要改变实参时,必要要用地址传递,不能用值传递。当一个数%比自己大的数是,%的值就是自己本身。数辗转相除法(欧几里得算法)求两个数的最大公约数。两个数的最小公倍数为两个数的乘积除以最大公约数。 二…...
NotebookLM效应量计算合规性危机:FDA/EMA/NMPA最新AI辅助研究指南对效应量报告的强制性要求(附自查清单V2.3)
更多请点击: https://intelliparadigm.com 第一章:NotebookLM效应量计算合规性危机的定义与背景 NotebookLM 效应量计算合规性危机,是指当研究者在使用 Google NotebookLM(一款基于 LLM 的文档理解与推理工具)辅助开展…...
2026年AI大模型接口中转站性能成本全维度实测 主流服务商权威排名榜单发布
一、五大主流接口中转平台核心维度全横向对标2026年AI大模型已经完成从技术验证向规模化落地的深度跨越,国内日均AI Token调用量已经突破140万亿,大模型API聚合中转站的角色早已不再是简单的协议转发层,已经进化为企业搭建自身AI能力体系的核…...
ChatGPT写代码总出错?揭秘92%开发者忽略的3层提示工程校验机制
更多请点击: https://intelliparadigm.com 第一章:ChatGPT写代码总出错?揭秘92%开发者忽略的3层提示工程校验机制 当ChatGPT生成的代码在本地运行失败、逻辑错位或依赖缺失时,问题往往不在模型本身,而在于提示&#x…...
oracle数据库的了解和使用
文章目录 1. 概述1)数据库2)实例3)表空间4)用户5) schema6)数据库的持久化7)注释8)mysql和oracle数据库逻辑结构类比 2. 数据库操作1)创建表空间2)创建操作表空间的用户3…...
凡亿AD最小系统板--元件模型组成介绍
一、课程整体概述原理图库创建是PCB设计流程的第二步核心工作,也是电子设计建模的源头工序。所有电路板上的电子元器件,都需要先在原理图库中绘制对应的电气模型,才能完成后续原理图绘制、封装匹配、PCB布局布线等操作。本系列课程将通过多类…...
Armv8/v9架构SCTLRMASK_EL2寄存器解析与应用
1. AArch64系统控制寄存器基础解析在Armv8/v9架构中,系统控制寄存器(System Control Registers)是处理器状态配置的核心组件,它们分布在不同的异常级别(EL0-EL3),用于管理处理器行为、内存系统、安全状态等关键功能。这些寄存器通常通过MRS/M…...
LLM语言大模型的企业应用案例
本文系统梳理 2025-2026 年国内外 7 款主流大语言模型(LLM)在企业中的成功部署案例,覆盖金融、汽车、旅游、政务、医疗五大行业,每个案例均包含部署步骤、数据准备、改善效果数字及经验教训,为企业 AI 落地提供可借鉴的…...
