`

分布式锁

阅读更多
1、使用场景
   在分布式y应用服务集群中,有时处理一个定时任务必须在某一时刻只有一个线程执行,而其他线程必须等待。
   可以举一个真实的例子,需要具体怎么样处理?
   1)两个交易中心处理订单时需要保证另一个无法处理;
2、设计方案及思路
1)阻塞模式
如果需要阻塞可以通过while循环处理,具体操作需要详细说明

2)失效时间
主要防止在解锁过程中出现超时或者服务宕机,导致无法解锁;如果设置失效时间那么即使在服务宕机后也可以解锁成功;

但失效时间设置多少比较合理?
1)如果设置时间太短,可能线程处理业务时间比较长或者有阻塞,那么就会导致第二个线程持有该锁产生线程安全问题;
2)如果设置时间太长,导致在分布式锁服务宕机,其他线程需要等待过多的时间,使整体服务性能下降包括处理时间及tps;

如何解决这种问题比较关键?
1)先自己设定方案
假定锁服务设置锁的超时时间为3s,当线程处理业务超过2s还没有释放锁,则就把超时时间延长至原来的一倍(6s),依此类推但必须设置上限假设设置60s为上限,达到60s就会自动删除锁;
    1】那么问题如何精确定位时间是否达到2s,并重新设置超时时间,如果线程在执行一个任务时出现阻塞时,就一直持有锁,如果出现这种情况又如何处理?
     通过另一个锁服务线程检查该锁是否达到2s;如果该获取锁的线程阻塞,那么达到60s后将锁至为失效,如果使用的是redis锁服务那么使用redis定期删除过期数据(在立即删除与定时删除的中间方案)

3、是否可重入

4)如果同时有多个线程竞争锁是否需要加入队列,是否可实现公平与非公平竞争
3、优势与不足

以上内容均为研究中的一些总结及想法,同时也会有些不足和缺陷,以后的实践过程中会不断改正。仅此参考。
参考:
http://ifeve.com/redis-lock/
http://www.weizijun.cn/2016/03/17/%E8%81%8A%E4%B8%80%E8%81%8A%E5%88%86%E5%B8%83%E5%BC%8F%E9%94%81%E7%9A%84%E8%AE%BE%E8%AE%A1/
分享到:
评论

相关推荐

    Java基于redis实现分布式锁代码实例

    Java基于Redis实现分布式锁代码实例 分布式锁的必要性 在多线程环境中,资源竞争是一个常见的问题。例如,在一个简单的用户操作中,一个线程修改用户状态,首先在内存中读取用户状态,然后在内存中进行修改,然后...

    redis实现分布式锁,自旋式加锁,lua原子性解锁

    在分布式系统中,为了保证数据的一致性和安全性,分布式锁是一种常见的解决方案。Redis作为一个高性能的键值存储系统,常被用作实现分布式锁的工具。本文将深入探讨如何使用Redis实现分布式锁,以及如何利用自旋式...

    C#.net Redis分布式锁源码实现

    在IT行业中,尤其是在大型分布式系统的设计与开发中,分布式锁是一种关键的同步机制。本篇文章将深入探讨如何在C#.NET环境下利用Redis实现分布式锁,以及相关的核心知识点。 首先,让我们理解什么是分布式锁。...

    C#实操控制并发之Lock和Redis分布式锁

    本文将深入探讨C#中如何使用Lock和Redis分布式锁来解决并发问题,以秒杀系统为例进行阐述。 首先,让我们理解什么是并发控制。并发控制是指在多线程环境下确保数据的一致性和完整性,防止多个线程同时访问同一资源...

    分布式锁原理讲解视频资料

    分布式锁是一种在分布式系统中实现同步访问资源的关键技术。它允许多个节点在同一时间对共享资源进行操作,但确保任何时刻只有一个节点能持有锁并执行相应的操作。本视频资料深入浅出地讲解了分布式锁的原理、实现...

    分布式锁处理步骤

    分布式锁是一种在分布式系统中实现资源同步的关键技术,它确保在多节点环境下,同一时间只有一个节点可以访问或修改特定的共享资源,以防止数据不一致性和并发问题。在Oracle数据库中,分布式事务处理可能会导致...

    C++基于redis的分布式锁redisAPI

    本文将深入探讨如何使用C++结合Redis实现分布式锁,并详细讲解Redis API在C++中的应用,以及如何处理与Boost库的集成。 首先,Redis是一个高性能的键值存储数据库,广泛用于缓存、消息队列、分布式锁等场景。分布式...

    redis分布式锁.zip

    Redis 分布式锁是分布式系统中解决并发控制和数据一致性问题的一种常见机制。在大型分布式应用中,单机锁无法满足需求,因为它们局限于单个服务器。Redis 的高可用性和低延迟特性使其成为实现分布式锁的理想选择。...

    redis分布式锁工具类

    现在很多项目单机版已经不满足了,分布式变得越受欢迎,同时也带来很多问题,分布式锁也变得没那么容易实现,分享一个redis分布式锁工具类,里面的加锁采用lua脚本(脚本比较简单,采用java代码实现,无须外部调用...

    zk:redis分布式锁.zip

    分布式锁是一种在分布式系统中实现锁机制的技术,用于在多节点之间协调访问共享资源,确保在高并发环境下数据的一致性和完整性。本压缩包“zk:redis分布式锁.zip”提供了基于Zookeeper(zk)和Redis两种分布式锁实现...

    springboot基于redis分布式锁

    在现代的高并发系统中,分布式锁是一种非常重要的机制,用于协调多个节点间的资源访问,以确保数据的一致性和完整性。SpringBoot是一个流行的Java微服务框架,它简化了与各种技术栈的集成,包括Redis这样的高性能...

    浅谈分布式锁

    分布式锁是解决分布式系统中多个进程间共享资源互斥访问的一种方法,它保证了即使在分布式环境下,也能维持数据的一致性。随着互联网公司业务的不断扩展和技术的进步,分布式系统的数据量和业务复杂性大幅增加,...

    基于 Redis 的分布式锁

    分布式锁是分布式系统中用于同步资源访问的一种机制,它能够保证在分布式部署的应用系统中,同一时刻只允许一个客户端对共享资源进行操作。随着互联网业务的发展,分布式系统越来越多地成为企业架构的选择,因此...

    redisson实现分布式锁

    在分布式系统中,锁是保证数据一致性的重要工具,而Redisson的分布式锁则为Java开发者提供了一种高效且可靠的解决方案。 首先,让我们深入理解分布式锁的概念。分布式锁是在分布式系统中,为了确保多个节点对共享...

    基于zookeeper的分布式锁简单实现

    分布式锁是一种在分布式系统中实现同步的技术,它允许多个节点在同一时刻访问共享资源。在大型分布式环境中,由于网络延迟和并发操作,简单的本地锁可能无法有效解决数据一致性问题。这时,Zookeeper,一个高可用的...

    java分布式锁实现代码

    在分布式系统中,为了保证数据的一致性和安全性,分布式锁是一种常见的解决方案。本文将深入探讨如何使用Redisson和Curator框架来实现Java环境中的分布式锁。 首先,让我们来看一下Redisson实现的分布式锁。Redis是...

    深入分析分布式锁的原理及特性.zip

    分布式锁是一种在分布式系统中实现同步访问资源的关键技术,它允许多台服务器共享同一资源而不会引发数据不一致。在大型互联网系统中,由于服务的水平扩展和数据的分布式存储,传统的单机锁已无法满足需求,分布式锁...

    42_分布式锁是啥?对比下redis和zk两种分布式锁的优劣?.zip

    分布式锁是一种在分布式系统中实现同步访问资源的机制,它允许多个节点在同一时间对共享资源进行操作,而不会导致数据不一致或并发问题。在Java开发中,分布式锁的应用广泛,尤其是在微服务架构中,当服务间的通信...

    基于Redis的分布式锁的实现方案.pdf

    基于Redis的分布式锁的实现方案 本文讨论了分布式锁的实现方案,主要基于Redis实现分布式锁,以解决分布式系统中资源访问的同步问题。在分布式系统中,需要协调各个系统或主机之间的资源访问,以避免彼此干扰和保证...

    redis实现分布式锁(java/jedis)

    redis实现分布式锁(java/jedis),其中包含工具方法以及使用demo 本资源是利用java的jedis实现 redis实现分布式锁(java/jedis),其中包含工具方法以及使用demo 本资源是利用java的jedis实现

Global site tag (gtag.js) - Google Analytics