想要「鎖定」外部資源,在這種情況下,它將是存儲在rackspace cloud servers上的「blob」,與Amazon S3類似。 (使用Python)可以使用Redis或Memcached來「鎖定」像S3這樣的blobstore資源嗎?
想的競爭條件,以這樣的處理:
- 首先進程對資源造成鎖
- 首先進程開始編輯資源
- 二進程試圖編輯同一個資源並發現資源被鎖定。當鎖被取下
- 第一個進程完成編輯資源和移除鎖定
- 二進程接收釋放的資源的通知,並能夠做出自己的編輯通知
- 二進程請求
想使用Memcached或Redis創建鎖,但是不同的機制也不錯。
大部分情況非常簡單,我正在努力的部分是如何在鎖被刪除時通知第二個進程,而不是強制它等待並重試。
Redis有publish/subscribe functionality,這是適合在這種情況下使用嗎?
或者還有其他方法可以解決這個問題嗎?
非常感謝!
看看http://www.davidverhasselt.com/2011/08/06/a-distributed-mutex-and-semaphore-using-redis/ – abeyer
通常第二個進程只會循環,直到鎖由第一個過程設置釋放 - 這是絕對不可能的? (以及爲什麼?),否則實現這種算法將是相對簡單的使用redis。 – Mahn