锁及事务
文章平均质量分 87
暴躁的鱼
leetcode: https://leetcode.cn/u/maxatom/
掘金: https://juejin.cn/user/606586149804062/posts
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
分布式锁实现
redis分布式锁是用的对最多的,有现成的开源库Redission可以用,能满足大部分需求。一般情况下使用redis锁就可以。zookeeper分布式锁可以实现读写锁,公平锁和非公平锁,能实现的锁种类更多,也是一种很好用的锁,但是需要自己实现。MySQL实现起来稍显麻烦,也需要自己实现。三种锁均不是绝对安全的锁,都可能存在失效的情况。唯一安全的锁是数据库乐观锁,请看https://juejin.cn/post/7390689983789023247。原创 2024-09-25 23:32:21 · 1269 阅读 · 0 评论 -
关于RedLock算法大佬的争论
根据Martin和antirez对分布式锁的讨论,我们知道,由于分布式系统的各种问题程序暂停、系统时间跳跃、网络延迟等问题导致锁的基本特性互斥性实现起来非常困难。分布式锁必须在客户端出故障的时候能够被释放,同时要保证锁的互斥性,那么有两种措施:1)设置一个超时时间这种方案可能会存在这个问题,客户端没有执行完成锁已经过期并被其他客户端获取,那么在事务提交前需要判断锁是否超时,这又因为GC或者网络原因导致在判断后到事务提交前这段时间内锁状态可能已经变化,锁由未超时变成超时又被其他客户端获取,违反了互斥性。原创 2024-09-19 09:30:00 · 1169 阅读 · 0 评论 -
Java锁优化之批量重偏向
JVM对synchronized锁做了很多优化,这也是为什么synchronized锁的性能和ReentrantLock相比较的原因,在这些优化之后,synchronized和ReentrantLock性能上不相上下了,使用上更加方便,是最好的选择。原创 2024-09-18 11:42:25 · 677 阅读 · 0 评论 -
分布式锁和spring事务管理
高并发情况下,分布式事务很容易出问题,要对各种情况分析是否可能出问题,并要对所有可能出问题的情况做充分的测试才能保证程序健壮。RedLock算法并不是一个严谨的算法,有一些问题,使用的时候要了解他的特性。关于RedLock算法有一个Martin和算法作者antirez的争论,请看我的另一篇文章关于RedLock分布式锁大佬的争论。原创 2024-09-11 00:52:49 · 1399 阅读 · 0 评论
分享