使用分布式锁要注意什么

scss 复制代码
lock();
try{
   业务逻辑
} finally {
    unlock()
}

这个应该是很多时候大家看的锁流程,今天去一家公司聊技术,整个过程就在问sychronized, 冲入锁、Java锁高级队列的时候等等,今天说点其他的:

  • 什么时候解锁?
  • 事务都没提交锁能释放么?

其实很多时候并发锁没卡住都是在不适当的时候提前释放了锁,如下代码多个并发同时执行就可能数据还没提交其他并发在unlock后拿到锁,就可能出现卡不住

scss 复制代码
beginTransaction()
    beginTransaction()
        lock(key="abc");
        try{
           业务逻辑
           涉及多个系统为服务调用
           设计多个Domain的Entity冲入修改
        } finally {
            unlock(key="abc")
        }
    commintTransaction()
    
    其他为服务业务逻辑
commintTransaction()

实际情况可能比上面的例子更复杂,在Spring中其实有现成方案:

不过在GoLang中还没找到合适的解法,都没Spring完善

相关推荐
Rain的Java大神之路18 分钟前
100 亿条数据如何快速写入 MySQL?从 231 天到 3.5 小时,我把面试官问懵了
java·后端·面试
程序猿乐锅21 分钟前
面向对象练习:图书借阅系统里的封装、抽象类与多态
开发语言·前端·数据库·后端·python·学习·1024程序员节
利威尔xu1 小时前
Go IM 源码实战(7):断线三天重连,水位算错就漏消息
redis·后端·微服务·面试·golang
我的xiaodoujiao1 小时前
Django 权限系统项目实战详细图文教程 4--系统登录功能实现 2
后端·python·django
月夏1 小时前
前端第一次接自己的后端:mock 切真接口踩了 2 个坑,组件只改了一行 import
前端·后端·node.js
IT_陈寒1 小时前
React实战技巧总结:如何优雅处理复杂列表的渲染卡顿问题?
前端·人工智能·后端
打工仔折腾 AI2 小时前
后端部署避坑:吃透IPv4地址、网络接口与CIDR前缀的实际应用
arm开发·人工智能·后端·python·性能优化
独泪了无痕10 小时前
Spring Data Redis 快速上手
spring boot·redis·后端
m0_6399069414 小时前
Linux 操作系统入门:目录结构、服务排查常用命令、Shell 脚本基础
linux·运维·后端