分布式与一致性协议之拜占庭将军问题(三)

拜占庭将军问题

叛将先发送消息

  • 如果是叛将楚先发送作战消息,干扰作战计划,结果会有所不同吗?
    在第一轮作战信息协商中,楚向苏秦发送作战指令"进攻",向齐、燕发送作战指令"撤退",如图所示(当然还有其他情况,这里指示选择了其中一种,大家也可以尝试推导其他的情况,看看结果是不是一样).
    在这里插入图片描述
  • 然后在第二轮作战信息协商中,苏秦、齐、燕分别作为指挥官,将接收到的作战信息附加上自己的签名,并转发给另外两位,如图所示。为了达到干扰作战计划的目的,叛将楚和燕相互勾结了。比如,燕拿到了楚的私钥,也就是燕可以伪造楚的签名,此时,燕为了干扰作战计划,给苏秦发送作战指令"进攻",给齐发送作战指令"撤退"
    在这里插入图片描述
  • 接着,在第三轮作战信息协商中,苏秦、齐、燕分别作为指挥官,将接收到的作战信息附加上自己的签名,并转发给另外以为,如图所示
    在这里插入图片描述
  • 最终,苏秦和齐接收到的左闸内心戏都是"撤退、进攻",按照"执行盒子最中间的指令"的约定,苏秦、齐和燕一起执行作战指令"撤退",实现了作战计划的一致性。也就是说,无论叛将楚和燕如何捣乱,苏秦和齐都能执行一致的作战计划,保证作战的胜利。
  • 需要注意的是,签名消息的拜占庭问题之解,也是需要进行m+1轮(其中m为叛将数,即如果只有楚、燕是叛变的,那么就进行3轮)协商。我们也可以从另外一个角度理解:n位将军,能容忍(n-2)位叛将(只有一位忠将没有意义,因为此时不需要达成共识)。另外,签名消息型拜占庭问题之解,解决的是忠将们如何就作战计划达成共识的问题,也即只要忠将们执行了
    一致的作战计划就可以了,它不关心这个共识是什么,比如在适合进攻的时候,忠将们可能执行的作战计划是撤退,也就是说这个算法比较理论化。关于这一点,这个算法解决的是共识问题,没有与实际场景结合,是很难在实际场景中落地的。在实际场景中,可以考虑改进后的拜占庭容错算法,比如PBFT算法

拜占庭容错算法和非拜占庭容错算法,应该如何选择呢?

为了帮助大家理解拜占庭将军问题,前面讲了苏秦协商作战的故事,现在让我们跳回到现实世界,回到计算机世界的分布式场景中:

  • 1.故事里的各位将军可以理解为计算机节点
  • 2.忠诚的将军可以理解为正常运行的计算机节点
  • 3.叛变的将军可以理解为出现故障并会发送误导信息的计算机节点
  • 4.信使被杀可以理解为通信故障、信息丢失
  • 5.信使被间谍替换可以理解为通信被中间人攻击,攻击者在恶意伪造信息和劫持通信

需要注意的是,拜占庭将军问题描述的是最困难,也是最复杂的一种分布式故障场景,该场景除了存在故障行为,还存在恶意行为。在存在恶意行为的场景中(比如在数字货币的区块链技术中),我们必须使用拜占庭容错算法还有PBFT算法、POW算法。在计算机分布式系统中,最常用的是非拜占庭容错算法,即故障容错(Crash Fault Tolerance, CFT)算法。
CFT算法解决的是分布式系统中存在故障,但不存在恶意节点的场景下的共识问题。也就是说,这个场景可能会丢失消息或者有消息重复,但不存在错误消息或者伪造消息的情况,常见的CFT算法有Paxos算法、Raft算法、ZAB协议。那么,如何在实际场景中选择合适的算法类型呢?如果能确定该环境中各节点是可信赖的,不存在篡改消息或者伪造消息等恶意行为(例如DevOps环境中的分布式寻址系统),推荐使用非拜占庭容错算法;
反之则推荐使用拜占庭容错算法,例如区块链中使用Pow算法

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

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

相关文章

腾讯云向量数据库-RAG介绍2

1.chunk拆分对最终效果的影响 2.改进知识的拆分方案 3.AI套件 4.相似性检索的关键:embedding技术 嵌入技术是相似性检索的关键,它能够将数据转换为向量表示,并通过比较向量之间的相似性来实现相似性检索;embedding:将…

Jackson 2.x 系列【30】Spring Boot 集成之数据脱敏

有道无术,术尚可求,有术无道,止于术。 本系列Jackson 版本 2.17.0 本系列Spring Boot 版本 3.2.4 源码地址:https://gitee.com/pearl-organization/study-jaskson-demo 文章目录 1. 概述2. 实现思路3. 案例演示3.1 脱敏规则3.2 自…

解决VSCode中“#include错误,请更新includePath“问题

目录 1、问题原因 2、解决办法 1、问题原因 在编写C程序时,想引用头文件但是出现如下提示: (1)首先检查要引用的头文件是否存在,位于哪里。 (2)如果头文件存在,在编译时提醒VSCo…

如何理解自然语言处理中的位置编码(Positional Encoding)

在自然语言处理和特别是在使用Transformer模型中,位置编码(Positional Encoding)是一个关键的概念。它们的作用是为模型提供序列中各个元素的位置信息。由于Transformer架构本身并不像循环神经网络(RNN)那样具有处理序列的固有能力,位置编码因此显得尤为重要。 为什么需…

【学习】服务器解决:重新分配同样端口号后,连不上VScode

