分布式基础 --- Leader election

分布式基础 --- Leader election

  • 为什么需要leader election
  • Ring election
  • Bully Algorithm

为什么需要leader election

  • 在一组集群中, 需要选出一个leader来承担一些特别的任务, 比如
  • 协调和控制系统操作:领导者负责协调和控制整个分布式系统的操作。它可以接收和处理其他节点的请求,并根据系统的需求进行决策和操作。
  • 数据一致性和复制:领导者负责确保系统中的数据一致性和复制。它可以处理写入请求,并将写入操作广播到其他节点,以确保数据的一致性和可靠性。
  • 资源分配和调度:领导者可以负责资源的分配和调度,以优化系统的性能和资源利用率。它可以根据系统的负载情况和需求,进行资源分配和任务调度的决策。
  • 错误处理和故障恢复:领导者可以监视系统中的错误和故障,并采取相应的措施进行处理和恢复。它可以检测到其他节点的故障,并执行相应的故障转移和恢复策略,以确保系统的可用性和稳定性.

Ring election

  • 初始化:在环状拓扑中的每个节点都被分配一个唯一的标识,例如节点ID。开始时,每个节点都将自己标记为候选者状态。
  • 发起选举:一个节点决定发起选举时,它将向其后继节点发送选举消息。
  • 选举消息传递:当一个节点收到选举消息时,它会比较消息中的候选者标识和自己的标识。如果收到的候选者标识比自己的标识更大,节点将更新自己的状态为候选者,并将收到的消息继续传递给下一个节点。如果收到的候选者标识与自己的标识相同,节点将宣布自己为领导者,并将选举结果传递回发起选举的节点。
  • 选举结果传递:选举结果通过环状拓扑结构传递回发起选举的节点。每个节点将选举结果与自己的状态比较,如果选举结果中的标识比自己的标识更大,节点将更新自己的状态为候选者,并将选举结果继续传递给下一个节点。如果选举结果中的标识与自己的标识相同,节点将宣布自己为领导者,并选举过程结束。
  • 领导者选举完成:当选举结果回到发起选举的节点时,该节点将宣布选举完成,并将选举结果广播给整个系统,以便其他节点得知新的领导者
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 接着 N80 的 Message会转一圈,最终回到N80, 表示选举完成. N80发出elected message
import java.util.ArrayList;
import java.util.List;// 节点类定义
class Node {private int id;private int leaderpublic Node(int id) {this.id = id;}public int getId() {return id;}public void receiveElectionMessage(ElectionMessage message) {if (message.type == "Elected" && message.id == this.id) {//election finishedleader = message.id;return }else if (message.type == "Elected") {leader = message.id;passElectionMessage(message)return }if (message.id > this.id) {passElectionMessage(message)}else if (message.getId() < this.id) {passElectionMessage(new ElectionMessage(this.id, "Election"))}else {passElectionMessage(new ElectionMessage(this.id, "Elected"))}}public void passElectionMessage(ElectionMessage message) {Node nextNode = getNextNode(); nextNode.receiveElectionMessage(message);}
}// 选举消息类定义
class ElectionMessage {public int id;public string messageType;
}

复杂度分析

  • Worst-Case:
  • (N-1) messages for Election message to get from
    Initiator (N6) to would-be coordinator (N80)
  • N messages for Election message to circulate around ring without message being changed
  • N messages for Elected message to circulate around the ring
  • Message complexity: 3N-1 messages
  • Best-Case: 2N
  • Initiator is the would-be leader is the initiator
  • Message complexity: 2N messages

如何应对 Failures

  • 如果在选举中N80挂掉了,则选举会一直进行下去
    在这里插入图片描述
  • 方案一: 让之前或者之后的节点重新发起选举, 如果收到Election message之后超时没有收到Elected Message
  • 但是如果之前或者之后的节点也挂掉了, 或者之前前,之后后的节点也挂掉了
  • 方案二: 使用Failure Detection:
  • 任何接收到election消息(Election:80)的进程都可以通过Failure Detection检测N80的故障。
  • 如果检测到N80的故障,可以启动新一轮的领导者选举
  • 但是Failure Detection 本身就有不准确性

Bully Algorithm

