分布式系统(一)

系统模型

什么是分布式系统

在这里插入图片描述

分布式系统特性

进程需要与另一个进程沟通,并且通信时间是变化的

进程之间的关系

1.客户-服务器
一台服务器也可以是其他服务器的客户
2.对等体系结构(peer to peer)
所有参与的进程运行相同的程序并且相互之间提供相同的接口集合

通信范型(分布式中实体如何通信)

1.进程间通信
使用套接字编程

2.远程调用
分布式系统中最常见

3.请求-应答协议
确认了发送方和接收方

通信通道

在这里插入图片描述

延迟(latency):m从p段开始发送到q段接受m的时间

带宽(bandwidth):单位时间内通道内能传输的最多的信息量

传送信息的总时间由延迟和带宽决定。
这两个都是随时间变化会变化的。

不同的进程有不同的时钟

在每个电脑内部有内部时钟。
时钟都与标准时间有偏差。

两种方式建模

1.同步分布式系统
(1)知道进程每一步中的时间段(upper bound and lower bound)
(2)知道信息发送延迟的界限
(3)知道时钟偏移的界限(bound)
同步系统不会出现drop packet的问题
2.异步分布式系统

同步与异步(Synchronous and Asynchronous)

1.实际世界中都是异步系统
2.可以建立一个同步系统

进程与通信通道都可能会发生故障

遗漏故障(Omission)

1.定义
进程或通信通道不能完成它应该做的动作
(1)进程遗漏故障主要为崩溃(crash),就说明进程停止了。
(2)如果其他进程能够检测到进程崩溃,称为 故障-停止 Fail-stop
(3)通信遗漏(Communication Omission)

2.两种检测崩溃的方式
(1)
在这里插入图片描述
每Ts,p ping q一次,如果在一个Timeout的时间内还没收到ack,就说明q崩溃了。
在这里插入图片描述
在这里插入图片描述
(2)
在这里插入图片描述
q 每T s发送一次心跳给p。如果p在T+timeout时间之内,没有收到第二次心跳,那么q崩溃。

在这里插入图片描述
为什么是最大延迟减去最小的,因为考虑到两次心跳的时间差 time gap。上一次最短时间收到了,这一次为最大时间。

在这里插入图片描述

故障检测的正确性

1.完整性(completeness)
每个故障最后都能检测出来
2.准确性(accuracy)
每个检测到的故障都对应一次崩溃

同步系统:
ping-ack 和heartbeat 这两种故障检测方式都是完整且准确的

异步系统:
ping-ack 和heartbeat 这两种故障检测方式是完整的。
因为既然停止了,timeout设置多大,最后都能检测到。
但是不能保证是准确的,因为timeout这个值说不准,也许这一次延迟特别长,导致以为发生了崩溃。
如何得到一个准确但不完整的系统呢?
Never report a failure(不报错,就永远不会检测错)

最坏情况下检测到故障的时间

发生崩溃后,最长时间其他进程可以检测到。
1.ping-ack
最坏情况是刚刚回复上一个ping的ack,就发生故障了。
在这里插入图片描述
在这里插入图片描述
同步系统的最坏情况 上一个ping到达时间为 min 网络延迟(减去的最少)

2.heartbeat
最坏情况是q刚发送一个heartbeat就崩溃了。
在这里插入图片描述
在这里插入图片描述
同步系统的最坏情况 上一个heartbeat到达p时间为 max网络延迟

多个进程的故障检测

Heartbeats检验方式
都发给服务器pi
在这里插入图片描述
环状,但是如果多个失败,就检验不到是哪个了。
在这里插入图片描述

每个节点都可以发给其他节点。但是带宽会大大地增加
在这里插入图片描述

总结:
在这里插入图片描述
带宽使用情况
在这里插入图片描述

如果将周期T减小会怎么样?

错误检测时间能够缩短
但是用的带宽会增加

如果将Timeout时间增加会怎么样?

Accuracy也会增加
但是错误检测时间增加

通信遗漏(Communication Omission)

(1)Channel Omission
被通道遗漏了
(2)Send Omission
进程完成了send这个动作,但是msg没有到达outgoing msg buffer
(3)Receive Omission
msg到达incoming buffer 但是进程没有收到

通过网络协议能够减轻信息的遗漏

总结:遗漏错误指进程或通道失败,而导致不能完成特定的任务

拜占庭将军问题Arbitrary (Byzantine) Failures

进程执行错误,发送错误的信息

Timing failure

没达到计时要求
只针对同步系统

故障总结

三种类型故障:Omission,Arbitrary,Timing

故障检测(检测崩溃的进程)

一般用ping-ack或者 heartbeat

在timeout时间内没有收到回复,就是进程崩溃

timeout时间的估计

同步系统可以准确算timeout
异步系统只能靠估计

故障检测的准确率 完整性 时间 带宽

多个进程的故障检测

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值