我想評估分佈式鎖定的各種選項。很少有我入圍的選項是Zookeeper,MySQL和Cassandra。卡桑德拉作爲分佈式鎖
隨着卡桑德拉,我在想什麼是創建一個表,說鎖
create table if not exists app.locks (
key text,
primary KEY (key)
);
然後作爲acquireLock過程的一部分,我如果不存在查詢象下面執行插入。 acquireLock只有插入返回true時,纔會返回進程。
INSERT INTO app.locks (key) VALUES ('KEY_1') IF NOT EXISTS;
釋放鎖可以刪除此密鑰的數據,以便其他線程可以嘗試並獲取它。
我正在進行一些性能測試,並列出了我入圍的所有選項。結果,Zookeeper和MySQL不會顯示任何錯誤,因爲Cassandra的結果非常不一致,並且在所有測試中都顯示出幾個或更多的錯誤。大多數時間的錯誤是「卡桑德拉超時寫入查詢時一致QUORUM」
問題我在這裏是,卡桑德拉的意思是分佈式鎖?如果嘗試獲取此鎖的併發線程數超過,它可以擴展嗎?
期待專家的想法。提前致謝。
如果你需要分佈式的鎖看看hazelcast:http://docs.hazelcast.org/docs/latest /手動/ HTML單/#鎖 – Mandraenke