  • 所有节点都知道其他节点的ID
  • 当之前的leader 挂掉时(通过 Failure Detection)
  • 如果一个节点知道自己的标识是最高的:
  • 它将自己选举为协调者,并向所有标识较低的进程发送一个Coordinator消息
  • 选举过程完成
  • 如果一个节点知道自己的标识不是最高的:
  • 它会通过发送一个选举消息来发起选举。
  • 只向比自己标识更高的进程发送选举消息。
  • 如果在超时时间内没有收到回复,节点将自己称为领导者,并向所有标识较低的进程发送一个协调者消息。选举完成。
  • 如果收到了回复,说明存在一个非故障的更高优先级的节点,节点将等待Coordinator消息。如果在另一个超时时间内没有收到Coordinator消息,节点将重新开始一个新的选举过程.

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/268260.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

46、WEB攻防——通用漏洞PHP反序列化原生类漏洞绕过公私有属性

文章目录 几种常用的魔术方法1、__destruct()2、__tostring()3、__call()4、__get()5、__set()6、__sleep()7、__wakeup()8、__isset()9、__unset()9、__invoke() 三种变量属性极客2019 PHPphp原生类 几种常用的魔术方法 1、__destruct() 当删除一个对象或对象操作终止时被调…

数据中心GPU集群高性能组网技术分析

数据中心GPU集群组网技术是指将多个GPU设备连接在一起&#xff0c;形成一个高性能计算的集群系统。通过集群组网技术&#xff0c;可以实现多个GPU设备之间的协同计算&#xff0c;提供更大规模的计算能力&#xff0c;适用于需要大规模并行计算的应用场景。 常用的组网技术&…

码垛工作站:食品生产企业的转型助推器

在当今高度自动化的工业生产中&#xff0c;码垛工作站的应用正逐渐成为一种趋势。某食品生产企业在面临市场竞争加剧、人工成本上升等多重压力下&#xff0c;决定引入码垛工作站&#xff0c;以期实现生产流程的升级与变革。 一、码垛工作站引入背景 该企业主要从事休闲食品的…

iMazing3安全吗?好不好用?值不值得下载

一、安全性 iMazing在设计和开发过程中&#xff0c;始终把用户数据的安全性放在首位。它采用了多种先进的安全技术来确保用户数据在传输、备份和存储过程中的安全。 iMazing3Mac-最新绿色安装包下载如下&#xff1a; https://wm.makeding.com/iclk/?zoneid49816 iMazing3Wi…

mysql 常用命令练习

管理表格从表中查询数据从多个表查询修改数据sql变量类型 管理表格 创建一个包含三列的新表 CREATE TABLE products (id INT,name VARCHAR(255) NOT NULL,price INT DEFAULT 0,PRIMARY KEY(id) // 自增 ); 从数据库中删除表 DROP TABLE product; 向表中添加新列 ALTER TAB…

【Python】成功解决TypeError: list indices must be integers or slices, not float

【Python】成功解决TypeError: list indices must be integers or slices, not float &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程&…

计算机二级Python刷题笔记------基本操作题11、14、17、21、30(考察列表)

文章目录 第十一题&#xff08;列表遍历&#xff09;第十四题&#xff08;len&#xff09;第十七题&#xff08;len、insert&#xff09;第二十一题&#xff08;append&#xff09;第三十题&#xff08;二维列表&#xff09; 第十一题&#xff08;列表遍历&#xff09; 题目&a…

c++之旅——第三弹

大家好啊&#xff0c;这里是c之旅第三弹&#xff0c;跟随我的步伐来开始这一篇的学习吧&#xff01; 如果有知识性错误&#xff0c;欢迎各位指正&#xff01;&#xff01;一起加油&#xff01;&#xff01; 创作不易&#xff0c;希望大家多多支持哦&#xff01; 一.命名空间;…

React-router的创建和第一个组件

需要先学react框架 首先&#xff1a;找到一个文件夹&#xff0c;在文件夹出打开cmd窗口&#xff0c;输入如下图的口令 npx create-react-app demo 然后等待安装 安装完成 接下来进入创建的demo实例 cd demo 然后可以用如下方式打开vscode code . 注意&#xff1a;不要忽略点号与…

vue2+elementui上传照片(el-upload 超简单)

文章目录 element上传附件&#xff08;el-upload 超详细&#xff09;代码展示html代码data中methods中接口写法 总结 element上传附件&#xff08;el-upload 超详细&#xff09; 这个功能其实比较常见的功能&#xff0c;后台管理系统基本上都有&#xff0c;这就离不开element的…

多层感知机 + 代码实现 - 动手学深度学习v2 | 李沐动手学深度学习课程笔记

感知机 感知机≈二分类问题 感知机和其他问题的对比 训练感知机 如果小于等于零&#xff0c;说明预测错啦 &#xff0c;其实就是同号为正&#xff0c;异号为负 举个分类的例子 增加样本&#xff0c;改变分类线 继续分类 感知机的收敛定理 XOR问题 XOR问题其实就是第1、3象限数…

Java 语法糖,提高代码效率神器!

引言&#xff1a;语法糖经常是大厂面试官常问的一个知识点&#xff0c;关于 Java 的语法糖很多人可能只是知道其中的某几个&#xff0c;但却对整体的结构不了解&#xff0c;本文将详细介绍 Java 语法糖的知识。 题目 什么是 Java 语法糖&#xff1f; 推荐解析 什么是语法糖…

数据结构与算法学习【算法思想之二分法基础】

文章目录 数据结构与算法学习【算法思想之二分查找基础】本文学习目标或巩固的知识点 最基础的二分查找&#x1f7e2;通过题目可知题解结果验证 数据结构与算法学习【算法思想之二分查找基础】 本文学习目标或巩固的知识点 学习二分法类题目 巩固基础的二分法 提前说明&#…

机器人持续学习基准LIBERO系列10——文件结构

0.前置 机器人持续学习基准LIBERO系列1——基本介绍与安装测试机器人持续学习基准LIBERO系列2——路径与基准基本信息机器人持续学习基准LIBERO系列3——相机画面可视化及单步移动更新机器人持续学习基准LIBERO系列4——robosuite最基本demo机器人持续学习基准LIBERO系列5——…

(二)逻辑回归与交叉熵--九五小庞

什么是逻辑回归 线性回归预测的是一个连续值&#xff0c;逻辑回归给出的“是”和“否”的回答 Singmoid sigmoid函数是一个概率分布函数&#xff0c;给定某个输入&#xff0c;它将输出为一个概率值 逻辑回归损失函数 平方差所惩罚的是与损失为同一数量级的情形&#xff0…

Unity铰链四杆机构设计和运动仿真

一、效果图 设定好各边长度和转速后&#xff0c;点击【设置并启动】&#xff0c;自动生成一个机构模型&#xff0c;并按照原理进行运转 二、铰链四杆机构介绍 机架&#xff1a;A和D是固定位置&#xff0c;叫做机架。 曲柄&#xff1a;B点绕A点旋转&#xff0c;构成曲柄。 连…

vSphere资源管理

一 内存、CPU、资源池和vApp 内存部分&#xff1a; 关联VM内存 我们可以超额的关联内存给VM。例如&#xff1a;ESXI物理主机内存只有8G&#xff0c;但我们可以给三个VM都分配4G内存。 2.ESXI四大高级内存控制技术 a.Page sharing&#xff08;透明的页面共享&#xff09; 虚…

青少年CTF擂台挑战赛 2024 #Round 1 Web方向题解 WP 全

EasyMD5 题目描述&#xff1a;php没有难题 考点总结&#xff1a;脑洞题目&#xff0c;不如我出&#xff08;狗头 只允许两个都上传pdf文件。 文件还不能太大了。burp多次发包发现要求两个pdf内容不一样 不一样时候&#xff0c;提示我们MD5碰撞。 科学计数法绕过 PHP的后门 …

WebServer -- 注册登录

目录 &#x1f349;整体内容 &#x1f33c;流程图 &#x1f382;载入数据库表 提取用户名和密码 &#x1f6a9;同步线程登录注册 补充解释 代码 &#x1f618;页面跳转 补充解释 代码 &#x1f349;整体内容 概述 TinyWebServer 中&#xff0c;使用数据库连接池实现…

PDN分析及应用系列二-简单5V电源分配-Altium Designer仿真分析-AD

PDN分析及应用系列二 —— 案例1:简单5V电源分配 预模拟DC网络识别 当最初为PCB设计打开PDN分析仪时,它将尝试根据公共电源网络命名法从设计中识别所有直流电源网络。 正确的DC网络识别对于获得最准确的模拟结果非常重要。 在示例项目中已经识别出主DC网络以简化该过程。 …