首页 > 其他分享 >分布式锁

分布式锁

时间:2024-10-30 10:11:08浏览次数:5  
标签:过期 value 死锁 key setnx 分布式

MySQL分布式锁

利用MySQL的特性:主键或者唯一索引值是唯一的。

Redis分布式锁

原理

使用setnx key value,setnx = set if not exists,也就是只有当key不存在时才set,key存在时不做任何操作。

获取锁:setnx key value
释放锁:del key

死锁

死锁举例:一个程序获取锁后,在执行业务逻辑的时候挂掉了,没有释放锁。其他程序就无法再获取该锁,会造成死锁。

死锁解决办法:设置key的过期时间 setnx key value ttl,value是请求的唯一标识

设置过期时间导致的问题:程序还没有执行完,锁过期了。这时就会有其他程序获取到锁,删除锁的时候也可能会删除其他程序的锁。

设置过期时间导致的问题的解决办法:

  1. 应用程序每隔半分钟使用自己的 watch dog 监测当前 key 的 value,如果仍然是自己,TTL再续一分钟;
  2. 应用程序在删除锁的时候,需要比较 value 的值是否和自己设置的相同

性能提升

使用分段锁,将资源分段

集群的问题

主从同步有延时,程序访问不同主机,会有问题。

解决方案:红锁
服务器之间不同步数据,服务器数量为奇数,应用程序需要在超过一半的机器上加锁成功。

参考文献

分布式锁视频教程

标签:过期,value,死锁,key,setnx,分布式
From: https://www.cnblogs.com/qianqianjuna/p/18515205

相关文章

  • 《使用Gin框架构建分布式应用》阅读笔记:p251-p271
    《用Gin框架构建分布式应用》学习第14天,p251-p271总结,总21页。一、技术总结1.Docker&DockerComposeversion:"3.9"services:api:image:apienvironment:-MONGO_URI=mongodb://admin:password@mongodb:27017/test?authSource=admin&readPreference=p......
  • xxl-job分布式定时任务
    xxl-job分布式定时任务官方定义:xxl-job是一个开源的分布式任务调度平台。它的核心设计目标是开发迅速、学习简单、轻量级、易扩展。主要由调度中心和执行器两部分组成,调度中心负责管理调度信息,执行器负责接收调度请求并执行任务逻辑。主要特点:简单易用:支持通过web页......
  • 一文讲明白大模型分布式逻辑(从GPU通信原语到Megatron、Deepspeed)
    1.背景介绍如果你拿到了两台8卡A100的机器(做梦),你的导师让你学习部署并且训练不同尺寸的大模型,并且写一个说明文档。你意识到,你最需要学习的就是关于分布式训练的知识,因为你可是第一次接触这么多卡,但你并不想深入地死磕那些看起来就头大的底层原理,你只想要不求甚解地理解分......
  • 分布式服务高可用实现:复制
    作者:京东保险王奕龙1.为什么需要复制我们可以考虑如下问题:当数据量、读取或写入负载已经超过了当前服务器的处理能力,如何实现负载均衡?希望在单台服务器出现故障时仍能继续工作,这该如何实现?当服务的用户遍布全球,并希望他们访问服务时不会有较大的延迟,怎么才能统一用......
  • 【项目实战】分布式日志搜索系统之数据同步方案(Logstash-input-jdbc、go-mysql-elast
    在构建分布式日志搜索系统时,数据同步是一个核心环节。以下是针对您提出的五种数据同步方案的详细分析:一、Logstash-input-jdbcLogstash是ElasticStack的一部分,用于从各种来源收集数据,并将其发送到Elasticsearch。Logstash-input-jdbc插件允许Logstash从关系型数据库(如My......
  • 【项目实战】分布式日志搜索系统之Elastic Stack日志抽取(filebeat、heartbeat、packet
    一、ElasticStack是什么?ElasticStack,以前称为ELKStack,是一套开源的日志分析解决方案。ElasticStack,由Elastic公司开发和维护。ElasticStack,包括了几个核心组件,这些组件协同工作以帮助用户收集、处理、存储、搜索和可视化数据。ElasticStack,因其灵活性和强大的功能......
  • Springboot分布式生鲜市场信息系统设计与实现284o7
    Springboot分布式生鲜市场信息系统设计与实现284o7本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表项目功能:用户,商家,商品分类,生鲜商品开题报告内容一、项目背景与意义随着生活水平的提高和消费观念的转......
  • GaussDB企业级AI-Native分布式数据库
    华为GaussDB是一个企业级AI-Native分布式数据库。GaussDB采用MPP(MassiveParallelProcessing)架构,支持行存储与列存储,提供PB(Petabyte,2的50次方字节)级别数据量的处理能力。华为Gauss数据库是全球首款AI-Native数据库,能够同时支持X86、ARM、GPU、NPU等异构计算。数......
  • C#使用Socket实现分布式事件总线,不依赖第三方MQ
    使用Socket实现的分布式事件总线,支持CQRS,不依赖第三方MQ。CodeWF.EventBus.Socket是一个轻量级的、基于Socket的分布式事件总线系统,旨在简化分布式架构中的事件通信。它允许进程之间通过发布/订阅模式进行通信,无需依赖外部消息队列服务。CommandQuery特性轻量级:不......
  • 如何设计好分布式数据库,这个策略很重要(GaussDB)
    ​数据库是应用和计算机的核心组成,试想,如果没有数据库,就像人的大脑没有了记忆一样,信息也得不到共享,那么,对开发者来说,如何设计一款高效易用的数据库至关重要。GaussDB是企业级分布式数据库,具备分布式强一致、有效降低容灾成本、支持PB级海量数据、智能诊断等优点,是当下炙手可热的......