美文网首页
租约机制

租约机制

作者: 小怪兽狂殴奥特曼 | 来源:发表于2019-12-08 18:52 被阅读0次

产生历史

1.master/slave架构

在介绍租约机制之前,我们必须要先介绍一个分布式系统中常用的系统架构:master/slave架构。master/slave架构的常见流程如下:

  • client向master发起请求读取数据
  • master保存维护了所有实际提供服务的slave的元数据,并负责负载均衡工作。master收到client的请求后,返回一个可用的slave给client。
  • client收到master返回的可用slave信息后,再次向这个slave发起请求读取数据。
  • slave收到client请求,响应并返回结果。

这个架构的特点是所有的请求都要经过master节点。当client请求量很大时,master的压力会非常大,master节点很容易成为系统瓶颈。而且单节点的master可用性也不够高。

为了减轻master节点的压力,可以将master中的部分元数据缓存在client中。这样就产生了client缓存跟master节点的数据一致性问题。要保证这个缓存系统能正常工作,关键是要保证client缓存的数据跟master节点的数据保持一致。租约机制就是为了解决分布式缓存数据一致性问题提出来的。
此外租约机制还可以用来确定阶段集群状态、实现分布式锁等问题。

租约机制

1.原理

在这个client/master分布式一致性缓存系统中,当client向master请求元数据时,master返回数据并给返回的数据设置一个租约(lease)。这个租约有一定的有效期。在有效期内,master承诺不会修改跟这个租约关联的数据。不论master发出去的元数据client是否有收到,client是否宕机,master将不会对有租约的数据进行修改,这样变保证了client跟master的数据保持一致。

如果master在有效期内master收到请求修改带有租约的数据,master修改数据时,先阻塞所有对该数据的读请求,并等待该数据上的租约失效后再进行修改,然后再返回结果。
对于client,在读取元数据时,先检查本地的是否存在有效期内的cache,如果没有的话向master请求带有租约的元数据,并将其缓存起来。当租约到期后则将本地的cache删除。

该机制的优化点:

  • master收到修改数据的请求后,在等待数据的租约过期的这段时间过程中,对收到的client读请求不阻塞,只返回数据,不返回租约。client收到不带租约的数据不进行缓存。
  • master收到修改数据的请求后,不等待租约过期,而是主动通知所有持有该租约的client放弃该租约。如果所有的客户端都通知成功,则master不用等待租约过期则可以直接对数据进行修改,否则等待租约过期再进行修改。

租约的有效期是一个基于master的时钟的时间点,因此要求master和client的时钟必须同步。如果租约的颁发者的时钟比接收者的时钟满,造成颁发者这边租约没过期而接收者接收到租约时租约已经过期,解决方法是重复申请一个更短的租约。
如果租约的颁发者的时钟比接收者快,造成颁发者这边租约已经到期而接收者认为租约仍然认为有效,解决方法只能是颁发者在颁发租约时适当减少租约有效时长。

相关文章

  • 租约机制

    产生历史 1.master/slave架构 在介绍租约机制之前,我们必须要先介绍一个分布式系统中常用的系统架构:m...

  • 分布式租约机制

    分布式租约机制 1.什么是租约 租约(lease)在分布式中一般描述如下: Lease 是由授权者授予的在一段时间...

  • HDFS的租约机制

  • HDFS Lease管理

    HDFS 不支持客户端的并行写操作,那么这就需要一种机制来保证对HDFS文件操作的互斥,HDFS 提供了租约机制来...

  • eureka 常用配置

    自我保护 client向server注册后会使用心跳机制告诉server自己还活着,server会统计租约续期的比...

  • hadoop 的lease(一)

    “租约” ,何为租约,一个租约管理着一个client的所有锁,对于每个client 都有一个相应的租约,但一个cl...

  • HBase客户端超时机制及租约机制

    经常有业务童鞋问道,在scan过程中RegionServer端偶尔抛出leaseException,是怎么回事?看...

  • Go语言基于Etcd实现的定时任务

    介绍 利用Etcd的Lease租约特性来实现定时功能,同时通过Watch机制来实现多节点情况下只有一个节点执行该任...

  • golang 操作etcd租约以及监听kv变化

    定义错误常量: 创建client: 创建租约: 设置续租: 监听租约: 监听某个key的变化 put操作: 取消续...

  • Namenode名字节点

    对于Namenode的分析,分以下几个部分: 文件系统目录树管理 数据块和数据节点管理 租约管理租约是Nameno...

网友评论

      本文标题:租约机制

      本文链接:https://www.haomeiwen.com/subject/lbomgctx.html