CN110516121A - 数据读取方法及装置 - Google Patents
数据读取方法及装置 Download PDFInfo
- Publication number
- CN110516121A CN110516121A CN201910800736.XA CN201910800736A CN110516121A CN 110516121 A CN110516121 A CN 110516121A CN 201910800736 A CN201910800736 A CN 201910800736A CN 110516121 A CN110516121 A CN 110516121A
- Authority
- CN
- China
- Prior art keywords
- back end
- hash bucket
- allocated
- node
- hash
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9014—Indexing; Data structures therefor; Storage structures hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5072—Grid computing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种数据读取方法及装置,该方法包括:确定当前网络中各个待分配哈希桶和预先注册的各个数据节点;其中,每个所述数据节点与待读取业务对应,所述待读取业务包括多份业务数据,所述业务数据和所述待分配哈希桶一一对应;将各个所述待分配哈希桶按预设的分配规则分配至当前网络中的每个所述数据节点,使每个所述数据节点依据分配得到的每个哈希桶的哈希函数,读取每个所述哈希桶所对应的业务数据。应用本发明提供的数据读取方法,为各个数据节点分配哈希桶,使每个数据节点依据分配得到的哈希桶的哈希函数读取哈希桶对应的业务数据,实现多个数据节点并行读取同一业务数据,加快业务数据读取的速度,从而提高业务处理效率。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种数据读取方法及装置。
背景技术
随着互联网技术的快速发展,越来越多的应用系统采用多节点的业务处理框架读取业务数据,并对读取到的业务数据进行处理,以实现同时处理多个业务。
现有数据读取方法中,针对每一个业务,当有节点想要读取该业务的数据时,若该业务没有加锁,则该节点可以直接读取该业务的数据,并将该业务加锁,若该业务已经加锁,则该节点无法读取业务的数据。应用现有数据读取方法,同一业务在同一时间只能被同一节点读取,数据读取的速度较慢,从而降低业务处理的效率。
发明内容
本发明所要解决的技术问题是提供一种数据读取方法,能够实现多节点无锁并行读取同一业务数据,加快业务数据读取的速度,从而提高业务处理效率。
本发明还提供了一种数据读取装置,用于保证上述方法在实际中的实现及应用。
一种数据读取方法,包括:
确定当前网络中各个待分配哈希桶和预先注册的各个数据节点;其中,每个所述数据节点与待读取业务对应,所述待读取业务包括多份业务数据,所述业务数据和所述待分配哈希桶一一对应;
将各个所述待分配哈希桶按预设的分配规则分配至当前网络中的每个所述数据节点,使每个所述数据节点依据分配得到的每个哈希桶的哈希函数,读取每个所述哈希桶所对应的业务数据。
上述的方法,可选的,所述将各个所述待分配哈希桶按预设的分配规则分配至每个所述数据节点之后,还包括:
当监听到新的数据节点加入所述网络时,若所述新的数据节点的配置参数表征读取所述待读取业务,则确定当前网络中每个数据节点的目标分配数量;
针对已被分配哈希桶的每个数据节点,判断所述数据节点分配得到的哈希桶的数量是否大于所述目标分配数量,若大于,则触发所述数据节点释放与第一数值对应的哈希桶,并将每个所释放的哈希桶作为待分配哈希桶;其中,所述第一数值为所述数据节点分配得到的哈希桶的数量与所述目标分配数量的差值;
将各个所述待分配哈希桶按预设的分配规则分配至当前网络中的每个所述数据节点。
上述的方法,可选的,还包括:
在预设的检测时刻,获取预设的节点注册表中与每个数据节点对应的心跳时间;其中,每个所述心跳时间表征与其对应的数据节点最近一次活动的时间;
针对每个所述数据节点,判断所述数据节点对应的心跳时间和所述检测时刻之间的时间差是否大于预设的时间间隔,若大于,则回收所述数据节点分配得到的所有哈希桶,并将所回收的每个哈希桶作为待分配哈希桶,并注销所述数据节点;
将各个所述待分配哈希桶按预设的分配规则分配至当前网络中的每个所述数据节点。
上述的方法,可选的,所述将各个所述待分配哈希桶按预设的分配规则分配至当前网络中的每个所述数据节点,包括:
从当前网络中的多个所述数据节点中确定出至少一个待分配节点;其中,所述待分配节点为所述数据节点中包含分配得到的哈希桶的数量最少的数据节点;
为每个所述待分配节点分配一个所述待分配哈希桶;
判断是否存在待分配哈希桶,若存在,返回执行所述从当前网络中的多个所述数据节点中确定出至少一个待分配节点的步骤,直至完成所有所述待分配哈希桶的分配。
上述的方法,可选的,每个所述数据节点的注册过程,包括:
判断是否存在未分配的节点ID;
若存在未分配的节点ID,从所述未分配的节点ID中选取一个节点ID分配至所述数据节点,并将已分配至所述数据节点的节点ID写入至所述节点注册表中;
当已分配至所述数据节点的节点ID成功写入至所述节点注册表时,完成对所述数据节点的注册。
一种数据读取装置,包括:
确定单元,用于确定当前网络中各个待分配哈希桶和预先注册的各个数据节点;其中,每个所述数据节点与待读取业务对应,所述待读取业务包括多份业务数据,所述业务数据和所述待分配哈希桶一一对应;
第一分配单元,用于将各个所述待分配哈希桶按预设的分配规则分配至当前网络中的每个所述数据节点,使每个所述数据节点依据分配得到的每个哈希桶的哈希函数,读取每个所述哈希桶所对应的业务数据。
上述的装置,可选的,还包括:
监听单元,用于当监听到新的数据节点加入所述网络时,若所述新的数据节点的配置参数表征读取所述待读取业务,则确定当前网络中每个数据节点的目标分配数量;
第一释放单元,用于针对已被分配哈希桶的每个数据节点,判断所述数据节点分配得到的哈希桶的数量是否大于所述目标分配数量,若大于,则触发所述数据节点释放与第一数值对应的哈希桶,并将每个所释放的哈希桶作为待分配哈希桶;其中,所述第一数值为所述数据节点分配得到的哈希桶的数量与所述目标分配数量的差值;
第二分配单元,用于将各个所述待分配哈希桶按预设的分配规则分配至当前网络中的每个所述数据节点。
上述的装置,可选的,还包括:
获取单元,用于在预设的检测时刻,获取预设的节点注册表中与每个数据节点对应的心跳时间;其中,每个所述心跳时间表征与其对应的数据节点最近一次活动的时间;
第二释放单元,用于针对每个所述数据节点,判断所述数据节点对应的心跳时间和所述检测时刻之间的时间差是否大于预设的时间间隔,若大于,则回收所述数据节点分配得到的所有哈希桶,并将所回收的每个哈希桶作为待分配哈希桶,并注销所述数据节点;
第三分配单元,用于将各个所述待分配哈希桶按预设的分配规则分配至当前网络中的每个所述数据节点。
上述的装置,可选的,所述第一分配单元,包括:
确定子单元,用于从当前网络中的多个所述数据节点中确定出至少一个待分配节点;其中,所述待分配节点为所述数据节点中包含分配得到的哈希桶的数量最少的数据节点;
分配子单元,用于为每个所述待分配节点分配一个所述待分配哈希桶;
返回子单元,用于判断是否存在待分配哈希桶,若存在,返回执行所述从当前网络中的多个所述数据节点中确定出至少一个待分配节点的步骤,直至完成所有所述待分配哈希桶的分配。
上述的装置,可选的,所述确定单元,包括:
判断子单元,用于判断是否存在未分配的节点ID;
选取子单元,用于若存在未分配的节点ID,从所述未分配的节点ID中选取一个节点ID分配至所述数据节点,并将已分配至所述数据节点的节点ID写入至所述节点注册表中;
结束子单元,用于当已分配至所述数据节点的节点ID成功写入至所述节点注册表时,完成对所述数据节点的注册。
一种存储介质,所述存储介质包括存储的指令,其中,在所述指令运行时控制所述存储介质所在的设备执行上述的数据读取方法。
一种电子设备,包括存储器,以及一个或者一个以上的指令,其中一个或者一个以上指令存储于存储器中,且经配置以由一个或者一个以上处理器执行上述的数据读取方法。
与现有技术相比,本发明包括以下优点:
本发明提供了一种数据读取方法,包括:确定当前网络中各个待分配哈希桶和预先注册的各个数据节点;其中,每个所述数据节点与待读取业务对应,所述待读取业务包括多份业务数据,所述业务数据和所述待分配哈希桶一一对应;将各个所述待分配哈希桶按预设的分配规则分配至当前网络中的每个所述数据节点,使每个所述数据节点依据分配得到的每个哈希桶的哈希函数,读取每个所述哈希桶所对应的业务数据。应用本发明提供的数据读取方法,为各个数据节点分配哈希桶,使每个数据节点依据分配得到的哈希桶的哈希函数读取哈希桶对应的业务数据,实现多个数据节点无锁并行读取业务数据,加快业务数据读取的速度,从而提高业务处理效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明提供的一种数据读取方法的方法流程图;
图2为本发明提供的一种数据读取方法的又一方法流程图;
图3为本发明提供的一种数据读取方法的又一方法流程图;
图4为本发明提供的一种数据读取方法的又一方法流程图;
图5为本发明提供的一种数据读取方法的又一方法流程图;
图6为本发明提供的一种数据读取装置的结构示意图;
图7为本发明提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供了一种数据读取方法,该方法可以应用在多种系统平台,其执行主体可以为运行在数据节点上的统一分配器,所述数据读取方法的流程图如图1所示,具体包括:
S101:确定当前网络中各个待分配哈希桶和预先注册的各个数据节点。
本发明实施例提供的方法中,数据节点启动完毕后调用统一分配器,完成统一分配器的启动,统一分配器存放在已启动的数据节点上,并保证各个数据节点上的统一分配器只有一台统一分配器生效,生效的统一分配器对应的数据节点如果停止运行,则使其他正在运行的数据节点中的某一个数据节点上的统一分配器生效。
本发明实施例提供的方法中,确定当前网络中各个待分配哈希桶和预先注册的各个数据节点,其中,每个数据节点与待读取业务对应,每个待读取业务对应一套数量固定的待分配哈希桶,可选的,待分配哈希桶的数量可以是20个,依据预设的哈希函数,对待读取业务进行哈希计算,以将待读取业务对应的每份业务数据对应到每个待分配哈希桶,可选的,预设的哈希函数为oracle的ORA_HASH函数,例如,通过ora_hash(task_seqno,19),实现将待读取业务task_seqno的业务数据平均分成20份,每一份业务数据对应一个哈希桶,其中,哈希桶的编号为0-19。
需要说明的是,当前网络中存在的各个数据节点并不都是该待读取业务对应的业务节点,也就是说,可能存在部分数据节点的配置参数表征不读取该待读取业务,当数据节点的配置参数表征不读取该待读取业务时,该数据节点与待读取业务不对应,也就是说,本发明所确定的数据节点为与待读取业务对应的数据节点。
S102:将各个待分配哈希桶按预设的分配规则分配至当前网络中的每个数据节点,使每个数据节点依据分配得到的每个哈希桶的哈希函数,读取每个哈希桶所对应的业务数据。
本发明实施例提供的方法中,将各个待分配哈希桶按预设的分配规则分配至当前网络中的每个数据节点,使每个数据节点分配的得到的哈希桶的数量相对平均,例如,待分配哈希桶有20个,当前网络中与待读取业务对应的数据节点的数量为5个,那么每个数据节点分配得到的哈希桶的数量为4个;若当前网络中与待读取业务对应的数据节点的数量为4个,那么每个数据节点分配得到的哈希桶的数量为5个。
将各个待分配哈希桶分配至各个数据节点,使每个数据节点依据分配得到的每个哈希桶的哈希函数,读取每个哈系统所对应的业务数据,例如,待分配哈希桶为20个,当前网络中与待读取业务对应的数据节点为5个,分别为数据节点1-5,数据节点1分配得到的哈希桶的编号为0、1、2、3,那么数据节点可以通过语句Select*from tasklog where ora_hash(task_seqno,19)in(0,1,2,3)读取哈希桶编号为0、1、2和3的哈希桶所对应的业务数据,其他数据节点读取分配至自身的哈希桶所对应的业务数据与数据节点1读取业务数据的过程相类似,此处不再赘述;需要说明的是,每个数据节点可以分别依据分配得到的每个哈希桶对应的哈希函数读取哈希桶对应的业务数据,也可以依据分配得到的所有哈希桶的哈希函数,通过一条语句,直接读取各个哈希桶对应的业务数据,即,对于数据节点1,可以依据语句Select*from tasklog where ora_hash(task_seqno,19)in(0)、Select*fromtasklog where ora_hash(task_seqno,19)in(1)、Select*from tasklog where ora_hash(task_seqno,19)in(2)和Select*from tasklog where ora_hash(task_seqno,19)in(3)分别读取编号为0-3的哈希桶所对应的业务数据,也可以依据Select*from tasklog whereora_hash(task_seqno,19)in(0,1,2,3)直接读取编号为0-3的哈希桶所对应的业务数据。
本发明实施例提供的数据读取方法,确定当前网络中与待读取业务对应的各个预先注册的数据节点,以及确定当前网络中与待读取业务对应的各个待分配哈希桶,将各个待分配哈希桶按照预设的分配规则分配至当前网络中的各个数据节点,使每个数据节点依据分配得到的每个哈希桶的哈希函数,读取每个哈希桶对应的业务数据。应用本发明实施例提供的数据读取方法,在待读取业务不加锁时,为各个数据节点分配哈希桶,使每个数据节点依据分配得到的哈希桶的哈希函数读取哈希桶对应的业务数据,实现多个数据节点无锁并行读取业务数据,加快业务数据读取的速度,从而提高业务处理效率。
上述本发明实施例图1公开的步骤S102涉及的将各个待分配哈希桶按照预设的分配规则分配至当前网络中的每个所述数据节点,流程图如图2所示,具体可以包括以下步骤:
S201:从当前网络中的多个数据节点中确定出至少一个待分配节点。
本发明实施例提供的方法中,哈希桶的分配是一个循环分配的过程,首先从当前网络中的多个数据节点中确定出至少一个待分配节点,所确定的待分配节点为当前网络中与待读取业务对应的所有数据节点中包含分配得到的哈希桶的数量最少的数据节点,例如当前网络中存在3个数据节点,数据节点1至数据节点3,数据节点1当前包含分配得到的哈希桶的数量为1,数据节点2包含分配得到的哈希桶的数量为2,数据节点3当前包含分配得到的哈希桶的数量为0,则所确定的待分配节点为数据节点3。
S202:为每个所述待分配节点分配一个待分配哈希桶。
本发明实施例提供的方法中,为所确定的待分配节点分配一个待分配哈希桶,即每次只为所确定的每个待分配节点分配一个待分配哈希桶,需要说明的是,若当前所确定的待分配节点为多个,则依据每个待分配节点的编号一次为每个待分配节点分配一个待分配哈希桶,其中,待分配节点的编号为与其对应的数据节点的编号,可选的,数据节点的编号可以依据各个数据节点加入网络中的先后顺序所确定,也可以随机确定。
S203:判断是否存在待分配哈希桶。
本发明实施例提供的方法中,在每轮为每个待分配节点分配待分配哈希桶后,判断当前是否存在待分配哈希桶,即判断是否还有待分配哈希桶未被分配,若存在待分配哈希桶,则返回执行S201,若没有待分配哈希桶,则直接结束。
对上述提及的将各个待分配哈希桶按照预设的分配规则分配至当前网络中的每个所述数据节点进行举例说明如下:
当前网络中存在3个数据节点,分别是数据节点1、数据节点2和数据节点3,当前网络中存在6个待分配哈希桶,待分配哈希桶的编号为3-8,其中,数据节点1已分配得到编号为0的哈希桶,数据节点2已分配得到编号为1和2的两个哈希桶,数据节点3还未被分配哈希桶。
将各个待分配哈希桶按照预设的分配规则分配至当前网络中的每个所述数据节点具体为:首先确定待分配节点为数据节点3,为数据节3分配编号为3的待分配哈希桶,因为还存在待分配哈希桶,再次确定待分配节点为数据节点1和数据节点3,为数据节点1分配编号为4的待分配哈希桶,为数据节点3分配编号为5的待分配哈希桶,因为还存在待分配哈希桶,再次确定待分配节点为数据节点1、数据节点2和数据节点3,为数据节点1分配编号为6的待分配哈希桶,为数据节点2分配编号为7的待分配哈希桶,为数据节点3分配编号为8的待分配哈希桶,此时,所有的待分配哈希桶已全部分配,结束对待分配哈希桶的分配。
本发明实施例提供的数据读取方法中,从当前网络中的多个数据节点中确定出至少一个待分配节点,为每个待分配节点分配一个待分配哈希桶,判断是否存在待分配哈希桶,若存在,则继续上述的确定待分配节点并未待分配节点分配待分配哈希桶的过程,直至完成所有待分配哈希桶的分配,即通过循环分配待分配哈希桶,第一次为0个哈希桶的数据节点分配待分配哈希桶,第二次为1个哈希桶的数据节点分配待分配哈希桶,第三次为2和哈希桶的数据节点分配哈希桶,以此类推,直至完成所有待分配哈希桶的分配。应用本发明实施例提供的数据读取方法,通过循环分配哈希桶,使得每个数据节点分配得到的哈希桶相对平均,实现负载均衡。
上述本发明实施例图1公开的步骤S102涉及到的将各个待分配哈希桶按预设的分配规则分配至每个数据节点之后,如图3所示,包括以下步骤:
S301:当监听到新的数据节点加入网络时,若新的数据节点的配置参数表征读取待读取业务,则确定当前网络中每个数据节点的目标分配数量。
本发明实施例提供的方法中,当监听到新的数据节点加入网络时,若新的数据节点的配置参数被配置为可以读取该待读取业务,则确定当前网络中的各个数据节点的目标分配数量,需要说明的是,当前网络中的各个数据节点包括新的数据节点,确定当前网络中的各个数据节点的目标分配数量包括:确定待读取业务对应的哈希桶的数量,并确定当前网络中的数据节点的数量,依据待读取业务对应的哈希桶的数量和当前网络中的数据节点的数量,确定当前网络中每个数据节点的目标分配数量。
对确定当前网络中每个数据节点的目标分配数量进行举例说明如下:
待读取业务对应的哈希桶的数量为20个,在新的数据节点加入网络后,网络中的数据节点的数量为5个,则每个数据节点的目标分配数量为4。
需要说明的是,网络中每个数据节点的目标分配数量随着当前网络中的数据节点的数量变化而变化。
S302:针对已被分配哈希桶的每个数据节点,判断数据节点分配得到的哈希桶的数量是否大于目标分配数量,若大于,则触发数据节点释放与第一数值对应的哈希桶,并将每个所释放的哈希桶作为待分配哈希桶。
本发明实施例提供的方法中,针对已被分配哈希桶的每个数据节点,将该数据节点已分配得到的哈希桶的数量和目标分配数量进行比对,若数据节点分配得到的哈希桶的数量大于目标分配数量,则表征该数据节点需要释放部分哈希桶,并触发数据节点释放第一数值对应的哈希桶,第一数值为数据节点分配得到的哈希桶的数量和目标分配数量之间的差值,也就是说,触发数据节点将大于目标分配数量的哈希桶进行释放,并将已释放的哈希桶作为待分配哈希桶。例如,若数据节点1已被分配的哈希桶有5个,在新的数据节点加入网络后,网络中每个数据节点的目标分配数量为4个,则数据节点1需要释放掉1个哈希桶。
若数据节点分配得到的哈希桶的数量不大于目标分配数量,则表征该数据节点不需要释放哈希桶。
S303:将各个待分配哈希桶按预设的分配规则分配至当前网络中的每个数据节点。
本发明实施例提供的方法中,在完成对所有已被分配哈希桶的每个数据节点的判断后,将各个待分配哈希桶按预设的分配规则分配至当前网络中的每个数据节点,其中,将各个待分配哈希桶按预设分配规则分配至当前网络中的每个数据节点的具体过程同实施例图2公开的步骤所述,此处不再赘述。
本发明实施例提供的数据读取方法,当有新的数据节点加入网络时,若该数据节点的配置参数表征读取该待读取业务参数时,依据当前网络中的数据节点的数量,和待读取业务对应的哈希桶的数量,确定每个数据节点的目标分配数量,针对已被分配哈希桶的每个数据节点,若该数据节点分配得到的哈希桶的数量大于目标分配数量,则触发该数据节点将大于目标分配数量的哈希桶进行释放,并将所述释放的哈希桶作为待分配哈希桶,当所有的已被分配哈希桶的数据节点均已判断完成,则将各个待分配哈希桶按预设的分配规则分配至当前网络中的每个数据节点,应用本发明实施例提供的方法,在新的数据节点加入网络后,触发已分配哈希桶的数据节点释放部分哈希桶,并将所释放的哈希桶进行重分配,以使网络中的每个数据节点多分配得到的哈希桶较为平均,实现负载均衡。
上述本发明实施例图1公开的步骤,如图4所示,还包括以下步骤:
S401:在预设的检测时刻,获取预设的节点注册表中与每个数据节点对应的心跳时间。
本发明实施例提供的方法中,定期检测预设节点注册表中与每个数据节点对应的心跳时间,即在预设的检测时刻,获得预设的节点注册表中与每个数据节点对应的心跳时间,其中,节点注册表中的心跳时间是每个数据节点定期依据自身最近一次活动的时间所更新的,也就是说,若数据节点一直在活动,则节点注册表中相应的与该数据节点对应的心跳时间也一直在更新,则数据节点停止活动,则节点注册表中相应的与该数据节点对应的心跳时间也停止更新。
S402:针对每个数据节点,若数据节点对应的心跳时间和检测时刻之间的时间差大于预设的时间阈值,则回收数据节点分配得到的所有哈希桶,并将所回收的哈希桶作为待分配哈希桶,以及注销该数据节点。
本发明实施例提供的方法中,针对每个数据节点,判断该数据节点对应的心跳时间和检测时刻之间的时间差是否大于预设的时间阈值,若该数据节点对应的心跳时间和检测时刻之间的时间差大于时间阈值,则说明该数据节点已经停止工作,并回收该数据节点分配得到的所有哈希桶和节点ID,并将所回收的哈希桶作为待分配哈希桶,将所回收的节点ID作为待分配的节点ID若该数据节点对应的心跳时间和检测时刻之间的时间差不大于时间阈值,则说明该数据节点仍在正常运行中,则不对该数据节点进行处理。
S403:将各个待分配哈希桶按预设分配规则分配至当前网络中的每个数据节点。
本发明实施例提供的方法中,若完成对所有数据节点的判断,则将各个待分配哈希桶按预设分配规则分配至当前网络过中的每个数据节点,其中,将各个待分配哈希桶按预设分配规则分配至当前网络中的每个数据节点的具体过程同实施例图2公开的步骤所述,此处不再赘述。
本发明实施例提供的方法中,定期对网络中的各个数据节点进行检测,依据每个数据节点对应的心跳时间,若判断为该数据节点的心跳时间和检测时刻之间的时间差大于预设的时间阈值,则表征该数据节点已停止工作,并回收该数据节点分配得到的所有哈希桶,将数据节点所回收的哈希桶作为待分配哈希桶,当完成对当前网络中所有数据节点的判断时,将各个待分配哈希桶分配按预设的分配法规则分配至当前网络中的每个数据节点。应用本发明实施例提供的方法,对心跳超时的数据节点,即对停止工作的数据节点进行清理,并回收该停止工作的数据节点的所有哈希桶,将回收的所有哈希桶分配至当前网络中正在运行的各个数据节点,从而不影响业务数据的读取。
上述本发明实施例图1公开的步骤S101涉及到每个数据节点的注册过程,流程图如图5所示,包括以下步骤:
S501:判断是否存在未分配的节点ID。
本发明实施例提供的方法中,可注册的数据节点的数量为固定值,数据节点的可注册数量与待读取业务对应的所有哈希桶的总数量相等,判断是否存在未分配的节点ID,若不存在未分配的哈希桶,则说明当前网络中的数据节点注册数等于最大注册数,并执行步骤S502,若存在未分配的节点ID,则说明当前网络中的数据节点注册数小于最大注册数,并执行步骤S503。
S502:判定为数据节点注册失败。
本发明实施例提供的方法中,若当前网络中的数据节点的注册数已达到最大注册数,判定为该数据节点注册失败,若已分配至数据节点的节点ID不能成功写入至节点注册表中,则判定为数据节点注册失败。
S503:从未分配的节点ID中选取一个节点ID分配至该数据节点,并将已分配至该数据节点的节点ID写入至节点注册表中。
本发明实施例提供的方法中,从未分配的节点ID中选取一个节点ID分配至该数据节点,并将该节点ID写入至节点注册表中。
S504:判断已分配至数据节点的节点ID是否成功写入至节点注册表中。
本发明实施例提供的方法中,判断已分配至数据节点的节点ID是否成功写入至节点注册表中,当节点注册表中已存在与该节点ID相同的ID时,表征该节点ID可能已分配至其他数据节点,并判断为已分配至数据节点的节点ID不能成功写入至节点注册表中,并执行步骤S502,当节点注册中未存在与该节点ID相等的ID时,判断为已分配至数据节点的节点ID可以成功写入至节点注册表中,并执行步骤S505。
S505:判定为完成对该数据节点的注册。
本发明实施例提供的方法中,若已分配至数据节点的节点ID成功写入至节点注册表中,判定为完成对数据节点的注册。
本发明实施例提供的数据读取方法,若存在未分配的节点ID,则从未分配的节点ID选取一个节点ID分配至数据节点,当分配至数据节点的节点ID成功写入节点注册表时,则完成对该数据节点的注册。
与图1所述的方法相对应,本发明实施例还提供了一种数据读取装置,用于对图1中方法的具体实现,其结构示意图如图6所示,具体包括:
确定单元601,用于确定当前网络中各个待分配哈希桶和预先注册的各个数据节点;其中,每个所述数据节点与待读取业务对应,所述待读取业务包括多份业务数据,所述业务数据和所述待分配哈希桶一一对应;
第一分配单元602,用于将各个所述待分配哈希桶按预设的分配规则分配至当前网络中的每个所述数据节点,使每个所述数据节点依据分配得到的每个哈希桶的哈希函数,读取每个所述哈希桶所对应的业务数据。
本发明实施例提供的数据读取装置,确定当前网络中与待读取业务对应的各个预先注册的数据节点,以及确定当前网络中与待读取业务对应的各个待分配哈希桶,将各个待分配哈希桶按照预设的分配规则分配至当前网络中的各个数据节点,使每个数据节点依据分配得到的每个哈希桶的哈希函数,读取每个哈希桶对应的业务数据。应用本发明实施例提供的数据读取装置,为各个数据节点分配哈希桶,使每个数据节点依据分配得到的哈希桶的哈希函数读取哈希桶对应的业务数据,实现多个数据节点并行读取业务数据,加快业务数据读取的速度,从而提高业务处理效率。
在本发明的一个实施例中,基于前述方案,还可以配置为:
监听单元,用于当监听到新的数据节点加入所述网络时,若所述新的数据节点的配置参数表征读取所述待读取业务,则确定当前网络中每个数据节点的目标分配数量;
第一释放单元,用于针对已被分配哈希桶的每个数据节点,判断所述数据节点分配得到的哈希桶的数量是否大于所述目标分配数量,若大于,则触发所述数据节点释放与第一数值对应的哈希桶,并将每个所释放的哈希桶作为待分配哈希桶;其中,所述第一数值为所述数据节点分配得到的哈希桶的数量与所述目标分配数量的差值;
第二分配单元,用于将各个所述待分配哈希桶按预设的分配规则分配至当前网络中的每个所述数据节点。
在本发明的一个实施例中,基于前述方案,还可以配置为:
获取单元,用于在预设的检测时刻,获取预设的节点注册表中与每个数据节点对应的心跳时间;其中,每个所述心跳时间表征与其对应的数据节点最近一次活动的时间;
第二释放单元,用于针对每个所述数据节点,判断所述数据节点对应的心跳时间和所述检测时刻之间的时间差是否大于预设的时间间隔,若大于,则回收所述数据节点分配得到的所有哈希桶,并将所回收的每个哈希桶作为待分配哈希桶,并注销所述数据节点;
第三分配单元,用于将各个所述待分配哈希桶按预设的分配规则分配至当前网络中的每个所述数据节点。
在本发明的一个实施例中,基于前述方案,第一分配单元602配置为:
确定子单元,用于从当前网络中的多个所述数据节点中确定出至少一个待分配节点;其中,所述待分配节点为所述数据节点中包含分配得到的哈希桶的数量最少的数据节点;
分配子单元,用于为每个所述待分配节点分配一个所述待分配哈希桶;
返回子单元,用于判断是否存在待分配哈希桶,若存在,返回执行所述从当前网络中的多个所述数据节点中确定出至少一个待分配节点的步骤,直至完成所有所述待分配哈希桶的分配。
在本发明的一个实施例中,基于前述方案,确定单元601配置为:
判断子单元,用于判断是否存在未分配的节点ID;
选取子单元,用于若存在未分配的节点ID,从所述未分配的节点ID中选取一个节点ID分配至所述数据节点,并将已分配至所述数据节点的节点ID写入至所述节点注册表中;
结束子单元,用于当已分配至所述数据节点的节点ID成功写入至所述节点注册表时,完成对所述数据节点的注册。
本发明实施例还提供了一种存储介质,所述存储介质包括存储的指令,其中,在所述指令运行时控制所述存储介质所在的设备执行上述数据读取方法。
本发明实施例还提供了一种电子设备,其结构示意图如图7所示,具体包括存储器701,以及一个或者一个以上的指令702,其中一个或者一个以上指令702存储于存储器701中,且经配置以由一个或者一个以上处理器703执行所述一个或者一个以上指令702进行以下操作:
确定当前网络中各个待分配哈希桶和预先注册的各个数据节点;其中,每个所述数据节点与待读取业务对应,所述待读取业务包括多份业务数据,所述业务数据和所述待分配哈希桶一一对应;
将各个所述待分配哈希桶按预设的分配规则分配至当前网络中的每个所述数据节点,使每个所述数据节点依据分配得到的每个哈希桶的哈希函数,读取每个所述哈希桶所对应的业务数据。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本发明时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
以上对本发明所提供的一种数据读取方法及装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种数据读取方法,其特征在于,包括:
确定当前网络中各个待分配哈希桶和预先注册的各个数据节点;其中,每个所述数据节点与待读取业务对应,所述待读取业务包括多份业务数据,所述业务数据和所述待分配哈希桶一一对应;
将各个所述待分配哈希桶按预设的分配规则分配至当前网络中的每个所述数据节点,使每个所述数据节点依据分配得到的每个哈希桶的哈希函数,读取每个所述哈希桶所对应的业务数据。
2.根据权利要求1所述的方法,其特征在于,所述将各个所述待分配哈希桶按预设的分配规则分配至每个所述数据节点之后,还包括:
当监听到新的数据节点加入所述网络时,若所述新的数据节点的配置参数表征读取所述待读取业务,则确定当前网络中每个数据节点的目标分配数量;
针对已被分配哈希桶的每个数据节点,判断所述数据节点分配得到的哈希桶的数量是否大于所述目标分配数量,若大于,则触发所述数据节点释放与第一数值对应的哈希桶,并将每个所释放的哈希桶作为待分配哈希桶;其中,所述第一数值为所述数据节点分配得到的哈希桶的数量与所述目标分配数量的差值;
将各个所述待分配哈希桶按预设的分配规则分配至当前网络中的每个所述数据节点。
3.根据权利要求1所述的方法,其特征在于,还包括:
在预设的检测时刻,获取预设的节点注册表中与每个数据节点对应的心跳时间;其中,每个所述心跳时间表征与其对应的数据节点最近一次活动的时间;
针对每个所述数据节点,判断所述数据节点对应的心跳时间和所述检测时刻之间的时间差是否大于预设的时间间隔,若大于,则回收所述数据节点分配得到的所有哈希桶,并将所回收的每个哈希桶作为待分配哈希桶,并注销所述数据节点;
将各个所述待分配哈希桶按预设的分配规则分配至当前网络中的每个所述数据节点。
4.根据权利要求1-3任意一项所述的方法,其特征在于,所述将各个所述待分配哈希桶按预设的分配规则分配至当前网络中的每个所述数据节点,包括:
从当前网络中的多个所述数据节点中确定出至少一个待分配节点;其中,所述待分配节点为所述数据节点中包含分配得到的哈希桶的数量最少的数据节点;
为每个所述待分配节点分配一个所述待分配哈希桶;
判断是否存在待分配哈希桶,若存在,返回执行所述从当前网络中的多个所述数据节点中确定出至少一个待分配节点的步骤,直至完成所有所述待分配哈希桶的分配。
5.根据权利要求3所述的方法,其特征在于,每个所述数据节点的注册过程,包括:
判断是否存在未分配的节点ID;
若存在未分配的节点ID,从所述未分配的节点ID中选取一个节点ID分配至所述数据节点,并将已分配至所述数据节点的节点ID写入至所述节点注册表中;
当已分配至所述数据节点的节点ID成功写入至所述节点注册表时,完成对所述数据节点的注册。
6.一种数据读取装置,其特征在于,包括:
确定单元,用于确定当前网络中各个待分配哈希桶和预先注册的各个数据节点;其中,每个所述数据节点与待读取业务对应,所述待读取业务包括多份业务数据,所述业务数据和所述待分配哈希桶一一对应;
第一分配单元,用于将各个所述待分配哈希桶按预设的分配规则分配至当前网络中的每个所述数据节点,使每个所述数据节点依据分配得到的每个哈希桶的哈希函数,读取每个所述哈希桶所对应的业务数据。
7.根据权利要求6所述的装置,其特征在于,还包括:
监听单元,用于当监听到新的数据节点加入所述网络时,若所述新的数据节点的配置参数表征读取所述待读取业务,则确定当前网络中每个数据节点的目标分配数量;
第一释放单元,用于针对已被分配哈希桶的每个数据节点,判断所述数据节点分配得到的哈希桶的数量是否大于所述目标分配数量,若大于,则触发所述数据节点释放与第一数值对应的哈希桶,并将每个所释放的哈希桶作为待分配哈希桶;其中,所述第一数值为所述数据节点分配得到的哈希桶的数量与所述目标分配数量的差值;
第二分配单元,用于将各个所述待分配哈希桶按预设的分配规则分配至当前网络中的每个所述数据节点。
8.根据权利要求6所述的方法,其特征在于,还包括:
获取单元,用于在预设的检测时刻,获取预设的节点注册表中与每个数据节点对应的心跳时间;其中,每个所述心跳时间表征与其对应的数据节点最近一次活动的时间;
第二释放单元,用于针对每个所述数据节点,判断所述数据节点对应的心跳时间和所述检测时刻之间的时间差是否大于预设的时间间隔,若大于,则回收所述数据节点分配得到的所有哈希桶,并将所回收的每个哈希桶作为待分配哈希桶,并注销所述数据节点;
第三分配单元,用于将各个所述待分配哈希桶按预设的分配规则分配至当前网络中的每个所述数据节点。
9.根据权利要求6-8任意一项所述的装置,其特征在于,所述第一分配单元,包括:
确定子单元,用于从当前网络中的多个所述数据节点中确定出至少一个待分配节点;其中,所述待分配节点为所述数据节点中包含分配得到的哈希桶的数量最少的数据节点;
分配子单元,用于为每个所述待分配节点分配一个所述待分配哈希桶;
返回子单元,用于判断是否存在待分配哈希桶,若存在,返回执行所述从当前网络中的多个所述数据节点中确定出至少一个待分配节点的步骤,直至完成所有所述待分配哈希桶的分配。
10.根据权利要求8所述的装置,其特征在于,所述确定单元,包括:
判断子单元,用于判断是否存在未分配的节点ID;
选取子单元,用于若存在未分配的节点ID,从所述未分配的节点ID中选取一个节点ID分配至所述数据节点,并将已分配至所述数据节点的节点ID写入至所述节点注册表中;
结束子单元,用于当已分配至所述数据节点的节点ID成功写入至所述节点注册表时,完成对所述数据节点的注册。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910800736.XA CN110516121A (zh) | 2019-08-28 | 2019-08-28 | 数据读取方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910800736.XA CN110516121A (zh) | 2019-08-28 | 2019-08-28 | 数据读取方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110516121A true CN110516121A (zh) | 2019-11-29 |
Family
ID=68627418
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910800736.XA Pending CN110516121A (zh) | 2019-08-28 | 2019-08-28 | 数据读取方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110516121A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111176842A (zh) * | 2019-12-23 | 2020-05-19 | 中国平安财产保险股份有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN115550222A (zh) * | 2022-10-12 | 2022-12-30 | 云知声智能科技股份有限公司 | 设备异常状态检测方法、系统、终端及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1858734A (zh) * | 2005-12-28 | 2006-11-08 | 华为技术有限公司 | 一种数据存储及搜索方法 |
CN102541968A (zh) * | 2010-12-31 | 2012-07-04 | 百度在线网络技术(北京)有限公司 | 一种索引方法 |
CN103905503A (zh) * | 2012-12-27 | 2014-07-02 | 中国移动通信集团公司 | 数据存取方法、调度方法、设备及系统 |
CN104904167A (zh) * | 2013-01-10 | 2015-09-09 | 瑞典爱立信有限公司 | 通信网络中对于分组处理的高性能基于哈希的查找 |
-
2019
- 2019-08-28 CN CN201910800736.XA patent/CN110516121A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1858734A (zh) * | 2005-12-28 | 2006-11-08 | 华为技术有限公司 | 一种数据存储及搜索方法 |
CN102541968A (zh) * | 2010-12-31 | 2012-07-04 | 百度在线网络技术(北京)有限公司 | 一种索引方法 |
CN103905503A (zh) * | 2012-12-27 | 2014-07-02 | 中国移动通信集团公司 | 数据存取方法、调度方法、设备及系统 |
CN104904167A (zh) * | 2013-01-10 | 2015-09-09 | 瑞典爱立信有限公司 | 通信网络中对于分组处理的高性能基于哈希的查找 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111176842A (zh) * | 2019-12-23 | 2020-05-19 | 中国平安财产保险股份有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN115550222A (zh) * | 2022-10-12 | 2022-12-30 | 云知声智能科技股份有限公司 | 设备异常状态检测方法、系统、终端及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2018076791A1 (zh) | 一种资源负载均衡控制方法及集群调度器 | |
CN106874031B (zh) | 一种终端设备系统程序的启动方法及装置 | |
CN109271252B (zh) | 一种调整线程数的方法及装置 | |
US20190095250A1 (en) | Application program management method and device | |
CN110347503B (zh) | 资源重调度方法及装置 | |
CN109298990A (zh) | 日志存储方法、装置、计算机设备及存储介质 | |
EP2701062A1 (en) | Virtual machine administration device, virtual machine administration method, and program | |
CN110516121A (zh) | 数据读取方法及装置 | |
CN104035823B (zh) | 负载均衡方法及装置 | |
CN103327072A (zh) | 一种集群负载均衡的方法及其系统 | |
CN103744808B (zh) | 一种用于控制i/o请求的方法与设备 | |
CN111832855A (zh) | 格口分配方法、装置、分拣机及存储介质 | |
CN103870319B (zh) | 信息处理方法、装置及电子设备 | |
CN108958975A (zh) | 一种控制数据恢复速度的方法、装置及设备 | |
CN109710414A (zh) | 一种作业调度方法、装置、设备及存储介质 | |
CN106610870A (zh) | 一种处理节点数量调整方法及装置 | |
CN107003713A (zh) | 用于电力管理的逻辑分区环境的事件驱动重新优化 | |
CN116257345A (zh) | 深度学习任务调度方法及装置 | |
CN103631695A (zh) | 时间监测方法及装置 | |
CN105340246A (zh) | 一种管理系统资源的方法、装置及设备 | |
CN103136043A (zh) | 一种异步io的迁移方法、系统和网络节点 | |
CN110119301A (zh) | 一种虚拟机迁移方法及系统 | |
CN109976662A (zh) | 数据存储方法、装置及分布式存储系统 | |
CN111124660B (zh) | 虚拟机中闲置资源的分配方法和装置 | |
CN106909321A (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20191129 |
|
RJ01 | Rejection of invention patent application after publication |