原来服务器分配的环境有问题,重新分配了一下。还是同样的端口号,Xshell和xftp能够连接上,但是VScode连接不上。 问题解决: 清除本地 SSH 缓存中与远程主机相关的条目可以通过编辑 known_hosts 文件来实现。这个文件包含了您曾经连接过的远程主…

Linux报错处理:‘abrt-cli status’ timed out

最近登录服务器时出现报错,后来查阅资料发现是因为ssh登录时间很久,登录后出现abrt-cli status timed out 的报错。 1.问题分析 abrt-cli是ABRT(Automated Bug Reporting Tool)的命令行接口,用于在Linux系统中处理和报告程序崩溃。 如果abr…

[Qt的学习日常]--初识Qt

前言 作者:小蜗牛向前冲 名言:我可以接受失败,但我不能接受放弃 如果觉的博主的文章还不错的话,还请点赞,收藏,关注👀支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 目录 一、Qt的基本…

代码随想录算法训练营第四十六天| LeetCode139.单词拆分

一、LeetCode139.单词拆分 题目链接/文章讲解/视频讲解:https://programmercarl.com/0139.%E5%8D%95%E8%AF%8D%E6%8B%86%E5%88%86.html 状态:已解决 1.思路 单词明显就是物品,字符串s明显就是背包,那么问题就变成了物品能不能把背…

数据可视化———Tableau

基本认识: 维度:定性—字符串文本,日期和日期时间等等 度量:定量—连续值,一般属于数值 数据类型: 数值 日期/日期时间 字符串 布尔值 地理值 运算符 算数运算符:加减乘除,%取余,…

Stable Diffusion WebUI 使用 LoRA 调整风格——详细教程

本文收录于《AI绘画从入门到精通》专栏,专栏总目录:点这里,订阅后可阅读专栏内所有文章。 大家好,我是水滴~~ 本教程旨在深入探讨 LoRA 模型的奥秘,涵盖其基本概念、独特作用以及实操指南。我们将从下载和使用LoRA的步…

8.4.3 使用3:配置单臂路由实现VLAN间路由

1、实验目的 通过本实验可以掌握: 路由器以太网接口上的子接口配置和调试方法。单臂路由实现 VLAN间路由的配置和调试方法。 2、实验拓扑 实验拓扑如下图所示。 3、实验步骤 (1)配置交换机S1 S1(config)#vlan 2 S1(config-vlan)#exit S…

微服务项目实战-黑马头条(八):App端-文章ES搜索、MongoDB搜索记录和关键词联想

文章目录 一、今日内容介绍1.1 App端搜索-效果图1.2 今日内容 二、搭建ElasticSearch环境2.1 拉取镜像2.2 创建容器2.3 配置中文分词器 ik2.4 使用postman测试 三、app端文章搜索3.1 需求分析3.2 思路分析3.3 创建索引和映射3.4 数据初始化到索引库3.4.1 导入es-init到heima-le…

【七】jmeter5.5+influxdb2.0+prometheus+grafana

参考文章:https://blog.csdn.net/wenxingchen/article/details/126892890 https://blog.csdn.net/Zuo19960127/article/details/119726652 https://blog.csdn.net/shnu_cdk/article/details/132182858 promethus参考 由于自己下载的是infuldb2.0,所以按照…

grafana报错This panel requires Angular (deprecated)

1.原因 报错解释: Grafana在更新到7.0版本后,弃用了AngularJS(一种用于构建大型Web应用的JavaScript框架)。在早期的Grafana版本中,某些面板可能依赖于AngularJS,但这种依赖已经逐步被新的React或Vue面板所…

智慧安防视频监控EasyCVR视频汇聚平台无法自动播放视频的原因排查与解决

国标GB28181协议EasyCVR安防视频监控平台可以提供实时远程视频监控、视频录像、录像回放与存储、告警、语音对讲、云台控制、平台级联、磁盘阵列存储、视频集中存储、云存储等丰富的视频能力,平台支持7*24小时实时高清视频监控,能同时播放多路监控视频流…

Esp8266 - USB开关分享(开源)

文章目录 简介推广自己gitee项目地址:嘉立创项目地址:联系我们 功能演示视频原理图嘉立创PCB开源地址原理图PCB预览 固件烧录代码编译烧录1. 软件和驱动安装2. 代码编译1. 安装所需要的依赖库文件2. 下载源代码3. 烧录代码 使用说明1. 设备配网2. 打开设备操作页面3…

STM32 I²C通信

一、IC总线通信 1.1 IC总线特点 IC(Inter Integrated Circuit,集成电路总线),通过串行数据线SDA(Serial Data)和串行时钟线SCL(Serial Clock)来完成数据的传输。 特点:…

深度学习-数据预处理

目录 创建一个人工数据集处理缺失的数据插入对inputs中的类别值或离散值,将NaN视为一个类别对inputs和outputs中的数值类型转换为张量格式 创建一个人工数据集 import os import pandas as pd os.makedirs(os.path.join(.., data), exist_okTrue) data_file os.p…

ESP-IDF下载与安装完整流程

本文主要看参考官网说明,如下: Windows 平台工具链的标准设置 - ESP32 - — ESP-IDF 编程指南 latest 文档 (espressif.com) 一、概述 ESP-IDF需要安装一些必备工具,才能围绕ESP32构建固件,包括: PythonGit交叉编译…

Docker搭建Maven仓库Nexus

文章目录 一、简介二、Docker部署三、仓库配置四、用户使用Maven五、管理Docker镜像 一、简介 Nexus Repository Manager(简称Nexus)是一个强大的仓库管理器。 Nexus3支持maven、docker、npm、yum、apt等多种仓库的管理。 建立了 Maven 私服后&#xf…