第6讲 时间和全局状态

时钟同步简介
分布式系统中,时间一个重要的问题
时间是我们想要精确度量的量
很多算法依赖于时钟同步
-维护分布式数据一致性
-检查发送给服务器的请求的真实性
-消除重复更新

两个时钟的读数之间的瞬间不同称为时钟偏移(clock skew)
时钟漂移是指单个时钟读数和名义上的完美的参考时钟之间的偏移
漂移率(drift rate)是指参考时钟度量的每个单位时间内,在时钟和名义上完美的参考时钟之间的偏移量。

同步时钟的Cristian方法
Cristian算法的讨论:
无法满足高精度时间要求
Cristian算法是单服务器实现的,因此会出现单点故障
解决方法是多个服务器都连接UTC时间信号接收器,客户可以将它的请求组播到所有服务器并仅使用获得的第一个应答
错误的时间值进行应答的故障服务器或故意用不正确的时间做应答的假冒的时间服务器都会给系统带来灾难

Berkeley算法步骤
该算法需要选择一台协调者计算机作为主机(master)
主机定期轮询其他要同步时钟的计算机(从属机)
从属机(slave)将它们的时钟值返回给主机
主机通过观察往返时间来估计它们的本地时钟时间,并计算所获得值的平均值
协议的准确性依赖于主从机之间的名义上最大往返时间
主机发送每个从属机的时钟所需的调整量

主要采用容错平均值(fault-tolerant average)
时钟中选择差值小于一个指定量的子集
平均值仅根据这些时钟的值计算

网络时间协议NTP
Cristian方法和Berkeley算法主要应用于企业内部网
网络时间协议(Network Time Protocol,NTP)定义了时间服务的体系结构和在互联网上发布时间信息的协议
NTP主要的设计目标和特色如下:
提供一个服务,使得跨互联网的用户能精确地与UTC同步
提供一个能在漫长的连接丢失中生存的可靠服务
使得客户能经常有效地重新同步以抵消在大多数计算机中存在的漂移率
提供保护,防止对时间服务器的干扰,无论是恶意的还是偶然的
在这里插入图片描述
物理时钟同步成本非常高
延时高
精度有限
不可能实现完全的物理时钟同步
许多场景下并不需要/不能使用物理时钟

逻辑时间和逻辑时钟
Lamport[1078]指出因为我们不能在一个分布式系统上完美地同步物理时钟,因此通常我们不能使用物理时间指出在分布式系统中发生的任何一对事件的顺序.

Lamport提出一种偏序关系称为:先发生的关系(happens-before relation)

逻辑时钟
Lamport[1978]提出了一种简单机制,数字化捕获发生在先排序
Lamport逻辑时钟是一个单调增长的软件计数器,它的值和任何物理时钟无关。
每个进程pi维护它自己的逻辑时钟Li,进程利用逻辑时钟给事件添加Lamport时间戳

Lamport的局限
Lamport Clock确保的是全部因果关系的事件不会发生逻辑错误,但并不保证系统的公平性。
比方两个人同一时候抢票、秒杀等,物理时间上先发出请求不一定会先得到这个资源。但这顶多会造成不公平,不会造成错误。

Vector clock是在Lamport时间戳基础上演进的另一种逻辑时钟方法
Mattern[1989]和Fidge[1991]开发了向量时钟
它通过vector结构不但记录本节点的Lamport时间戳
同时也记录了其他节点的Lamport时间戳。
基于Vector clock我们可以获得任意两个事件的先后顺序、同时发生关系
在这里插入图片描述
该图表示当前时刻各节点的向量时钟为:
节点1:V1(1,4,0)
以第2行为例,该行为V1节点的向量时钟(1,4,0),其中”1”表示V1节点所了解的V0节点上的时钟值;”0”表示V1节点所了解的V2节点上的时钟值;”4”表示V1节点自身所维护的时钟值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值