概念
Lease本质是合同,参与方基于一个有期限的时间范围内对某项内容做出的一种承诺,在有效期内参与方均需要遵守承诺。
原文定义:A Lease is a contract that gives its holder specific rights over property for a limited period of time.
角色
授权者、被授权者
由来
Lease最经典的解释来源于Lease原始论文<Leases: An Efficient Fault-Tolerant Mechanism for Distributed File Cache Consistency>
适用场景
1. Lease 参与方是多方的,心跳是单方面的,状态检查,比HearHeat更理想
2. Lease 能容忍网络的不稳定性,可解决分布式环境的split brain
3. 从CAP理论看,Lease适用于最终一致性,可用于分布式缓存数据一致性方案,对读、写有一定限制。
a. 写可设计为阻塞或者等所有old lease失效后再生效,此过程合同所约束的数据存在两个版本
b. 写设计为立即生效,mster主动通知slave端合同失效,slave 重新获取新Lease
租约选择
租约期限需要在最小化续约开销与最小化伪共享之间权衡。这种权衡是为了最小化服务端负载和客房端响应时延。一般采用按需续约,这有别于BroadCast。根据论文分析模型,短租约效果更好,当租约期限达到某个值后,对负载、响应时间时间、系统开销并不会明显的减少。整个分析模型推导过程见论文
(图片引自原论文)
容错性
Lease 天生可容忍网络不稳定、非拜占庭问题、进程crash、但依赖于时钟