redlock 学习笔记
最近开始学习redlock算法,打开redis官网翻到 redlock文章地址,然后找一个翻译好的版本和自己做的翻译对照,这个对照的翻译版本是 redis.cn团队进行的翻译。
在看到 MIN_VALIDITY这一段时,我先自己按原文翻译了一遍。
......But if the first key was set at worst at time T1 (the time we sample before contacting the first server) and the last key was set at worst at time T2 (the time we obtained the reply from the last server), we are sure that the first key to expire in the set will exist for at least
MIN_VALIDITY=TTL-(T2-T1)-CLOCK_DRIFT
. All the other keys will expire later, so we are sure that the keys will be simultaneously set for at least this time.
MIN_VALIDITY这句中“the first key to expire in the set”应该是想表示“在所有设置好的key组成的set中那个被第一个设置的key”,连上后面那半句就是,它和“整个set”同时存在的时间至少是MIN_VALIDITY。
而redis.cn对这部分的翻译如下:
......我们可以确认,第一个server的key至少会存活
MIN_VALIDITY=TTL-(T2-T1)-CLOCK_DRIFT
。所有其他的key的存活时间,都会比这个key时间晚,所以可以肯定,所有key的失效时间至少是MIN_VALIDITY。
翻译中点到“所有key”,但跟的是“所有key的失效时间”,而不是“所有key同时存在的时间”。感觉没有翻译到原文出现的 simultaneously 一词,难道英文原文也做过修改?总之,按现在的原文,redis.cn的那份翻译是不太准确的。
上梯子查了一会儿,找到并发编程网对这篇文章的翻译,是一篇15年的文章,对 MIN_VALIDITY的翻译相对更到位些。如果有对redlock做总结的,总结的好的文章,强烈欢迎大佬在评论区回复~~~
整个redlock算法的学习还没有结束,但已隐隐感觉到分布式的解决方案对时间的敏感性,恐怕又入了一个大坑......