知识卡片
租约读守住单Key线性
内容
CockroachDB range 由 leaseholder 服务读写,结合最大时钟偏差提前停止旧租约服务,保证新租约开始后旧副本不会继续读旧值。发散:本地时钟也能服务一致性,但必须为误差留出不可服务窗口。
参考来源
- 位置:《分布式系统与一致性》第9章《分布式数据库CockroachDB》leaseholder一节(源文件:_epub-src/OEBPS/Text/chapter13.xhtml)
- 结论依据:原文明确"为了适应这种250ms的差异,leaseholder在租约开始到租约结束的时间减去最大误差时间内可以服务于读/写请求,其他副本要在租约结束之后才能成为新的leaseholder",并总结"减去最大时钟误差,保证旧的leaseholder在新的leaseholder开始服务于写请求后就不会再服务于任何读请求了……对单个key的读/写达到线性一致性"。
- 原始内容:为了适应这种250ms的差异,leaseholder在租约开始到租约结束的时间减去最大误差时间内可以服务于读/写请求,其他副本要在租约结束之后才能成为新的leaseholder……减去最大时钟误差,保证旧的leaseholder在新的leaseholder开始服务于写请求后就不会再服务于任何读请求了,所以旧的leaseholder就不会读取到旧数据,对单个key的读/写达到线性一致性。