学会用数据说话-分布式锁究竟可以多少并发?

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多个从分配到释放流程结束。

学会用数据说话-分布式锁究竟可以多少并发?

举个栗子

以上是关于学会用数据说话-分布式锁究竟可以多少并发?的主要内容,如果未能解决你的问题,请参考以下文章

redis 实现并发锁go

高并发核心技术 - 幂等性与分布式锁

用 Go + Redis 实现分布式锁

什么是分布式锁?为什么要用分布式锁?面试必问!

zookeeper实现分布式读写锁

用分布式锁来防止库存超卖,但是是每秒上千订单的高并发场景,如何对分布式锁进行高并发优化来应对这个场景?