使用分布式锁要注意什么

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完善

相关推荐
大圣编蚕1 小时前
Spring AOP 失效排查:从原理到实战的完整指南
java·后端·spring
AINative软件工程1 小时前
LLM 多租户 Prompt Isolation 工程实践:为 100 个租户定制 Prompt,但别让它们互相污染
后端·llm
EatFan1 小时前
MCP 从概念到落地:Java(Spring AI Alibaba)与 .NET 双栈接入实操对比
java·人工智能·后端·spring·.net·java后端·mcp
专业程序开发源1 小时前
springboot全民健身和饮食健康管理系统29158-计算机课程设计、毕业设计
java·spring boot·后端·python·django·php·课程设计
梦帮科技2 小时前
【3.0修订版】 RNS 代币架构:ERC20 五件套扩展与六钱包分配
数据结构·后端·算法·架构·node.js·区块链·php
IT_陈寒2 小时前
SpringBoot自动配置的坑:你以为的捷径可能是弯路
前端·人工智能·后端
vx_Biye_Design2 小时前
springboot小区管理系统68491-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·spring·课程设计·express
专业程序开发源2 小时前
springboot外卖系统94294-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·spring·php·课程设计
FYKJ_20102 小时前
springboot心理健康管理系统86254-计算机课程设计、毕业设计
vue.js·spring boot·后端·python·mysql·django·课程设计
卷无止境13 小时前
独立开发者的"富矿地带":哪些垂直领域值得你押注一辈子?
后端·python