美文网首页
高性能分布式锁

高性能分布式锁

作者: 师襄 | 来源:发表于2017-07-18 21:45 被阅读0次

    在高并发请求的系统中,我们知道要控制多个线程对资源的并发访问,大都会用synchronize或者lock锁来实现同步,但是在分布式应用系统中,要控制一个事务的并发执行,需要跨JVM控制并发,那就需要用到分布式锁。

    分布式锁的实现有很多方法,通常情况下只要是各个分布式应用能共同访问的资源我们都可以用来作分布式锁,区别只是性能,安全性,可用性等的考虑了,比如数据库,缓存服务以及业内推崇的zookeeper等。

数据库实现分布式锁思路:利用数据库唯一索引,悲观锁等特性。

1,先select没有数据就插入数据,谁插入成功谁就获得锁,通过delete数据进行释放锁,对于请求量大情况下数据库性能是瓶颈。

2,锁等待,如果线程未获得锁,则一般需要进行重试或者等待锁释放。这种需求则需要推翻1这种释放锁的方式,通过for update加锁,commit释放锁可以解决此问题。但随之而而来的问题是独占锁持有时间长的话,占用数据库连接会造成连接池占满的问题。

通过缓存服务实现分布式锁:memcached的add方法,redis的setnx方法都是原子操作,memcached的问题是内存不够或者宕机会丢失数据。redis可以持久化以及故障恢复,需要注意设置失效时间

基于zookeeper瞬时有序节点实现的分布式锁,大致思想为:每个客户端对某个功能加锁时,在zookeeper上的与该功能对应的指定节点的目录下,生成一个唯一的瞬时有序节点。判断是否获取锁的方式很简单,只需要判断有序节点中序号最小的一个。当释放锁的时候,只需将这个瞬时节点删除即可。同时,其可以避免服务宕机导致的锁无法释放,而产生的死锁问题。
锁安全性高,zk可持久化,且能实时监听获取锁的客户端状态。一旦客户端宕机,则瞬时节点随之消失,zk因而能第一时间释放锁。性能开销比较高。

相关文章

  • 高性能分布式锁

    在高并发请求的系统中,我们知道要控制多个线程对资源的并发访问,大都会用synchronize或者lock锁来实...

  • redis学习

    1. 什么是redis 特点 高性能 单线程 内存 支持持久化 nosql 作用 缓存 分布式锁 分布式唯一键 队...

  • 20201110-Redis底层数据结构

    前言 Redis高性能及高吞吐的Key-Value类型存储,适合缓存、秒杀、分布式锁等场景。 Redis存储值支持...

  • 分布式锁

    为什么要用分布式锁 数据库乐观锁redis分布式锁zookeeper分布式锁 使用分布式锁的场景 实现分布式锁的方...

  • Redisson高性能分布式锁

    概述 在一些高并发的场景中,比如秒杀,抢票,抢购这些场景,都存在对核心资源,商品库存的争夺,控制不好,库存数量可能...

  • ZooKeeper原理与应用

    ZooKeeper是一个开源的高可用、高性能且一致的分布式协调服务,其基本工作原理为分布式锁服务,由雅虎公司创建和...

  • 什么是分布式锁?几种分布式锁分别是怎么实现的?

    一、什么是分布式锁: 1、什么是分布式锁: 分布式锁,即分布式系统中的锁。在单体应用中我们通过锁解决的是控制共享资...

  • 腾讯的Tendis用了这么多牛逼技术,能否干掉Redis?

    Redis 作为高性能缓存被广泛应用到各个业务, 比如游戏的排行榜, 分布式锁等场景。经过在 IEG 的长期运营,...

  • 4:Redis 分布式锁 (文末有项目连接)

    1:什么是缓存分布式锁 2:分布式锁的关键代码 3:业务代码使用分布式缓存锁 4:业务代码使用分布式缓存锁 5:测...

  • 锁(2)-- 分布式锁

    前言: 锁分3种:java锁、分布式锁、DB锁 分布式锁的几种实现方式 目前几乎很多大型网站及应用都是分布式部署...

网友评论

      本文标题:高性能分布式锁

      本文链接:https://www.haomeiwen.com/subject/rkpghxtx.html