1

为什么 Redlock 算法说“It tries to acquire the lock in all the N instances sequen...

 2 years ago
source link: https://www.v2ex.com/t/809481
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

V2EX  ›  数据库

为什么 Redlock 算法说“It tries to acquire the lock in all the N instances sequentially”

  JasonLaw · 8 小时 0 分钟前 · 168 次点击

Distributed locks with Redis – Redis - The Redlock algorithm中,它说

It tries to acquire the lock in all the N instances sequentially, using the same key name and random value in all the instances. During step 2, when setting the lock in each instance, the client uses a timeout which is small compared to the total lock auto-release time in order to acquire it. For example if the auto-release time is 10 seconds, the timeout could be in the ~ 5-50 milliseconds range. This prevents the client from remaining blocked for a long time trying to talk with a Redis node which is down: if an instance is not available, we should try to talk with the next instance ASAP.

sequentially 是什么含义?为什么要 sequentially 呢?

然后在Distributed locks with Redis – Redis - Retry on failure中,它又说

When a client is unable to acquire the lock, it should try again after a random delay in order to try to desynchronize multiple clients trying to acquire the lock for the same resource at the same time (this may result in a split brain condition where nobody wins). Also the faster a client tries to acquire the lock in the majority of Redis instances, the smaller the window for a split brain condition (and the need for a retry), so ideally the client should try to send the SET commands to the N instances at the same time using multiplexing.

这不是互相矛盾吗?还是我哪里理解错了?


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK