如何设计一款高性能分布式锁,实现数据的安全访问?

查看原文如何设计一款高性能分布式锁,实现数据的安全访问?

随着互联网技术的飞速发展,分布式已经成为一个绕不开的话题,分布式环境下,“高并发访问共享资源”的场景并不少见,带来的问题也显⽽易见:共享资源在访问前后出现了数据不一致或非预期结果!!!

单体时代可以⽤JVM提供的ReentrantLock或者Synchronized解决,分布式环境下,JVM就有点力不不从心了。于是乎,“分布式锁”便出现了。

01 什么是分布式锁?

在计算机科学中,锁(lock)与互斥(mutex)是一种同步机制,用于在许多线程执行时对资源的限制。

分布式锁可以理解为,控制分布式系统有序的去对共享资源进行操作,通过互斥来保持一致性。

1、分布式锁应具备哪些特性?
分布式锁是多服务共享锁,在分布式的部署环境下,通过锁机制来让客户端互斥的对共享资源进行访问,应该具备以下特性。
在这里插入图片描述
**互斥性:**同一时间,保证共享资源只能被一个客户端的一个线程能访问,具有排他性。
**防死锁:**锁在一段时间后,一定会被释放(正常释放或异常释放)。
**高可用:**获取锁的机制必须高可用,性能佳。
**阻塞锁(可选):**当前资源已被加锁,其他客户端或者线程是阻塞等待,还是立即返回。
**可重入(可选):**当前锁的持有者是否能再次进入。
**公平性(可选):**加锁的顺序和请求加锁的顺序是一致,还是随机抢锁。

2、分布式锁可以解决哪些场景的问题?
分布式锁就是用来解决高并发访问导致数据不一致的问题,这里列举几种常见的场景。
**多用户修改数据,造成数据不准确:**多个请求对同一条数据同时进行修改,导致数据不准确。比如“下单减库存”、“互联网秒杀”、“抢红包”、“抢票”、“抢优惠券”、“互联网选号”、“转账”等。
**多次请求,数据重复:**请求结果暂未返回时,进行多次操作或重试,产生多个相同的请求,不加锁的情况下成功,会产生很多重复记录。
**分布式协调:**分布式环境下ÿ

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值