CN109117189A - 数据处理方法、装置及计算机设备 - Google Patents

数据处理方法、装置及计算机设备 Download PDF

Info

Publication number
CN109117189A
CN109117189A CN201810710519.7A CN201810710519A CN109117189A CN 109117189 A CN109117189 A CN 109117189A CN 201810710519 A CN201810710519 A CN 201810710519A CN 109117189 A CN109117189 A CN 109117189A
Authority
CN
China
Prior art keywords
lock
segmentation
thread
data
offset
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201810710519.7A
Other languages
English (en)
Other versions
CN109117189B (zh
Inventor
徐露泉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Zhenniu Information Technology Co Ltd
Original Assignee
Hangzhou Zhenniu Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hangzhou Zhenniu Information Technology Co Ltd filed Critical Hangzhou Zhenniu Information Technology Co Ltd
Priority to CN201810710519.7A priority Critical patent/CN109117189B/zh
Publication of CN109117189A publication Critical patent/CN109117189A/zh
Application granted granted Critical
Publication of CN109117189B publication Critical patent/CN109117189B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3869Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/524Deadlock detection or avoidance

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供了一种数据处理方法、装置及计算机设备,其中方法包括:获取集群的线程发起的锁请求信息;根据所述锁请求信息,查询是否存在未被其它集群或线程占用的分段锁;若存在未被其它集群或线程占用的分段锁,则将所述分段锁分配给发起所述锁请求信息的线程,以使所述线程对所述分段锁对应的数据进行处理。本发明提供的数据处理方法、装置及计算机设备,能够避免多个线程同时处理一段数据导致数据处理失败或出现异常,提高服务器处理能力和效率。

Description

数据处理方法、装置及计算机设备
技术领域
本发明属于互联网技术领域,更具体地说,是涉及一种数据处理方法、装置及计算机设备。
背景技术
随着互联网应用和计算机技术的不断发展,如何快速实现数据处理功能也成为热门的研究问题。在一些数据量并不是很大的领域,可以使用单机来竞争数据,但是随着数据量的逐渐扩大,单机性能瓶颈、单机单点故障可能会带来全链路不可用,那么就有必要考虑多集群和多线程来解决问题,从而达到高可用、高并发、高吞吐量的目的。
在多集群多线程的情况下,数据可能会同时被多个集群或线程读取并处理,容易导致数据处理失败或出现异常,影响服务器处理能力和效率。
发明内容
本发明的目的在于提供一种数据处理方法、装置及计算机设备,可以解决现有技术中数据处理容易出现异常、影响服务器处理能力和效率的技术问题。
为实现上述目的,本发明提供一种数据处理方法,包括:
获取集群的线程发起的锁请求信息;
根据所述锁请求信息,查询是否存在未被其它集群或线程占用的分段锁;
若存在未被其它集群或线程占用的分段锁,则将所述分段锁分配给发起所述锁请求信息的线程,以使所述线程对所述分段锁对应的数据进行处理。
可选的,根据所述锁请求信息,查询是否存在未被其它集群或线程占用的分段锁,包括:
根据所述锁请求信息,执行如下步骤,直至查询到未被其它集群或线程占用的分段锁,或者全部分段锁被查询完毕:
根据所述集群的偏移量,查找所述偏移量对应的分段锁;
判断所述偏移量对应的分段锁是否被其它集群或线程占用;
若是,则更新所述集群的偏移量。
可选的,判断所述偏移量对应的分段锁是否被其它集群或线程占用,包括:
判断是否全部的分段锁对应的分片都无数据;
若是,则休眠第一预设时间;
若否,则根据所述偏移量对应的分段锁查找该分段锁对应的分片,判断所述对应的分片是否有数据,若有数据,则判断所述偏移量对应的分段锁是否被其它集群或线程占用。
可选的,所述方法还包括:
获取待存储的数据以及对应的序号;
对所述数据对应的序号进行取模运算;
根据所述取模运算的结果,确定所述数据对应的分片;
将所述数据存储在对应的分片中;
其中,每个分段锁对应一个或多个分片。
本发明还提供一种数据处理装置,包括:
获取模块,用于获取集群的线程发起的锁请求信息;
查询模块,用于根据所述锁请求信息,查询是否存在未被其它集群或线程占用的分段锁;
分配模块,用于在存在未被其它集群或线程占用的分段锁时,将所述分段锁分配给发起所述锁请求信息的线程,以使所述线程对所述分段锁对应的数据进行处理。
可选的,所述查询模块具体用于:
根据所述锁请求信息,执行如下步骤,直至查询到未被其它集群或线程占用的分段锁,或者全部分段锁被查询完毕:
根据所述集群的偏移量,查找所述偏移量对应的分段锁;
判断所述偏移量对应的分段锁是否被其它集群或线程占用;
若是,则更新所述集群的偏移量。
可选的,所述查询模块具体用于:
根据所述锁请求信息,执行如下步骤,直至查询到未被其它集群或线程占用的分段锁,或者全部分段锁被查询完毕:
根据所述集群的偏移量,查找所述偏移量对应的分段锁;
判断是否全部的分段锁对应的分片都无数据;
若是,则休眠第一预设时间;
若否,则根据所述偏移量对应的分段锁查找该分段锁对应的分片,判断所述对应的分片是否有数据:若有数据,则判断所述偏移量对应的分段锁是否被其它集群或线程占用,若被占用,则更新所述集群的偏移量。
可选的,所述获取模块还用于:
获取待存储的数据以及对应的序号;
对所述数据对应的序号进行取模运算;
根据所述取模运算的结果,确定所述数据对应的分片;
将所述数据存储在对应的分片中;
其中,每个分段锁对应一个或多个分片。
本发明还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时,实现上述任一项所述的方法。
本发明还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述任一项所述的方法。
本发明提供的数据处理方法、装置及计算机设备,通过获取集群的线程发起的锁请求信息,根据所述锁请求信息,查询是否存在未被其它集群或线程占用的分段锁,若存在未被其它集群或线程占用的分段锁,则将所述分段锁分配给发起所述锁请求信息的线程,以使所述线程对所述分段锁对应的数据进行处理,避免多个线程同时处理一段数据导致数据处理失败或出现异常,提高服务器处理能力和效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例一提供的数据处理方法的流程示意图;
图2为本发明实施例二提供的数据处理方法的流程图;
图3为本发明实施例三提供的数据处理方法中存储数据的流程图;
图4为本发明实施例四提供的数据处理装置的结构框图;
图5为本发明实施例五提供的计算机设备的示意图。
具体实施方式
为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本发明实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况中,省略对众所周知的系统、装置以及方法的详细说明,以免不必要的细节妨碍本发明的描述。
为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。
实施例一
本发明实施例一提供一种数据处理方法。图1为本发明实施例一提供的数据处理方法的流程示意图。如图1所示,本实施例中的方法,可以包括:
步骤101、获取集群的线程发起的锁请求信息。
本实施例的技术方案可以应用于互联网及数据处理的各大领域,主要核心是解决分布式环境下的数据竞争问题。
本实施例中,集群可以是指服务器集群,服务器集群中可以包括一个或多个服务器,每个服务器中可以设置有一个或多个线程。每个集群中服务器的个数可以相同,也可以不相同,例如,集群A可以仅包括一个服务器,集群B可以包括两个服务器。每个服务器中的线程个数可以相同,也可以不同。
本步骤中,获取集群的线程发起的锁请求信息,这里的线程可以是指任意集群的任意线程,所述锁请求信息用于获取分段锁。
步骤102、根据所述锁请求信息,查询是否存在未被其它集群或线程占用的分段锁。
在分布式环境下,可以将数据分成一段一段地存储,然后给每一段数据配一把分段锁,当一个线程占用分段锁访问对应的数据的时候,其他段的数据也能被其他线程访问。
具体地,在获取到线程发起的锁请求信息后,可以查询是否存在未被其它集群占用的分段锁或者未被本集群中的其它线程占用的分段锁,即是否存在未被除本线程以外的其它线程占用的分段锁。
步骤103、若存在未被其它集群或线程占用的分段锁,则将所述分段锁分配给发起所述锁请求信息的线程,以使所述线程对所述分段锁对应的数据进行处理。
具体地,查询到的未被其它集群或线程占用的分段锁可能有多个,则可以从中选择一个分配给发起锁请求信息的线程,这样,所述线程就可以占用所述分段锁对相应的数据进行处理。
或者,也可以按照一定的顺序对全部分段锁进行查询,一旦查询到存在某个未被其它集群或线程占用的分段锁,就可以将该分段锁分配给发起锁请求信息的线程,然后停止查询。
在实际应用中,在数据存储层面,可以对数据进行逻辑分片或者物理分片,集群可以使用分段锁技术路由至指定数据分片,当线程需要对数据进行处理时,各线程可以按顺序轮询负载均衡策略或其它策略获取分段锁。这样,各集群的多线程可以在各分片获取数据,解决数据竞争问题,达到数据被公平性竞争。
本实施例提供的数据处理方法,通过获取集群的线程发起的锁请求信息,根据所述锁请求信息,查询是否存在未被其它集群或线程占用的分段锁,若存在未被其它集群或线程占用的分段锁,则将所述分段锁分配给发起所述锁请求信息的线程,以使所述线程对所述分段锁对应的数据进行处理,避免多个线程同时处理一段数据导致数据处理失败或出现异常,提高服务器处理能力和效率。
实施例二
本发明实施例二提供一种数据处理方法,本实施例是在实施例一提供的技术方案的基础上,给出了一种查询可用的分段锁的具体方法。
图2为本发明实施例二提供的数据处理方法的流程图。如图2所示,本实施例中的方法,可以包括:
步骤201、获取集群的线程发起的锁请求信息。
本实施例中,步骤201的具体实现原理与实施例一中的步骤101类似,此处不再赘述。
步骤202、根据所述集群的偏移量,查找所述偏移量对应的分段锁,并执行步骤203。
为了便于针对集群分配分段锁,每个集群可以配置有偏移量,偏移量可取多个数值,所述多个数值与多个分段锁为一一对应关系。
假设共有4个分段锁:L1、L2、L3和L4,那么集群的偏移量可取的值为0、1、2、3,分别对应L1、L2、L3和L4。这样,根据集群当前的偏移量,可以查找到对应的分段锁。例如偏移量目前取值为0,则对应的分段锁为L1。
偏移量的初始值可以设置为任意一可取值,例如,可以将偏移量的初始值设置为0。
步骤203、判断是否全部的分段锁对应的分片都无数据,若是,则执行步骤204,若否,则执行步骤205。
本实施例中,一个分段锁可以对应有一个或多个分片,分片可以为数据存储空间或区间,能够用于存储待处理的数据。
步骤204、休眠第一预设时间,并重新执行步骤202。
具体地,若每个分段锁对应的分片都没有数据,说明当前没有待处理的数据,那么休眠第一预设时间,然后再重新进行查询。所述第一预设时间可以根据实际需要来设置,例如可以为2s。
步骤205、根据所述偏移量对应的分段锁查找该分段锁对应的分片,并执行步骤206。
步骤206、判断所述对应的分片是否有数据,若无数据,则执行步骤208,若有数据,则执行步骤207。
若全部分段锁中,有一个或多个分段锁对应的分片中是有数据的,那么说明当前有待处理的数据,可以进一步判断所述偏移量对应的分段锁对应的分片是否有数据,若没有数据,则执行步骤208,继续对下一个分段锁进行查询。若有数据,则可以执行步骤207,进行下一步判断。
步骤207、判断所述偏移量对应的分段锁是否被其它集群或线程占用,若是,则执行步骤208,若否,则执行步骤209。
步骤208、更新所述集群的偏移量,并重新执行步骤202。
具体地,更新所述集群的偏移量,可以是指将所述偏移量取当前值的下一个值。
可选的,若所述偏移量的取值范围为:0、1、2、……、N,则本步骤中的更新所述集群的偏移量,可以包括:
若所述偏移量的值小于N,则将所述偏移量的值加1;若所述偏移量的值等于N,则将所述偏移量的值更新为0。
步骤209、将所述分段锁分配给发起所述锁请求信息的线程,以使所述线程对所述分段锁对应的数据进行处理。
可选的,在将所述分段锁分配给发起所述锁请求信息的线程后,也可以更新所述偏移量,这样,下次再请求分段锁时直接从下一分段锁开始进行判断,提高了综合处理效率。
可选的,若所有的分段锁都被查询了一次,且都不符合要求(对应的分片没有数据或者已经占用),则休眠一定的时间后重新根据偏移量进行下一轮的查询。
下面通过简单的举例来辅助说明本实施例的具体实现流程。
依照前述假设,共有4个分段锁:L1、L2、L3和L4,集群A的偏移量可取的值为0、1、2、3,分别对应L1、L2、L3和L4,且初始偏移量为0;集群A中有两个线程:P1和P2。
线程P1发起锁请求信息,集群当前偏移量为0,对应的分段锁为L1。首先,判断是否L1、L2、L3和L4对应的分片中是否都没有数据,若是,则休眠一段时间,重新进行判断,若否,则进一步判断L1对应的分片中是否有数据,若没有,则偏移量+1,针对下一分段锁L2重新进行上述判断,若L1对应的分片中有数据,则判断所述L1是否被其它集群占用,假设L1已被集群B占用,则偏移量+1,针对下一分段锁L2重新进行上述判断,假设分段锁L2有数据且并没有被占用,那么可以将L2分配给线程P1,线程P1占用L2对其对应的分片数据进行处理,同时偏移量也可以再+1。
线程P2发起锁请求信息,集群当前偏移量为2,对应的分段锁为L3,按照类似的流程对L3进行处理,直至获取到既有数据又未被占用的分段锁。
在实际应用中,集群服务器的个数可以小于或等于分段锁的数量,以免造成一直获取不到数据的极端情况,导致机器浪费,当然,集群服务器个数也可以大于分段锁的数量,本实施例对此不作限制。
本实施例提供的数据处理方法,通过根据偏移量确定对应的分段锁,对全部和个体的分段锁对应的分片是否有数据进行查询,查询完成后判断分段锁是否被其它集群或线程占用,能够有效提高分段锁的分配效率,保证集群和线程的稳定工作。
可选的,在查询到全部分片或者某个分片是否有数据之后,可以将查询结果存储在缓存中,并保存预定的时间,例如,假设确定全部的分段锁对应的分片都没有数据,则可以在缓存中保存该结果,例如某标志位置1表示全部没有数据,然后,在所述预定的时间内,若还有线程请求分段锁,则直接从缓存中获取查询结果;或者,可以在查询到全部分片或者某个分片没有数据之后,在预设的时间内直接禁止任何线程占用对应的分段锁,有效提高查询和分配的效率。
所述预设的时间可以根据实际需要来设置,例如,可以为5s。假设全部分片都没有数据,那么5s内禁止任何线程发起锁请求信息,或者对线程发起的锁请求信息直接返回失败的指令。
可选的,在线程对分段锁对应的分片数据处理完成之后,可以解除所述线程对所述分段锁的占用,或者,将所述分段锁分配给发起线程之后,可以在经过第二预设时间后,解除对所述线程对所述分段锁的占用,保证了分段锁和线程的正常应用。
在上述各实施例提供的技术方案的基础上,优选的是,可以使用redis中的命令set(key,value,'NX','EX',seconds)实现来实现分段锁机制,从而在分布式环境中获取(占用)分段锁。
在set命令中,value表示分片编号,例如可以为1。
key可以用于表示分段锁的唯一标记即分段锁的标识信息,例如:
key为rpmatch:cluster:order:segment:0表示分段锁L1;
key为rpmatch:cluster:order:segment:1表示分段锁L2。
EX用于设置过期时间即前文所述第二预设时间,单位为second(秒),可选的,可以将EX设置为60,也就是说,分段锁被分配给一个线程占用之后,线程可以获取所述分段锁对应的数据并处理,处理的过程不能超过60s,超过之后直接解锁,该线程不能继续再对对应的数据进行处理,其它集群或线程就可以重新获取该分段锁。
NX表示线程对数据的操作属于原子性操作,如果分段锁没有被占用,则可以返回OK,表示可以将分段锁分配给发起请求的线程,反之则返回非OK。
例如,set(rpmatch:cluster:order:segment:0,1,'NX','60',seconds)可以表示分段锁标识为rpmatch:cluster:order:segment:0、过期时间为60s的命令。当有集群需要请求分段锁L1时,可以调用set命令。
每一个分段锁都可以有一个对应的set命令,在获取分段锁的过程中,可以依次调用各个分段锁对应的set命令,直到查找到未被其它线程占用的分段锁。
例如,集群A中的某线程首先调用分段锁L1对应的set命令,请求获取L1,set命令返回OK,表示可以将L1分配给集群A处理,那么集群A的该线程就可以处理L1对应的分片中的待处理数据。
集群B中的某线程首先调用分段锁L1对应的set命令,请求获取L1,但是L1已经被集群A调用了,那么集群B就继续调用分段锁L2对应的set命令,请求获取L2,L2目前没有被任何一个集群使用,则set命令返回OK,这样集群B的该线程就可以对L2对应的数据进行处理。
当然,除了set命令以外,也可以用其它的方式实现分段锁的设置,此处不作限制。
实施例三
本发明实施例三提供一种数据处理方法,本实施例是在上述任一实施例提供的技术方案的基础上,给出了一种基于分片的数据存储的具体流程。
图3为本发明实施例三提供的数据处理方法中存储数据的流程图。如图3所示,本实施例中存储数据的流程可以包括:
步骤301、获取待存储的数据以及对应的序号。
具体地,每段数据都可以有其对应的序号,各段数据的序号可以按照获取的顺序依次增加,例如当前获取到的数据的序号为7,那么下一段被获取的数据的序号可以为8。
步骤302、对所述数据对应的序号进行取模运算。
步骤303、根据所述取模运算的结果,确定所述数据对应的分片。
步骤304、将所述数据存储在对应的分片中。
具体地,在取模运算时,可以将所述序号对分片数进行取模,例如,共有8个分片,则将所述序号对8取模,并将数据存储在运算结果对应的分片中。序号1对8取模,得到结果为1,那么对应的数据存储在分片1中,序号10对8取模,得到的结果为2,则对应的数据存储在分片2中。
本实施例提供的数据处理方法,可以在插入源头使用贪心算法均匀地对数据进行存储,进一步提高数据处理效率。
当然,在实际应用中,还可以通过其它方式实现数据的存储,只要保证数据能够被均衡地存储在各个分片中即可。
在上述各实施例提供的技术方案的基础上,优选的是,可以使用CopyOnWriteArrayList集合,存储各分片对应的分段锁。
分段锁与分片的对应关系可以是每个分段锁对应一个或多个分片。例如,共有2个分段锁、8个分片,则每个分段锁可以对应4个分片,具体对应关系可以参照如下数据模型,如下数据模型表示分段锁L1对应分片0、1、2、3,分段锁L2对应分片4、5、6、7:
[{
"segmentLock":"rpmatch:cluster:order:segment:0",
"shardIdList":[0,1,2,3]
},{
"segmentLock":"rpmatch:cluster:order:segment:1",
"shardIdList":[4,5,6,7]
}]
可选的,可以使用行业中的配置中心来做配置,分段锁、分片等的关联关系都可以保存在配置中心,配置中心支持实时修改数据,分段锁的信息、分片数量等都可以通过配置中心来修改。
集群可以通过配置中心获取上述关联关系并保存在本地,如果关联关系发生变动,那么本地可以通过配置中心更新关联关系。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
实施例四
本发明实施例四提供一种数据处理装置。图4为本发明实施例四提供的数据处理装置的结构框图。如图4所示,本实施例中的装置,可以包括:
获取模块401,用于获取集群的线程发起的锁请求信息;
查询模块402,用于根据所述锁请求信息,查询是否存在未被其它集群或线程占用的分段锁;
分配模块403,用于在存在未被其它集群或线程占用的分段锁时,将所述分段锁分配给发起所述锁请求信息的线程,以使所述线程对所述分段锁对应的数据进行处理。
本实施例中的数据处理装置,可以用于执行上述任一实施例所述的数据处理方法,其具体实现原理可以参见上述任一实施例,此处不再赘述。
本实施例提供的数据处理装置,通过获取集群的线程发起的锁请求信息,根据所述锁请求信息,查询是否存在未被其它集群或线程占用的分段锁,若存在未被其它集群或线程占用的分段锁,则将所述分段锁分配给发起所述锁请求信息的线程,以使所述线程对所述分段锁对应的数据进行处理,避免多个线程同时处理一段数据导致数据处理失败或出现异常,提高服务器处理能力和效率。
可选的,所述查询模块402具体可以用于:
根据所述锁请求信息,执行如下步骤,直至查询到未被其它集群或线程占用的分段锁,或者全部分段锁被查询完毕:
根据所述集群的偏移量,查找所述偏移量对应的分段锁;
判断所述偏移量对应的分段锁是否被其它集群或线程占用;
若是,则更新所述集群的偏移量。
可选的,所述查询模块402具体可以用于:
根据所述锁请求信息,执行如下步骤,直至查询到未被其它集群或线程占用的分段锁,或者全部分段锁被查询完毕:
根据所述集群的偏移量,查找所述偏移量对应的分段锁;
判断是否全部的分段锁对应的分片都无数据;
若是,则休眠第一预设时间;
若否,则根据所述偏移量对应的分段锁查找该分段锁对应的分片,判断所述对应的分片是否有数据:若有数据,则判断所述偏移量对应的分段锁是否被其它集群或线程占用,若被占用,则更新所述集群的偏移量。
可选的,所述获取模块401还可以用于:
获取待存储的数据以及对应的序号;
对所述数据对应的序号进行取模运算;
根据所述取模运算的结果,确定所述数据对应的分片;
将所述数据存储在对应的分片中;
其中,每个分段锁对应一个或多个分片。
实施例五
本发明实施例五提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时,实现上述任一实施例所述的数据处理方法。
图5为本发明实施例五提供的计算机设备的示意图。如图5所示,该实施例的计算机设备5包括:处理器50、存储器51以及存储在所述存储器51中并可在所述处理器50上运行的计算机程序52,例如数据处理程序。所述处理器50执行所述计算机程序52时实现上述各个数据处理方法实施例中的步骤,例如图1所示的步骤101至103。或者,所述处理器50执行所述计算机程序52时实现上述各装置实施例中各模块/单元的功能,例如图4所示模块401至403的功能。
示例性的,所述计算机程序52可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器51中,并由所述处理器50执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序52在所述计算机设备5中的执行过程。
所述计算机设备5可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述计算机设备5可包括,但不仅限于,处理器50、存储器51。本领域技术人员可以理解,图5仅仅是计算机设备5的示例,并不构成对计算机设备5的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述计算机设备还可以包括输入输出设备、网络接入设备、总线等。
所述处理器50可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器51可以是所述计算机设备5的内部存储单元,例如计算机设备5的硬盘或内存。所述存储器51也可以是所述计算机设备5的外部存储设备,例如所述计算机设备5上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器51还可以既包括所述计算机设备5的内部存储单元也包括外部存储设备。所述存储器51用于存储所述计算机程序以及所述计算机设备所需的其他程序和数据。所述存储器51还可以用于暂时地存储已经输出或者将要输出的数据。
本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述任一实施例所述的数据处理方法。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。
就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。如,如果用硬件来实现和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种数据处理方法,其特征在于,包括:
获取集群的线程发起的锁请求信息;
根据所述锁请求信息,查询是否存在未被其它集群或线程占用的分段锁;
若存在未被其它集群或线程占用的分段锁,则将所述分段锁分配给发起所述锁请求信息的线程,以使所述线程对所述分段锁对应的数据进行处理。
2.如权利要求1所述的方法,其特征在于,根据所述锁请求信息,查询是否存在未被其它集群或线程占用的分段锁,包括:
根据所述锁请求信息,执行如下步骤,直至查询到未被其它集群或线程占用的分段锁,或者全部分段锁被查询完毕:
根据所述集群的偏移量,查找所述偏移量对应的分段锁;
判断所述偏移量对应的分段锁是否被其它集群或线程占用;
若是,则更新所述集群的偏移量。
3.如权利要求2所述的方法,其特征在于,判断所述偏移量对应的分段锁是否被其它集群或线程占用,包括:
判断是否全部的分段锁对应的分片都无数据;
若是,则休眠第一预设时间;
若否,则根据所述偏移量对应的分段锁查找该分段锁对应的分片,判断所述对应的分片是否有数据,若有数据,则判断所述偏移量对应的分段锁是否被其它集群或线程占用。
4.如权利要求1-3任一项所述的方法,其特征在于,还包括:
获取待存储的数据以及对应的序号;
对所述数据对应的序号进行取模运算;
根据所述取模运算的结果,确定所述数据对应的分片;
将所述数据存储在对应的分片中;
其中,每个分段锁对应一个或多个分片。
5.一种数据处理装置,其特征在于,包括:
获取模块,用于获取集群的线程发起的锁请求信息;
查询模块,用于根据所述锁请求信息,查询是否存在未被其它集群或线程占用的分段锁;
分配模块,用于在存在未被其它集群或线程占用的分段锁时,将所述分段锁分配给发起所述锁请求信息的线程,以使所述线程对所述分段锁对应的数据进行处理。
6.如权利要求5所述的装置,其特征在于,所述查询模块具体用于:
根据所述锁请求信息,执行如下步骤,直至查询到未被其它集群或线程占用的分段锁,或者全部分段锁被查询完毕:
根据所述集群的偏移量,查找所述偏移量对应的分段锁;
判断所述偏移量对应的分段锁是否被其它集群或线程占用;
若是,则更新所述集群的偏移量。
7.如权利要求5所述的装置,其特征在于,所述查询模块具体用于:
根据所述锁请求信息,执行如下步骤,直至查询到未被其它集群或线程占用的分段锁,或者全部分段锁被查询完毕:
根据所述集群的偏移量,查找所述偏移量对应的分段锁;
判断是否全部的分段锁对应的分片都无数据;
若是,则休眠第一预设时间;
若否,则根据所述偏移量对应的分段锁查找该分段锁对应的分片,判断所述对应的分片是否有数据:若有数据,则判断所述偏移量对应的分段锁是否被其它集群或线程占用,若被占用,则更新所述集群的偏移量。
8.如权利要求5-7任一项所述的装置,其特征在于,所述获取模块还用于:
获取待存储的数据以及对应的序号;
对所述数据对应的序号进行取模运算;
根据所述取模运算的结果,确定所述数据对应的分片;
将所述数据存储在对应的分片中;
其中,每个分段锁对应一个或多个分片。
9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时,实现如权利要求1-4中任一项所述的方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-4中任一项所述的方法。
CN201810710519.7A 2018-07-02 2018-07-02 数据处理方法、装置及计算机设备 Active CN109117189B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810710519.7A CN109117189B (zh) 2018-07-02 2018-07-02 数据处理方法、装置及计算机设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810710519.7A CN109117189B (zh) 2018-07-02 2018-07-02 数据处理方法、装置及计算机设备

Publications (2)

Publication Number Publication Date
CN109117189A true CN109117189A (zh) 2019-01-01
CN109117189B CN109117189B (zh) 2021-06-08

Family

ID=64822469

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810710519.7A Active CN109117189B (zh) 2018-07-02 2018-07-02 数据处理方法、装置及计算机设备

Country Status (1)

Country Link
CN (1) CN109117189B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111858729A (zh) * 2020-07-01 2020-10-30 合肥森亿智能科技有限公司 数据关联方法、系统以及终端
CN112380026A (zh) * 2021-01-13 2021-02-19 常州微亿智造科技有限公司 任务处理方法、装置和存储介质
CN113010533A (zh) * 2021-03-01 2021-06-22 上海钧正网络科技有限公司 基于加锁限制的数据库访问方法、系统、终端及存储介质

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090307466A1 (en) * 2008-06-10 2009-12-10 Eric Lawrence Barsness Resource Sharing Techniques in a Parallel Processing Computing System
CN103678122A (zh) * 2013-11-29 2014-03-26 华为技术有限公司 一种死锁检测方法、设备及系统
CN105224255A (zh) * 2015-10-14 2016-01-06 浪潮(北京)电子信息产业有限公司 一种存储文件管理方法及装置
CN106095832A (zh) * 2016-06-01 2016-11-09 东软集团股份有限公司 分布式并行数据处理方法以及装置
CN107508901A (zh) * 2017-09-04 2017-12-22 北京京东尚科信息技术有限公司 分布式数据处理方法、装置、服务器和系统
CN107688500A (zh) * 2017-07-26 2018-02-13 阿里巴巴集团控股有限公司 一种分布式任务处理方法、装置、系统及设备
CN107977376A (zh) * 2016-10-24 2018-05-01 腾讯科技(深圳)有限公司 分布式数据库系统及事务处理方法
CN108111527A (zh) * 2017-12-29 2018-06-01 深圳市艾特智能科技有限公司 智能家居客户端访问请求处理方法、系统、存储介质及计算机设备

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090307466A1 (en) * 2008-06-10 2009-12-10 Eric Lawrence Barsness Resource Sharing Techniques in a Parallel Processing Computing System
CN103678122A (zh) * 2013-11-29 2014-03-26 华为技术有限公司 一种死锁检测方法、设备及系统
CN105224255A (zh) * 2015-10-14 2016-01-06 浪潮(北京)电子信息产业有限公司 一种存储文件管理方法及装置
CN106095832A (zh) * 2016-06-01 2016-11-09 东软集团股份有限公司 分布式并行数据处理方法以及装置
CN107977376A (zh) * 2016-10-24 2018-05-01 腾讯科技(深圳)有限公司 分布式数据库系统及事务处理方法
CN107688500A (zh) * 2017-07-26 2018-02-13 阿里巴巴集团控股有限公司 一种分布式任务处理方法、装置、系统及设备
CN107508901A (zh) * 2017-09-04 2017-12-22 北京京东尚科信息技术有限公司 分布式数据处理方法、装置、服务器和系统
CN108111527A (zh) * 2017-12-29 2018-06-01 深圳市艾特智能科技有限公司 智能家居客户端访问请求处理方法、系统、存储介质及计算机设备

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111858729A (zh) * 2020-07-01 2020-10-30 合肥森亿智能科技有限公司 数据关联方法、系统以及终端
CN112380026A (zh) * 2021-01-13 2021-02-19 常州微亿智造科技有限公司 任务处理方法、装置和存储介质
CN113010533A (zh) * 2021-03-01 2021-06-22 上海钧正网络科技有限公司 基于加锁限制的数据库访问方法、系统、终端及存储介质

Also Published As

Publication number Publication date
CN109117189B (zh) 2021-06-08

Similar Documents

Publication Publication Date Title
US7159220B2 (en) Flexible acceleration of java thread synchronization on multiprocessor computers
US9753854B1 (en) Memory controller load balancing with configurable striping domains
US8954986B2 (en) Systems and methods for data-parallel processing
JP3444505B2 (ja) スケジューリング装置及び方法
US7080375B2 (en) Parallel dispatch wait signaling method, method for reducing contention of highly contended dispatcher lock, and related operating systems, multiprocessor computer systems and products
US20070124728A1 (en) Passing work between threads
US20110265098A1 (en) Message Passing with Queues and Channels
EP3552108B1 (en) Apparatuses and methods for a processor architecture
US20060143415A1 (en) Managing shared memory access
US20040243738A1 (en) Method for asynchronous DMA command completion notification
US10579413B2 (en) Efficient task scheduling using a locking mechanism
CN109117189A (zh) 数据处理方法、装置及计算机设备
US7089555B2 (en) Ordered semaphore management subsystem
CN104254839B (zh) 用于分割单链表以供分配存储器元素的系统和方法
CN103729238B (zh) 管理对在多个处理器间共享的资源的锁的方法和系统
US20180293114A1 (en) Managing fairness for lock and unlock operations using operation prioritization
Lev et al. Scalable reader-writer locks
CN107729267A (zh) 资源的分散分配以及用于支持由多个引擎执行指令序列的互连结构
Das et al. Thread cooperation in multicore architectures for frequency counting over multiple data streams
López-Ortiz et al. Paging for multi-core shared caches
JP7346649B2 (ja) 同期制御システムおよび同期制御方法
CN103649931B (zh) 用于支持由多个引擎执行指令序列的互连结构
Zhang et al. Cache matching: thread scheduling to maximize data reuse
CN106572036A (zh) 一种套接字缓存skb管理方法及装置
CN116755868B (zh) 任务处理系统及方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant