System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 基于本地内存锁和分布式锁的资源数据处理方法及系统技术方案_技高网

基于本地内存锁和分布式锁的资源数据处理方法及系统技术方案

技术编号:41131283 阅读:2 留言:0更新日期:2024-04-30 18:00
本发明专利技术公开了一种基于本地内存锁和分布式锁的资源数据处理方法及系统。方法包括:为每个服务器分别分配多个资源访问请求,以便每个服务器分别利用多个线程处理多个资源访问请求;对于每个服务器,响应于多个线程获取服务器的本地内存锁的请求,确定多个线程中成功获取到本地内存锁的一个线程作为服务器的竞争线程;响应于多个服务器的竞争线程竞争获取分布式锁的请求,确定成功获取到分布式锁的一个竞争线程作为目标线程;响应于目标线程基于分布式锁对资源访问请求对应的资源数据的处理请求,对资源数据进行处理。本发明专利技术能够确保同一时间只有一个线程可以获取到分布式锁进而处理资源数据,同时避免未获取到分布式锁的各个线程不断重试。

【技术实现步骤摘要】

本专利技术涉及互联网,尤其涉及一种基于本地内存锁和分布式锁的资源数据处理方法及资源数据处理系统。


技术介绍

1、目前,在传统单体应用单机部署的情况下,可以使用java并发处理相关的api(如reentrantlock或synchronized)进行互斥控制。随着业务发展的需要,原单体单机部署的系统演化成分布式集群系统,由于分布式系统利用多线程、多进程执行任务且分布在不同机器上,导致原单机部署情况下的并发控制锁策略失效,为了解决该问题,就需要一种跨jvm的互斥机制来控制共享资源的访问,在分布式服务中为了保证一个或一组资源在高并发情况下同一时间只能被同一个线程执行,往往需要互斥来防止彼此的干扰,以保证一致性,因此,需要分布式锁来保证上述情况下系统的正常运行。

2、现有技术方案中,使用redis的setnx命令,可以实现同一时间不同机器上的多个线程只允许一个线程获取到锁进而处理资源,但其他未获取到锁的线程均在不断的重试去获取锁,而单台机器的多个线程重复获取锁的过程会导致cpu飙升,降低服务性能。

3、因此,需要一种基于本地内存锁和分布式锁的资源数据处理方法,来解决上述技术方案中存在的问题。


技术实现思路

1、为此,本专利技术提供一种基于本地内存锁和分布式锁的资源数据处理方法及资源数据处理系统,以解决或至少缓解上面存在的问题。

2、根据本专利技术的一个方面,提供一种基于本地内存锁和分布式锁的资源数据处理方法,在服务器集群中执行,所述服务器集群包括多个服务器以及一个分布式锁,且每个服务器分别具有一个本地内存锁,所述方法包括:为每个所述服务器分别分配多个资源访问请求,以便每个所述服务器分别利用多个线程处理多个资源访问请求;对于每个所述服务器,响应于多个线程获取所述服务器的本地内存锁的请求,确定所述多个线程中成功获取到所述本地内存锁的一个线程作为所述服务器的竞争线程;响应于多个所述服务器的竞争线程竞争获取分布式锁的请求,确定多个所述竞争线程中成功获取到所述分布式锁的一个竞争线程作为目标线程;响应于所述目标线程基于所述分布式锁对所述资源访问请求对应的资源数据的处理请求,对所述服务器集群中的所述资源数据进行处理。

3、可选地,在根据本专利技术的基于本地内存锁和分布式锁的资源数据处理方法中,还包括:对于每个所述服务器,将未获取到所述本地内存锁的各个线程作为所述服务器的等待线程;将各个等待线程添加到所述服务器的本地等待队列,以便等待重新获取所述服务器的本地内存锁。

4、可选地,在根据本专利技术的基于本地内存锁和分布式锁的资源数据处理方法中,响应于多个所述服务器的竞争线程竞争获取分布式锁的请求,确定多个所述竞争线程中成功获取到所述分布式锁的一个竞争线程作为目标线程,包括:响应于多个所述服务器的竞争线程基于所述分布式锁的key、所述竞争线程的uuid调用redislockutil.lock()方法发送的获取分布式锁的请求;如果任一竞争线程将所述分布式锁的key对应的value值成功设置为所述竞争线程的uuid,确定该竞争线程为成功获取到所述分布式锁的目标线程。

5、可选地,在根据本专利技术的基于本地内存锁和分布式锁的资源数据处理方法中,还包括:响应于未获取到所述分布式锁的各个竞争线程对所述目标线程的资源数据处理状态的监听请求,判断所述各个竞争线程的监听时间是否超过预定等待时间;如果所述各个竞争线程的监听时间超过预定等待时间,且未监听到所述目标线程释放所述分布式锁,则响应于未获取到所述分布式锁的所述各个竞争线程竞争获取分布式锁的请求,确定所述各个竞争线程中成功获取到所述分布式锁的一个竞争线程作为目标线程。

6、可选地,在根据本专利技术的基于本地内存锁和分布式锁的资源数据处理方法中,未获取到所述分布式锁的各个竞争线程适于基于所述目标线程的uuid为所述目标线程创建监听key,所述目标线程在释放所述分布式锁后适于为所述监听key设置对应的value值;响应于未获取到所述分布式锁的各个竞争线程对所述目标线程的资源数据处理状态的监听请求,判断所述各个竞争线程的监听时间是否超过预定等待时间,包括:响应于所述各个竞争线程对所述监听key对应的value值的查询请求,判断所述各个竞争线程的监听时间是否超过预定等待时间;响应于所述各个竞争线程在查询到所述监听key对应的value值为空后,休眠预定间隔时间后再次对所述监听key对应的value值的查询请求,判断所述各个竞争线程的监听时间是否超过预定等待时间。

7、可选地,在根据本专利技术的基于本地内存锁和分布式锁的资源数据处理方法中,所述目标线程在释放所述分布式锁后还适于删除所述分布式锁的key对应的value值,以及,释放所述目标线程获取到的本地内存锁,以便唤醒所述目标线程对应的服务器的本地等待队列中的各个等待线程。

8、可选地,在根据本专利技术的基于本地内存锁和分布式锁的资源数据处理方法中,还包括:如果所述各个竞争线程监听到所述目标线程完成资源数据处理、已释放所述分布式锁,且所述监听时间未超过预定等待时间,则所述各个竞争线程退出监听,且所述各个竞争线程释放获取到的本地内存锁,以便唤醒所述各个竞争线程对应的服务器的本地等待队列中的各个等待线程。

9、可选地,在根据本专利技术的基于本地内存锁和分布式锁的资源数据处理方法中,响应于多个线程获取所述服务器的本地内存锁的请求,包括:根据所述资源访问请求,从缓存中查询对应的资源数据;如果从缓存中查询到所述资源数据,则直接将所述资源数据返回;如果从缓存中未查询到所述资源数据,则响应于多个线程获取所述服务器的本地内存锁的请求。

10、可选地,在根据本专利技术的基于本地内存锁和分布式锁的资源数据处理方法中,所述服务器集群包括k个服务器,其中k>1,且k为整数;为每个所述服务器分别分配多个资源访问请求,包括:响应于接收到kn个资源访问请求,为每个所述服务器分别分配n个资源访问请求,以便每个所述服务器分别利用n个线程处理n个资源访问请求。

11、根据本专利技术的一个方面,提供一种资源数据处理系统,包括:服务器集群,所述服务器集群包括多个服务器以及一个分布式锁,且每个服务器分别具有一个本地内存锁,且所述服务器集群适于执行如上所述的方法来处理资源数据;多个客户端,各个所述客户端适于向所述服务器集群发送资源访问请求。

12、根据本专利技术的一个方面,提供一种计算设备,包括:至少一个处理器;存储器,存储有程序指令,其中,程序指令被配置为适于由上述至少一个处理器执行,所述程序指令包括用于执行如上所述的基于本地内存锁和分布式锁的资源数据处理方法的指令。

13、根据本专利技术的一个方面,提供一种存储有程序指令的可读存储介质,当该程序指令被计算设备读取并执行时,使得该计算设备执行如上所述的基于本地内存锁和分布式锁的资源数据处理方法。

14、根据本专利技术提供的基于本地内存锁和分布式锁的资源数据处理方法和系统,服务器集群包括多个服务器以及一个分布式锁,且每个服务器分别具有本文档来自技高网...

【技术保护点】

1.一种基于本地内存锁和分布式锁的资源数据处理方法,在服务器集群中执行,所述服务器集群包括多个服务器以及一个分布式锁,且每个服务器分别具有一个本地内存锁,所述方法包括:

2.如权利要求1所述的方法,其中,还包括:

3.如权利要求1或2所述的方法,其中,响应于多个所述服务器的竞争线程竞争获取分布式锁的请求,确定多个所述竞争线程中成功获取到所述分布式锁的一个竞争线程作为目标线程,包括:

4.如权利要求1-3中任一项所述的方法,其中,还包括:

5.如权利要求4所述的方法,其中,未获取到所述分布式锁的各个竞争线程适于基于所述目标线程的UUID为所述目标线程创建监听Key,所述目标线程在释放所述分布式锁后适于为所述监听Key设置对应的Value值;

6.如权利要求5所述的方法,其中,

7.如权利要求4-6中任一项所述的方法,其中,还包括:

8.一种资源数据处理系统,包括:

9.一种计算设备,包括:

10.一种存储有程序指令的可读存储介质,当所述程序指令被计算设备读取并处理时,使得所述计算设备处理如权利要求1-7中任一项所述的方法。

...

【技术特征摘要】

1.一种基于本地内存锁和分布式锁的资源数据处理方法,在服务器集群中执行,所述服务器集群包括多个服务器以及一个分布式锁,且每个服务器分别具有一个本地内存锁,所述方法包括:

2.如权利要求1所述的方法,其中,还包括:

3.如权利要求1或2所述的方法,其中,响应于多个所述服务器的竞争线程竞争获取分布式锁的请求,确定多个所述竞争线程中成功获取到所述分布式锁的一个竞争线程作为目标线程,包括:

4.如权利要求1-3中任一项所述的方法,其中,还包括:

5.如权利要求4所述的方法,其中...

【专利技术属性】
技术研发人员:马韶华
申请(专利权)人:天津车之家软件有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1