我想评估分布式锁定的各种选项。很少有我入围的选项是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