学会用数据说话-分布式锁究竟可以多少并发?
Posted 编程一生
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学会用数据说话-分布式锁究竟可以多少并发?相关的知识,希望对你有一定的参考价值。
程序员萌萌在浏览关于分布式锁的文章,突然下面的话引起了萌萌的注意:
在锁操作的客户端打日志
获取锁:
T13:31:51.230 | redis | name-lock:hsetnx | ||
E13:31:51.230 | GetConnection | 10.X.X.X | ||
T13:31:51.231 | redis | name-lock:hsetnx |
设置超时时间:
T13:31:51.230 | redis | name-lock:hsetnx | ||
E13:31:51.230 | GetConnection | 10.X.X.X | ||
T13:31:51.231 | redis | name-lock:hsetnx |
释放锁:
T13:31:51.230 | redis | name-unlock:hsetnx | ||
E13:31:51.230 | GetConnection | 10.X.X.X | ||
T13:31:51.231 | redis | name-unlock:hsetnx |
从上面数据可以看到一个正常分布式锁操作,操作时间在1ms,因为是从客户端获取的,因为粒度只能是毫秒级。再从服务端看看是什么情况。
上面显示了大于1ms的慢查询情况,可以看到每秒几百个的QPS不会造成分布式锁本身的慢查询。耗时超过1ms的都是集群操作,分布式锁的lock和unlock操作时间都是us级。
如果lock和unlock中间没有任何逻辑的理想情况下,同一个锁可以支持每秒:
1000ms/ (1ms的lock+1ms的设置超时+1ms的unlock)=333(个)
结论
分布式锁本身lock和unlock耗时是us级,在理想情况下大概可支持每秒1000个原子操作,300多个从分配到释放流程结束。
举个栗子 以上是关于学会用数据说话-分布式锁究竟可以多少并发?的主要内容,如果未能解决你的问题,请参考以下文章