为什么需要分布式系统:功能分离,固有的分布性,负载均衡,可靠性,经济性。
定义:分布式系统是这样一种系统,其中位于联网计算机上的组件仅通过传递消息来通信和协调它们的操作。
特点:
分布式系统举例:WEB 搜索、大型多人在线游戏、金融交易、区块链系统、语音系统、数据库系统
分布式系统趋势:
挑战:透明性、异构性、并发、开放性、安全性、可伸缩性、故障处理
系统的体系结构:用独立指定的组件以及这些组件之间的关系来表示的结构。
整体目标:确保结构能满足现在和将来可能的需求。
体系结构元素:
体系结构模式:构建在相对原始的体系结构元素之上,提供组合的、重复出现的结构。
基础模型:对体系结构模型中公共属性的一种更为形式化的描述。
事件:一个通信动作或进程状态转换动作。
进程历史:在进程中发生的一系列事件,按发生在先排序,即
h
i
s
t
o
r
y
(
p
i
)
=
<
e
i
0
,
e
i
1
,
e
i
2
,
.
.
.
>
history(p_i)=
时钟漂移:震荡频率变化(电源稳定性、环境温度)
同步物理时钟:
逻辑时间和逻辑时钟:
分布式互斥:分布式进程常常需要协调它们的动作,如访问共享资源时需要互斥来防止干扰并保证一致性,这对应操作系统领域常见的“临界区”问题。然而分布式系统中原有互斥方法基本均失效,需要一个仅基于消息传递的分布式互斥解决方案。
目的:仅基于消息投递,实现对资源的互斥访问。
假设:异步系统;无故障进程;可靠的消息投递。
基本要求:
评价指标:
中央服务器算法:满足安全性和活性要求,但不满足顺序要求。
基于环的算法:所有程序构成一个环结构,令牌按照顺时针(或逆时针)方向在程序之间传递,收到令牌的程序有权访问临界资源,访问完成后将令牌传送到下一个程序;若该程序不需要访问临界资源,则直接把令牌传送给下一个程序。在分布式领域,这个算法叫作令牌环算法,也可以叫作基于环的算法。
基于组播和逻辑时钟的算法:进程进入临界区需要所有其它进程的同意。要进入临界区的进程组播一个请求消息,并且只有在其他进程都回答了这个消息时才能进入。采用Lamport时间戳避免死锁,请求进入的消息形如
<
T
,
P
i
>
Maekawa投票算法:进程进入临界区不需要所有进程同意(部分即可)
分布式选举:选择一个唯一的进程来扮演特定角色的算法。
含义:集群一般是由两个或者两个以上的服务器组建而成,每个服务器都是一个节点。对于一个集群来说,多个节点到底是怎么协调,怎么管理的呢,解决方法是选出一个“领导”来复杂调度和管理其他节点。这个所谓的“领导”,在分布式中叫做“主节点”,而选“领导”的过程叫做“分布式选举”。
基本要求:
基于环的选举算法:
霸道算法:
组播通讯:发送一个消息给进程组中的每个进程。
基本组播:B-multicast(g, m):对每个进程p∈g,send(p, m);进程p receive(m)时:p执行B-deliver(m)。
可靠组播:
实现可靠组播的方法:协定表明了 B-Multicast 不能再基于一对一的send来实现,因为组播进程在send中途出现故障时,会导致剩余进程无法Deliver该消息。可行方案如下:
共识、交互一致性及拜占庭将军问题含义:这三类问题统称为协定,即在一个或多个进程提议了一个值应当是什么后,使系统内所有进程对这个值达成一致的意见。