Note:以下10个点为老师画的重点
1.分布式系统目标
第一章 分布式系统概论,第二节
2.RPC过程
第四章 分布式通信管理, 第二节
- 客户过程以普通方式调用相应的客户存根
- 客户存根建立消息并激活内核陷阱
- 内核将消息发送到远程内核
- 远程内核将消息送到服务器存根
- 服务器存根取出消息中的参数后调用服务器的过程
- 服务器完成工作后将结果返回值服务器存根
- 服务器存根将它打包并激活内核陷阱
- 远程内核将消息发送至客户端内核
- 客户端内核将消息交给客户存根
- 客户存根从消息中取出结果返回给客户
效果:讲客户过程对客户存根发出的本地调用转换成对服务器过程的本地调用,而客户和服务器都不会意识到有中间步骤的存在。
3.时间戳向量
第四章 分布式通信管理 第四节
时间戳向量:设组内有n个进程,每个进程设置一个n元向量 V [ n ] = { V [ 1 ] , V [ 2 ] , . . . , V [ n ] } V[n] = \{V[1], V[2], ..., V[n]\} V[n]={V[1],V[2],...,V[n]}
发送者:修改向量: V [ j ] = V [ j ] + 1 ; V[j] = V[j] + 1; V[j]=V[j]+1; (第j个进程)
接收者:
- 接受条件:(1) L [ j ] = V [ j ] − 1 L[j]=V[j]-1 L[j]=V[j]−1;(2) L [ i ] ≥ V [ i ] ( i ≠ j ) L[i] ≥ V[i] (i \neq j) L[i]≥V[i](i=j),其中 L [ j ] L[j] L[j]表示本地向量的第j个维度
- 修改向量:$L[j]=V[j] $如果可以接收
其中, V i V_i Vi是发送方向量种的第i位, L i L_i Li是接收方向量中的第i位,假设消息由进程j发送。
举例1:对于下列表格表示的进程,由进程1向其他的进程发送消息,此时刻,哪些进程需要等待,哪些进行可以接收消息。
对于此题,需要分别分析两个条件是否满足。
对于条件(1):消息由进程1发送,则首先需要满足 V 1 = L 1 + 1 V_1 = L_1 + 1 V1=L1+1
也就是对于每个进程的第一维数据(4,3,3,3,2,3)而言,4=3+1,所以可以看出进程5不能接收消息,需要等待,其余进程均满足条件(1)。
对于条件(2):消息由进程1发送,则需要满足 i ≠ j i \neq j i=j(即所有进程排除第一维数据),有 V i ≤ L i V_i ≤ L_i Vi≤Li
所以对于1-6这几个进程而言,排除第一维数据后,其余的数据都需要比进程1的各维数据相等或更大,所以可以看出对于进程3而言5<6,所以进程3不能接收消息,需要等待。
综上两个条件,进程3,5需要等待,其余进程均可同时满足条件(1)(2),所以可以接收进程1发送的消息。
示例2:下面表格中分别是进程1到进程6中消息的时间戳向量,在满足因果关系的前提下,试分析说明进程2中当前的消息m在哪些进程中能够递交,在哪些进程中暂时不能递交。
1 | 2 | 3 | 4 | 5 | 6 | |||||
---|---|---|---|---|---|---|---|---|---|---|
7 | 7 | 7 | 5 | 7 | 7 | |||||
5 | 7 | 6 | 6 | 6 | 6 | |||||
5 | 5 | 5 | 5 | 5 | 5 | |||||
4 | 4 | 4 | 4 | 3 | 4 | |||||
3 | 3 | 3 | 3 | 3 | 3 | |||||
1 | 1 | 1 | 1 | 1 | 1 |
就是进程1,4,5需要等待;3,6可以接收消息。
4.转发指针
第五章 分布式命名管理 第二节
当实体从A移动到B之后,在A上设置一个指向B的引用
优点:客户可利用传统的命名服务
缺点:间址链可能会很长、链的中间节点需要维护转发信息、链容易断
目标:限制链的长度,保证链的鲁棒性
5.DHT
第五章 分布式命名管理 第二节
1 | 4 | 9 | 11 | 14 | 18 | 20 | 21 | 28 | ||
1 | 1 | 4 | 9 | 11 | 14 | 18 | 20 | 21 | 28 | 1 |
2 | 2 | 4 | 9 | 11 | 14 | 18 | 20 | 28 | 28 | 1 |
3 | 4 | 9 | 9 | 14 | 18 | 18 | 28 | 28 | 28 | 1 |
4 | 8 | 9 | 14 | 18 | 20 | 28 | 28 | 28 | 1 | 4 |
5 | 16 | 18 | 20 | 28 | 28 | 1 | 4 | 4 | 9 | 14 |
6.lamport算法
第六章 分布式同步控制 第二节
校正算法
- a → b a\rightarrow b a→b
- if C ( b ) < C ( a ) C(b)<C(a) C(b)<C(a), then C ( b ) = C ( a ) + 1 C(b) = C(a) +1 C(b)=C(a)+1
三个进程,各有自己的局部时钟,他们速率不同;通过Lamport算法,校正时钟
校正算法:
- P i P_i Pi 在执行一个事件之前, P i P_i Pi执行 C i ← C i + 1 C_i \leftarrow C_i + 1 Ci←Ci+1
- $P_i 在发送消息 m 给 在发送消息m给 在发送消息m给P_j$时,时间戳 t s ( m ) ← C i ts(m) \leftarrow C_i ts(m)←Ci
- P j P_j Pj接收到消息m后, C j ← m a x { C j , t s ( m ) } C_j \leftarrow max\{C_j, ts(m)\} Cj←max{Cj,ts(m)}
7.选举算法
第六章 分布式同步控制 第四节
8.以数据为中心的一致性模型
第七章 分布式一致性与复制管理 第二节
8.1 连续一致性
连续一致性(continuous consistency)
- (数值误差,次序误差,陈旧度)
- 数值误差:未传播的写操作的权重值
- 次序误差:临时写操作的个数
- 陈旧度:写操作传播的延迟(只要一个副本不太旧,就可以容忍它提供旧的数据。例如,天气报告)
一致性单元(conit):受控的数据集
顺序偏差即在本地还没有提交的更新操作的个数
数值偏差(x,y): x表示其他副本已经做了, 但是本地副本还没看见的操作数量; Y表示这些操作带来的数值变化
举例:conit(x, y)
<5, B>:5为时间戳,B为从B传过来
示例1:如下图所示,为持续一致性的示意图。在副本A和副本B中有含数据项x和y,这两个变量都假设初始化为0。操作表格中阴影部分表示为持久化(永久性)的操作,不能回滚;其余操作表示暂时的更新操作。请采用向量时钟、顺序误差和数值误差三个指标描述两个副本之间的差异。(其中数值误差用各数据项的差分和表示)
(1)向量时钟:
- 对于副本A而言,由于副本A和副本B中有含数据项x和y,这两个变量都假设初始化为0,副本A最后的操作是<14, A>,所以A的向量时钟:A=(15, 5)
- 对于副本B而言,由于副本A和副本B中有含数据项x和y,这两个变量都假设初始化为0,副本A最后的操作是<10, B>,所以B的向量时钟:B=(0, 11)
(2)顺序偏差
- 对于副本A而言,阴影部分表示为持久化(永久性)的操作,不能回滚,而A中不是阴影部分的有三个,即<8, A>, <12, A>, <14, A>,所以A中有三个暂存的操作,即顺序偏差为3
- 对于副本B而言,阴影部分表示为持久化(永久性)的操作,不能回滚,而B中不是阴影部分的有二个,即<5, B>, <10, B>,所以B中有二个暂存的操作,即顺序偏差为2
(3)数值偏差
- 对于副本A而言,A已经收到了B的<5, B>,但是还未看到<10, B>,所以数值偏差=1(即还有一个没有收到);而此时A中已提交的值是(x, y)=(2, 0),假设收到B的<10,B>之后,y=5;所以副本A的数值偏差=(1,5)
- 对于副本B而言,B还未看到A中的<8, A>,<12, A>, <14, A>,所以数值偏差=3(即还有三个没有收到);而此时B中已提交的值为(x,y)=(0,0),假设收到A的<8, A>,<12, A>, <14, A>之后,x=(1+2)*2,所以偏差的权重= 6;所以副本B的数值偏差=(3,6)
示例2:如下图所示,为持续一致性的示意图。在副本A和副本B中有含数据项x和y,这两个变量都假设初始化为0。操作表格中阴影部分表示为持久化(永久性)的操作,不能回滚;其余操作表示暂时的更新操作。请采用向量时钟、顺序误差和数值误差三个指标描述两个副本之间的差异。(其中数值误差用各数据项的差分和表示)
A:向量时钟:(10, 0);顺序偏差:2 ;数值偏差:(2, 16)
B:向量时钟:(3, 17);顺序偏差:2 ;数值偏差:(1, 8)
8.2一致性模型
- 严格一致性:对数据项x的读操作返回的值为最近写入x的值
- 顺序一致性:所有进程执行的结果,等同于它们的操作按某种顺序在数据仓上执行的结果。每个进程的操作都按照程序规定的顺序。
9.容错性的基本概念
分布式系统设计中的一个重要目标,是以这样的方式构建系统:它可以从部分失效中自动恢复,而且不会严重的影响整体性能。特别是,当故障发生时,分布式系统应该在进行恢复的同时继续以可接受的方式进行操作,也就是说,它应该能容忍错误,在发生错误时某种程度上可以继续操作。
第8章 分布式系统之容错 - 简书 (jianshu.com)
10.lamport递归算法
第八章 分布式容错管理 第二节