Intro Redis Distributed Lock On RedisCluster
這篇介紹Redis Distributed Lock On RedisCluster。
使用上會遇到的問題
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| 在Redis上使用分散式鎖,是很常見的功能。 在single redis上,分散式鎖是正常可用的。
Redis高可用最常見的方案就是RedisCluster(master-slave), 這種模式在redis分散式鎖有缺陷。
redis cluster叢集環境下,假如現在A使用者端想要加鎖,它會根據路由規則 選擇一臺master節點寫入key mylock,在加鎖成功後,master節點會把key非同 步複製給對應的slave節點。
如果此時redis master節點當機從節點複製失敗,為保證叢集可用性,會進行 主備切換,slave變為了redis master。B使用者在新的master節點上加鎖成功 ,而A使用者也以為自己還是成功加了鎖的。另外如果主從複製延遲同樣也會 造成加鎖和解鎖延遲的問題。
此時就會導致同一時間內多個使用者端對一個分散式鎖完成了加鎖,導致各種 髒資料的產生。
|