lease机制

看公司学习视频做的笔记


基本概念
最初应用于分布式文件cache。一个server,许多client。许多client会从server做cache,cache需要与server保持一致。
最初来自论文Leases: An Efficient Fault-Tolerant Mechanism for Distributed File Cache Consistency

lease含义为:在lease的有效期内,中心服务器不会修改该对应数据的值。
server向client发送data+lease。lease中有有效期。
client拿到lease后,在规定的有效期之前,不需要向server获取。修改可以放在本地cache中。


读取流程描述
if incache(data) & leaseOK(data):
     return data in localcache
else:
     if failed(data, lease = getfromserver()) :
          return False
     else:
          store(data, lease)
          return data


更新流程描述
client向server发起update request。
server收到请求后,接受但阻塞所有新的read request。
等待其他client的所有相关lease超时。
服务器update data,并向client返回修改成功。


优化
之前的方法update操作时间太长,甚至可能产生writer饿死reader的情况。
更新过程中,运行read,但禁止cache(不发lease)。
更新前主动通知cache失效,但失效不一定能成功。可能会加快client的获取server状态的速度。


分析
Lease是颁发者授予的在某一有效期内的承诺。给你Lease才能做。
Lease失效时,一定能保证client不在工作。

对付网络异常:
没法过去,可以等超时。
发过去了想收回,也等超时。
对付client异常:
client如果挂了,不管拿没拿到lease,都不影响server。拿到就在有效时用。

Lease不依赖于存储,client可以放在内存里。server挂了也可以取lease最长有效期,所有lease都过期前不做事。
Lease与时钟:
     颁发者慢,毫无影响。client的lease可能短一点,再发一个请求即可。
     颁发者快,有影响!client以为lease没超时,还在做事,可实际已经超时。实际中,可能server容忍的lease时间比发出的更长几秒。

基于Lease确定结点状态
单纯的心跳无法判断,网络可能不同。
可以通过lease知道对方是否在某一个状态(一般是不工作状态),可以认为lease期限内的结点在工作。
中心结点可能是由选举算法选举。

其他:
分布式系统很难保证任何主动的通知会成功传达给到另一台机器。
lease可以作用于节点,而不是作用于data。有lease可以提供服务,没lease不能提供服务。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值