其他分享
首页 > 其他分享> > 第7讲 协调和共识

第7讲 协调和共识

作者:互联网

文章目录

简介

分布式系统中的两类需要协调的问题
-资源的互斥 哪个进程可以进入临界区
-多方共识问题 一个或多个进程提议了一个值后,应达成一致意见

两类协调方法
中央协调者来协调-选举
对等协商来协调

选举

许多分布式算法需要一个进程充当协调者、发起者或者其他特殊的角色。
通常,由哪个进程充当这个特殊的角色并不重要,重要的是需要有一个来充当。

基本概念
-选举算法(election algorithm)
  选择一个唯一的进程来扮演特定角色的算法
-召集选举(call the election)
  一个进程启动了选举算法的一次运行
-参加者(participant)
  进程参加了选举算法的某次运行
-非参加者(non-participant)
  进程当前没有参加任何选举算法
-进程标识符
  唯一且可按全序排列的任何有用的数值

性能评价
-带宽消耗
-回转时间(从启动算法到终止算法之间的串行消息传输的次数)

霸道算法
假设:
同步系统,使用超时检测进程故障
通道可靠,但允许进程崩溃
每个进程知道哪些进程具有更大的标识符
每个进程可以和所有具有更大标识符的进程通信
在这里插入图片描述霸道算法
1.进程P在发现协调者失效后启动一次选举,将选举消息发送给具有更大标识符的进程,并等待应答。
若进程P 在时间T内没有收到回答消息,则认为自己为协调者,并给所有具有较小标识符的进程发送协调者消息。
若进程P 收到回答消息,则等待协调者消息;若消息在一段时间内没有到达,则启动一次新的选举算法。
2.进程收到选举消息,回送一个应答消息,并接管选举工作,开始另一次选举
3.进程如果知道自己具有最大标识符,则会决定自己是协调者,并向其他进程宣布。
4.进程收到协调者的信息后,记录下协调者的编号。

在这里插入图片描述
在这里插入图片描述霸道算法
3种类型的消息
-选举消息,用于宣布选举
-应答消息,用于回复选举消息
-协调消息,用于宣布当选进程的身份
一个进程通过超时发现协调者已经出现故障,并开始一个选举,几个进程可能同时观察到此现象
采用同步系统,因此可以构造一个可靠的故障检测器

霸道算法示例性能
-最好情况 = N-2
标识符次大的进程发起选举
发送N-2个协调者消息
回转时间为1个消息
-最坏情况 = O(N2)
标识符最小的进程发起选举

互斥

待协调问题一:共享资源的互斥使用

分布式进程常常需要协调它们的动作
如果一组进程共享一个或一组资源,那么访问这些资源时,常需要互斥来防止干扰并保证一致性
在操作系统领域中常见的临界区问题
在分布式系统中需要一个仅基于消息传递的分布式互斥问题解决方案
例子:
多个用户更新一个文本文件的情况
保证更新一致性的简单方法:要求编辑器在更新之前锁住文件,一次只允许一个文件用户访问文件

互斥算法
考虑无共享变量的N个进程pi , (i=1,2,….,N) 的系统
这些进程只在临界区访问公共资源
假设:
只有一个临界区
系统是异步的
进程不出故障
消息传递是可靠的
-任何消息被完整的恰好发送一次

令牌环算法:
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

共识

待协调问题二:多方共识

共识问题包含2个方面的内容:
1 共识标准的问题-一个或多个进程提议了一个值后,应达成一致意见
如何定义一致性?-强一致性、因果一致性、最终一致性等
2 故障模型-进程崩溃故障、拜占庭进程故障

随机故障-拜占庭将军问题
拜占庭将军问题是一个典型的共识问题:
首先由Leslie Lamport与另外两人在1982年提出,被称为The Byzantine Generals Problem或者Byzantine Failure。
核心描述是军中可能有叛徒,却要保证进攻一致,由此引申到计算领域,发展成了一种容错理论。随着比特币的出现和兴起,这个著名问题又重入大众视野。

问题描述
-3个或更多的将军协商是进攻还是撤退
-一个将军发布命令,其他将军决定是进攻还是撤退
-一个或多个将军可能会叛变
-所有未叛变的将军执行相同的命令

标签:选举,协调,协调者,互斥,算法,共识,进程,标识符
来源: https://blog.csdn.net/LoraRae/article/details/111955633