分布式算法1基本算法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
11
配置
配置(Configuration)是一个向量C=(q0,…,qn1),其中qi是pi的一种状态。
配置中outbuf向量的状态,表示在通信信道 上传送的消息。
配置是系统当前的快照: 进程状态 (局部变 量 + 到来消息队列) +通信信道.
12
事件
系统中发生的事情用事件模拟,考虑两种 事件:
证明不可能性结果和下限,给出问题如何才能 可解的限制以及其求解代价。
算法复杂度分析。
7
2. 形式化模型
消息传递系统模型
消息传递系统模型由一组位于有向网络图节点位置 的计算元素组成。
表示为G(V,E),其中节点集V={p0, p1, …, pn-1 …}代表 进程的集合,边集E代表间的信道的集合。
分布协同计算基础
第二章:
分布式算法(1)
张锡哲 副教授 计算机应用技术研究所 东北大学信息科学与工程学院
主要内容
1.分布式算法概述 2. 形式化模型 3.消息传递系统基本算法
生成树上广播和敛播 生成树的构造
4.因果关系和时间 5.选举算法 6.容错一致性
1. 分布式算法概述
分布式计算的困难
异步
不能精确的知道事件发生的绝对时间,甚至相对时间
有限的局部知识
每个计算实体只知道它自己所获得的信息,只是全局 情况的一个局部视图。
非确定性
由于系统各组件执行速度的差异,执行通常具有不确定 性
故障
各计算实体可能独立发生故障
分布式算法具有更高的不确定性和行为独立性!!
行为很难理解:多处理器并行执行,算法 存在多种不同表现。
准确预测算法的行为是不可能的。 否定结论、下界和不可能性结论增加 复杂度分析:通信开销(消息数),故障
单元和非故障单元的数量
6
研究分布式算法的方法
从各种分布式情况中提取基本问题,给出 形式化的数学模型
设计解决问题的分布式算法。 算法正确性证明
确定,表示为exec(C0, σ)
异步执行
执行必须满足以下两个条件:
如果k= del(i,j,m),那么m必定是ck-1中outbufi[l] 的一 个元素,其中l是信道{pi, pj}中pi的标号。从ck-1到ck 的唯一改变是:在ck 中,m已从outbufi[l]中移走并加 入到inbufj[h] 中,其中h是信道{pi,pj }中pj的标号。
提交事件: 将指定消息从发送者的outbuf 传送到接收 者的inbuf 中
计算事件: 将转移函数应用到指定进程的可存取状 态上
安全性
分布式算法需要满足两类性质:
安全性条件(safety condition)
在算法每次执行的每次配置中,断言P为真
活跃性条件(liveness condition)
如果k=comp(i),那么从ck-1到ck的的唯一改变是:pi 依照其转移函数来改变状态,转移函数对ck-1 中pi 的 可存取状态进行操作,并将所确定的消息集合加入 到ck 的outbufi变量中,这些消息在这一事件上称为被 发送的。
执行段是如下格式的序列:
C0 , 1, C1, 2 , C2 , 3 ,
其中每个Ck是一个配置,每个 k是一个事件 执行是一个执行段 C0 ,1,C1,2 ,C2 ,3,,其中C0是初始配置。 调度σ是执行中的事件序列,即 1, 2, 3.,L 如果局部程序是确定的,执行由初始配置C0和调度σ唯一
以新的可存取状态结束,将inbufs清空,将新 消息放入outbufs中
计算事件
a b
c
de
旧局部状态
新局部状态
执行
执行是随事件而改变的配置序列,其形式是:
配置, 事件,配置, 事件,配置, …
初始配置中: 每个进程都处于初始状态,所有的 inbufs都为空
对于每个连续配置(config, event, config), 新旧配 置不变,除非发生以下事件:
在算法每次执行的某些配置中,断言P为真
满足全部所要求的安全性条件的序列,称为一个 执行。
如果某次执性满足全部所要求的活跃性条件,则 称该执行是合法的(admissible)。
异步执行
异步模型中,如果某次执行满足以下条件,称该执行是 合法的:
每条发送的消息都被提交 每个进程都有无限的计算事件数
每个进程pi用整数1~r标记与之相连的信道,其中r是 pi的度。
算法由各进程上的局部程序所组成。
消息传递模型
1 p3
1 p0
2
3
2 p2
1
2
p1 1
进程和信道建模
inbuf[2]
outbuf[2]
p1的局部变量
p2的局部变量
outbuf[1]
inbuf[1]
粉色区域(局部变量+ inbuf) 是进程的可访问状态
4
不确定性和行为独立性
处理器数目未知 网络拓扑结构未知 不同位置上的独立输入 几个程序立即运行,在不同的时间开始,以不同的
速度运行 处理器的不确定性 不确定的消息传递次数 不确定的消息顺序 处理器和通信故障wenku.baidu.com
幸运的是,并不是每个算法都要面对所有这些不确定性!!
5
分布式计算的特点
进程标识i 状态集合Qi 消息转移函数 信道变量outbufi[l]和inbufi[l] ,l=1,2,…,r
从进程p1 到进程p2 的每个信道包括以下两部分:
p1的outbuf变量, p2的inbuf 变量
Outbuf 对应物理信道, inbuf 对应接收消息队列
14
计算事件(Computational event),表示为comp(i)
表示进程pi的处理步骤,将pi的转移函数应用到它当前 的可存取状态
提交事件(delivery event),表示为del(i, j, m)
代表将消息m从进程pi提交到进程pj
进程和信道建模
进程pi用状态机描述,包括:
提交事件
将消息m从进程pi提交到pj 将消息从发送者的outbufs移到接受者的
inbufs中; 消息将在下一次处理时可用
p1
m3 m2 m1
p2
p1
m3 m2
m1 p2
计算事件
以进程旧的可存取状态开始 (局部变量+ 到来 消息)
将转移函数应用到进程的当前可存取状态, 处理所有的到来消息