学会用数据说话-分布式锁究竟可以多少并发?
在锁操作的客户端打日志
获取锁:
T13:31:51.230redisname-lock:hsetnx
E13:31:51.230GetConnection10.X.X.X
T13:31:51.231redisname-lock:hsetnx
设置超时时间:
T13:31:51.230redisname-lock:hsetnx
E13:31:51.230GetConnection10.X.X.X
T13:31:51.231redisname-lock:hsetnx
释放锁:
T13:31:51.230redisname-unlock:hsetnx
E13:31:51.230GetConnection10.X.X.X
T13:31:51.231redisname-unlock:hsetnx
从上面数据可以看到一个正常分布式锁操作,操作时间在1ms,因为是从客户端获取的,因为粒度只能是毫秒级。再从服务端看看是什么情况。
上面显示了大于1ms的慢查询情况,可以看到每秒几百个的QPS不会造成分布式锁本身的慢查询。耗时超过1ms的都是集群操作,分布式锁的lock和unlock操作时间都是us级。
如果lock和unlock中间没有任何逻辑的理想情况下,同一个锁可以支持每秒:
1000ms/ (1ms的lock+1ms的设置超时+1ms的unlock)=333(个)
结论
分布式锁本身lock和unlock耗时是us级,在理想情况下大概可支持每秒1000个原子操作,300多个从分配到释放流程结束。
举个栗子
相关文章:
-
-
1、存储类 含义 描述变量空间开辟于内存中什么地方,内存被分为栈、堆、数据段、bss段、text段等管理方法的内存段,变量空间开辟于这些段中。如局部... [阅读全文]
-
var allMyApp = [ {"startDate": "2018-07-07 12:30:00",&... [阅读全文]
-
一、简介 go语言中的网络编程主要通过net包实现,net包提供了网络I/O接口,包括HTTP、TCP/IP、UDP、域名解析和Unix域socke... [阅读全文]
-
随着业务的增加,可能存在这么一种需求,就是需要从h5中直接跳转到app。如果没有安装app的话,则提示到应用市场或者app store下载安装。不过... [阅读全文]
-
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论