Lease机制是最重要的分布式协议,其最重要的应用:判定节点状态
(1)基于lease的分布式cache系统
l 设计原因:分布式系统中各种操作都依赖于元数据,若仅由中心服务器节点存储维护,则该节点的性能会成为系统的瓶颈。
l 设计思路:元数据cache,在各个节点上cache元数据信息,减少对中心服务器节点的访问,提高性能。
l 设计要求:各个节点上cache的数据要始终与中心服务器上的数据阈值,不能是旧的脏数据;cache系统要能最大可能的处理节点宕机、网络中断等异常,最大程度的提高系统的可用性。
l 基本原理:中心服务器在向各节点发送数据的同时向节点颁发一个lease,每个lease有一个有效期。
n 基于lease的cache,客户端节点读取元数据的流程
1. 判断元数据是否已经处于本地cache且lease处于有效期内
1.1 是:直接返回cache中的元数据
1.2 否:向中心服务器节点请求读取元数据信息
1.2.1 服务器收到读取请求后,返回元数据及一个对应的lease
1.2.2 客户端是否成功收到服务器返回的数据
1.2.2.1失败或超时:退出流程,读取失败,可重试
1.2.2.2成功:将元数据与对应lease记录到内存中,返回元数据
n 基于lease的cache,客户端节点修改数据流程
1. 节点向服务器发起修改元数据请求
2. 服务器收到修改请求后,阻塞所有新的读请求,即接收读请求,但不返回数据
3. 服务器等待所有与该元数据相关的lease超时
4. 服务器修改元数据并向客户端节点返回修改成功
l 容错关键:客户端cache元数据的唯一标准时lease超时,服务器只要等待lease超时就可以修改数据,而不破坏cache的一致性
l 优化改进:
a)对修改数据中的步骤2,服务器进入修改元数据流程后,一旦收到读请求,则只返回数据但不颁发lease,即用户只能读不能缓存;或lease有效期选已发出lease的最大有效期ÿ