4

我正在使用 Curator 框架进程间互斥体来创建分布式锁以保留一些资源。但是,我可以看到 zookeeper 每次获取锁需要 50-100 毫秒,释放锁需要 20-40 毫秒。我的应用程序写入量很大,必须在 500 毫秒内响应 10-50 次请求/秒,而我无法在仅获取和释放锁定时花费 70-140 毫秒。1)有什么办法可以改善吗?我的 zookeeper 服务器和客户端在同一台主机上。我已经尝试按照管理指南中的说明设置 Zookeeper 服务器。2)我是否应该为此使用其他一些框架/技术。我想知道 Redis SETNX 是否会是更好的解决方案或使用 Chubby。

4

1 回答 1

3

Zookeeper 的设计主要是为了保持一致,其次是为了快速。一致性伴随着协调的成本。这总是会增加延迟。您可以做的是根据您的工作进行分片,并且只进行工作人员级别的锁定。这将避免 Zookeeper 锁的额外成本,但会增加或删除工作人员时增加复杂性。

于 2015-05-08T23:54:51.553 回答