CN111182043A - 哈希值的分配方法及装置 - Google Patents
哈希值的分配方法及装置 Download PDFInfo
- Publication number
- CN111182043A CN111182043A CN201911340964.XA CN201911340964A CN111182043A CN 111182043 A CN111182043 A CN 111182043A CN 201911340964 A CN201911340964 A CN 201911340964A CN 111182043 A CN111182043 A CN 111182043A
- Authority
- CN
- China
- Prior art keywords
- hash value
- hash
- nodes
- processing system
- server
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
- G06F16/137—Hash-based
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/50—Address allocation
- H04L61/5007—Internet protocol [IP] addresses
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1023—Server selection for load balancing based on a hash applied to IP addresses or costs
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请提供一种哈希值的分配方法及装置,涉及数据处理领域,能够为数据处理系统中的各个节点均匀的分配哈希值。该方法包括:服务器确定数据处理系统的环形哈希空间的大小M,以及数据处理系统中的节点的数量X;M和X均为正整数;M>X;服务器根据环形哈希空间的大小M,以及节点的数量X,确定哈希值序列;哈希值序列包括M个哈希值,哈希值序列中的前2a×X个哈希值在环形哈希空间中均匀分布;a为整数,2a×X<M;服务器从哈希值序列中选择前X个哈希值,并将前X个哈希值分配给该X个节点。本申请用于哈希值的分配的过程中。
Description
技术领域
本申请涉及数据处理领域,尤其涉及一种哈希值的分配方法及装置。
背景技术
分布式数据处理系统中,服务器通过一致性哈希技术,为分布式数据处理系统中的各个节点分配一个哈希值。当待处理数据到达分布式数据处理系统中时,服务器通过一致性哈希技术确定待处理数据的哈希值,服务器将该数据发送至与该数据的哈希值一致的节点处理,从而实现了数据处理系统中的负载分担和数据一致性。
为了实现分布式数据处理系统中的均匀负载,服务器为每个节点生成多个虚拟节点,并将该多节点以及虚拟节点分布在环形哈希空间中。但是这种方法存在需要多次哈希时为每个节点生成虚拟节点,实现较为复杂,并且节点均匀分布的效果较差。
发明内容
本申请提供一种哈希值的分配方法及装置,用于为数据处理系统中的各个节点均匀的分配哈希值。
为达到上述目的,本申请采用如下技术方案:
第一方面,本申请提供一种哈希值的分配方法,该方法包括:
服务器确定数据处理系统的环形哈希空间的M个哈希值,以及数据处理系统中的X个节点;M和X均为正整数;M>X;服务器根据M个哈希值,以及X个节点,确定哈希值序列;哈希值序列包括M个哈希值,M个哈希值中的前2a×X个哈希值在环形哈希空间中均匀分布;a为整数,2a×X<M;服务器从哈希值序列中选择前X个哈希值,并将前X个哈希值分配给该X个节点。
基于上述技术方案,服务器确定数据处理系统的环形哈希空间的M个哈希值,以及数据处理系统中的X个节点;服务器根据M个哈希值,以及X个节点,确定哈希值序列;哈希值序列包括M个哈希值,M个哈希值中的前2a×X个哈希值在环形哈希空间中均匀分布;a为整数,2a×X<M。这样,服务器只需根据环形哈希空间大小,以及真实节点数量,即可确定哈希值序列,大大降低了算法复杂度。同时,该哈希值序列中的前2a×X个哈希值在环形哈希空间中均匀分布。这样服务器可以通过灵活调整X的值,保证为节点分配的哈希值尽可能的在环形哈希空间中均匀分布。因此,本申请实施例提供的哈希值的分配方法可以降低算法复杂度,并且保证为节点分配的哈希值在环形哈希空间中均匀分布。
第二方面,本申请提供一种哈希值的分配装置,该装置包括:处理单元,用于确定数据处理系统的环形哈希空间的大小M,以及数据处理系统中的节点的数量X;M和X均为正整数;M>X;处理单元,还用于根据环形哈希空间的大小M,以及节点的数量X,确定哈希值序列;哈希值序列包括M个哈希值,哈希值序列中的前2a×X个哈希值在环形哈希空间中均匀分布;a为整数,2a×X<M;处理单元,还用于从哈希值序列中选择前X个哈希值,并将前X个哈希值分配给该X个节点。
第三方面,本申请提供了一种哈希值的分配装置,该装置包括:处理器和通信接口;通信接口和处理器耦合,处理器用于运行计算机程序或指令,以实现如第一方面和第一方面的任一种可能的实现方式中所描述的哈希值的分配方法。
第四方面,本申请提供了一种计算机可读存储介质,计算机可读存储介质中存储有指令,当指令在终端上运行时,使得终端执行如第一方面和第一方面的任一种可能的实现方式中描述的哈希值的分配方法。
第五方面,本申请提供一种包含指令的计算机程序产品,当计算机程序产品在哈希值的分配装置上运行时,使得哈希值的分配装置执行如第一方面和第一方面的任一种可能的实现方式中所描述的哈希值的分配方法。
第六方面,本申请提供一种芯片,芯片包括处理器和通信接口,通信接口和处理器耦合,处理器用于运行计算机程序或指令,以实现如第一方面和第一方面的任一种可能的实现方式中所描述的哈希值的分配方法。
具体的,本申请中提供的芯片还包括存储器,用于存储计算机程序或指令。
附图说明
图1为本申请实施例提供的一种环形哈希空间的示意图;
图2为本申请实施例提供的一种数据处理系统的系统架构图;
图3为本申请实施例提供的一种哈希值的分配方法的流程图;
图4为本申请实施例提供的一种genid函数的逻辑流程图;
图5为本申请实施例提供的另一种哈希值的分配方法的流程图;
图6为本申请实施例提供的另一种哈希值的分配方法的流程图;
图7为本申请实施例提供的另一种哈希值的分配方法的流程图;
图8为本申请实施例提供的另一种哈希值的分配方法的流程图;
图9为本申请实施例提供的一种哈希值的分配装置的结构示意图;
图10为本申请实施例提供的另一种哈希值的分配装置的结构示意图;
图11为本申请的实施例提供的一种芯片的装置结构示意图。
具体实施方式
下面结合附图对本申请实施例提供的哈希值的分配方法及装置进行详细地描述。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
本申请的说明书以及附图中的术语“第一”和“第二”等是用于区别不同的对象,或者用于区别对同一对象的不同处理,而不是用于描述对象的特定顺序。
此外,本申请的描述中所提到的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括其他没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
需要说明的是,本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
在本申请的描述中,除非另有说明,“多个”的含义是指两个或两个以上。
以下,对本申请实施例涉及的名词进行解释,以方便读者理解。
(1)哈希(Hash)
哈希也叫散列,是指把任意长度的输入数据通过散列算法变换成固定长度的输出数据,该输出数据就是输入数据的哈希值。
(2)一致性哈希技术
一致性哈希技术指的是:服务器建立一个环形哈希空间,将系统中的各个节点映射到该环形哈希空间中,每个节点对应一个哈希值。当数据到达时,服务器根据哈希算法,确定该数据的哈希值。服务器根据该数据的哈希值将该数据映射到环形哈希空间中,服务器确定距离该数据的哈希值最近的节点为处理该数据的节点。
以环形哈希空间包括0-9这10个哈希值,数据处理系统中包括三个节点为例,对一致性哈希技术进行说明。
如图1所示,服务器首先建立如图1所示的环形哈希空间。该环形哈希空间中包括10个哈希值,分别为0-9。该10个哈希值均匀分布在环形哈希空间中。该数据处理系统中包括三个节点,这三个节点的网际互联协议(internet protocol,ip)地址分别为ip1,ip2以及ip3。服务器计算该三个ip地址对应的哈希值,并根据哈希值在环形哈希空间中的位置,将ip地址映射到环形哈希空间中。服务器将ip地址映射到环形哈希空间中的位置如图1中的ip1,ip2和ip3所示。其中,ip1对应的哈希值为0,ip2对应的哈希值为3,ip3对应的哈希值为7。
当数据到达该数据处理系统中后,服务器计算该数据的哈希值。并根据其哈希值在环形哈希空间中对应的位置,将该数据映射到环形哈希空间中。示例性的,服务器确定该数据的哈希值为2,服务器将数据映射到如图1中的数据1所示的位置。
服务器确定距离该数据1最近的ip地址为ip2,则服务器确定将该数据交由ip2对应的节点处理。
为了解决现有技术中实现哈希一致性时因为虚拟节点过多导致的算法实现较为复杂,且节点均匀分布的效果较差的问题。本申请实施例提供了一种哈希值的分配方法,服务器根据预先确定的环形哈希空间的大小M以及节点的数量X,确定一个哈希值序列。该哈希值序列包括M个哈希值,且满足哈希值序列中的前2a×X个哈希值在环形哈希空间中均匀分布的条件。服务器从哈希值序列中选择前X个哈希值,并将前X个哈希值分配给该X个节点。这样,服务器只需根据环形哈希空间大小,以及真实节点数量,即可确定哈希值序列,大大降低了算法复杂度。同时,该哈希值序列中的前2a×X个哈希值在环形哈希空间中均匀分布。这样服务器可以通过灵活调整X的值,保证哈希值尽可能的在环形哈希空间中均匀分布。
如图2所示,为本申请实施例提供的一种数据处理系统100的系统架构图。该数据处理系统100中包括多个节点10,以及服务器20。
其中,节点10用于处理数据。
服务器20用于为多个节点10分配哈希值。服务器20还用于当待处理数据到达该数据处理系统100时,计算待处理数据的哈希值。服务器20根据待处理数据的哈希值,以及多个节点10的哈希值,从多个节点10中选择对应的节点10处理待处理数据。
如图3所示,为本申请实施例提供的哈希值的分配方法的流程图,该方法包括以下步骤。
S101、服务器确定数据处理系统的环形哈希空间的大小M,以及数据处理系统中的节点的数量X。
其中,M和X均为正整数;M>X。示例性的,M=1000,X=4。也即是说,环形哈希空间中包括1000个哈希值。数据处理系统中包括4个节点。
环形哈希空间的大小,表征了环形哈希空间中具有的哈希值数量的多少。例如,当环形哈希空间的大小为M时,环形哈希空间中具有的哈希值的数量也为M。
可选的,当环形哈希空间的大小M时,环形哈希空间中的哈希值的取值范围为0至M-1。
以M=1000为例来说,环形哈希空间中的哈希值的取值范围为0-999。
可以理解的是,服务器设置的环形哈希空间的大小,大于数据处理系统能够容纳的节点的数量的大小。这样,可以保证即使数据处理系统中后续增加节点,增加节点后数据处理系统中的节点总数量也不会超过哈希值序列中的哈希值的数量。
此外,服务器将哈希值环形哈希空间的大小设置为一个较大的数,可以保证后续服务器计算数据的哈希值时,使哈希值能够尽可能均匀的落在环形哈希空间中,保证了数据处理系统的负载均衡。
需要说明的是,该环形哈希空间的大小不能设置的过大,也不能设置的过小。如果环形哈希空间的大小设置的过大,将会增加生成哈希值序列是的算法的复杂度,造成服务器计算性能的浪费。如果环形哈希空间的大小设置的过小,将会导致服务器确定的待处理的数据的哈希值不能均匀的在环形哈希空间中分布。降低数据处理系统的负载均衡。并且,如果M的值设置的小于数据处理系统的最大节点数据K,将会导致服务器无法为数据处理系统的部分节点分配哈希值。其中,数据处理系统的最大节点数K,是数据处理系统中最大可扩容的节点数量,而不是数据处理系统中当前的节点数量。K为大于等于N的正整数。
一般来说,服务器可以根据数据处理系统的最大节点数K,确定环形哈希空间的大小M。例如,服务器可以将环形哈希空间的大小设置为10×K,也即是说M=10×K。
举例来说,一个数据处理系统中最大可扩容的节点数为100。则该环形哈希空间的大小可以设置为100×10=1000。
S102、服务器根据环形哈希空间的大小M,以及节点的数量X,确定哈希值序列。
哈希值序列包括M个哈希值,哈希值序列中的前2a×X个哈希值在环形哈希空间中均匀分布;a为整数,2a×X<M。
一种可能的实现方式中,服务器可以调用预先定义的genid函数,来确定哈希值序列,使得哈希值序列满足:前2a×X个哈希值在环形哈希空间中均匀分布的条件。如图4所示,该genid函数的逻辑流程如下所示:
1、定义genid函数的初始变量n=0,以及哈希值序列的索引k=0。
2、循环确定索引值k的大小。
3、如果k=0,则k值加1,返回哈希值r=0。
4、如果k=1,则n值加1,并确定n值的大小。
4.1、如果n小于X,则定义r=(n+M)/X,返回哈希值r。
4.2、如果n大于等于X,则k值加1,n值赋值为-1,服务器执行步骤5。
5、如果序列索引k大于1,则n值加2。
5.1、如果n大于或等于X与k的乘积,则序列k乘2,并且n值赋值为1。
5.2、定义r=(n×M)/(X×k)。
5.3、若哈希值r未被分配,则返回哈希值r;若哈希值r已被分配,则赋值r=r+1,返回哈希值r。
需要说明的是,服务器依次将返回的哈希值存储到哈希值序列中,该哈希值序列,满足前2a×X个哈希值在环形哈希空间中均匀分布的条件。也即是说,该哈希值序列中的前X个哈希值,前2X个哈希值,前4X个哈希值……均在环形哈希空间中均匀分布。这样,服务器将前X个哈希值分配个X个节点时,可以保证该X个节点对应的哈希值在环形哈希空间中均匀分布。
示例性的,genid函数的C程序源码为:
一种示例,根据上述genid函数,在M=8,X=2的情况下,服务器确定的哈希值的序列为:0,4,2,6,1,3,5,7。
又一种示例,根据上述genid函数,在M=16,X=3的情况下,服务器确定的哈希值的序列为:0,5,10,2,8,13,1,4,6,9,12,14,3,7,11,15。
S103、服务器从哈希值序列中选择前X个哈希值,并将前X个哈希值分配给该X个节点。
一种可能的实现方式中,服务器从哈希值序列中的第一个哈希值开始,按照哈希值序列中哈希值的排列顺序,依次选择X个哈希值。服务器对该X节点进行排序,并依次将上述前X个哈希值分配给该X个节点。
其中,服务器可以采用随机算法对该X个节点进行排序,也可以按照其他任意方式对该X个节点进行排序。
一种示例,在M=8,X=2的情况下,服务器为第一个节点分配的哈希值为0,服务器为第二个节点分配的哈希值为4。
又一种示例,在M=16,X=3的情况下,服务器为第一个节点分配的哈希值为0,服务器为第二个节点分配的哈希值为5、服务器为第三个节点分配的哈希值为10。
可以理解的是,服务器在确定完每个节点的哈希值之后,可以将该节点的标识(例如ip地址),以及其对应的哈希值存入到预先设置的节点搜索表中。服务器可以直接通过该节点搜索表定位需要搜索的节点,以及该节点对应的哈希值。服务器可以将节点的哈希值作为索引,以方便后续数据到达数据处理系统中时,根据数据的哈希值,匹配对应的节点处理该数据。
基于上述技术方案,服务器确定数据处理系统的环形哈希空间的M个哈希值,以及数据处理系统中的X个节点;服务器根据M个哈希值,以及X个节点,确定哈希值序列;哈希值序列包括M个哈希值,M个哈希值中的前2a×X个哈希值在环形哈希空间中均匀分布;a为整数,2a×X<M。这样,服务器只需根据环形哈希空间大小,以及真实节点数量,即可确定哈希值序列,大大降低了算法复杂度。同时,该哈希值序列中的前2a×X个哈希值在环形哈希空间中均匀分布。这样服务器可以通过灵活调整X的值,保证为节点分配的哈希值尽可能的在环形哈希空间中均匀分布。因此,本申请实施例提供的哈希值的分配方法可以降低算法复杂度,并且保证为节点分配的哈希值在环形哈希空间中均匀分布。
基于图3所示的技术方案,如图5所示,在S103之后,本申请实施例提供的哈希值的分配方法还包括:
S104、服务器为哈希值序列中的第一哈希值设置第一标识。
其中,第一哈希值为已经分配给数据处理系统中的节点的哈希值;第一标识用于表征该哈希值已经分配给数据处理系统中的节点。
可以理解的是,服务器为哈希值序列中已经分配给节点的哈希值设置第一标识,可以使服务器根据该第一标识即可确定该哈希值已经分配给数据处理系统中的节点。这样,当数据处理系统中增加了新的节点时,服务器可以跳过设置有第一标识的哈希值,直接从第一个未设置第一标识的哈希值开始分配。这样,可以避免服务器将已分配的哈希值又再次分配给其他节点,造成系统无法正常工作。同时,通过设置第一标识的方式,可以使服务器简单准确确定哈希值序列中的哈希值是否分配给数据处理系统中的节点。
可选的,服务器还可以为还未分配给数据处理系统中的节点的哈希值设置第二标识。第二标识用于表征该哈希值未分配给数据处理系统中的节点。这样,可以使服务器更加简单准确确定哈希值序列中的哈希值是否分配给数据处理系统中的节点。
一种示例,在M=8,X=2的情况下,由于哈希值0和4分别分配给了第一节点和第二节点,因此服务器为哈希值序列中的0和4这两个哈希值设置第一标识。服务器为哈希值序列中的2,6,1,3,5和7这六个哈希值设置第二标识。
又一种示例,在M=16,X=3的情况下,由于哈希值0,5和10分别分配给了第一节点,第二节点和第三节点,因此服务器为哈希值序列中的0,5和10这三个哈希值设置第一标识。服务器为哈希值序列中2,8,13,1,4,6,9,12,14,3,7,11和15这十三个哈希值设置第二标识。
基于图4所示的技术方案,如图6所示,在S104之后,在数据处理系统中增加了N个节点的情况下,服务器还可以执行以下步骤,为新增加的N个节点分配哈希值。
S105、服务器从哈希值序列中依次选择第X+1个哈希值到第X+N个哈希值。
需要说明的是,在数据处理系统中增加了N个节点的情况下,服务器从哈希值系列表中的第X+1个哈希值开始,依次选择N个哈希值。可以保证为新增加的N个节点中的每个节点都分配一个哈希值。
一种示例,在M=8,X=2,N=2的情况下,服务器依次从哈希值序列中选择的哈希值为:2和6。
又一种示例,在M=16,X=3,N=3的情况下,服务器依次从哈希值序列中选择的哈希值为:2、8和13。
S106、服务器将第X+1个哈希值到第X+N个哈希值分别分配给增加的N个节点。
也即是说,在数据处理系统中的节点数量增加到X+N个时,服务器将哈希值序列中的前X+N个哈希值分配给该X+N个节点。由于哈希值序列中的前X个哈希值,已经分配给数据处理系统中原有的X个节点,因此服务器将哈希值序列中的第X+1个哈希值到第X+N个哈希值分别分配给增加的N个节点。这样,当X+N的值接近2a×X时,服务器为该X+N个节点分配的哈希值可以近似的认为在环形哈希空间中均匀分布。
一种示例,在M=8,X=2,N=2的情况下,服务器为新增加的第一个节点分配的哈希值为2,服务器为新增加的第二个节点分配的哈希值为6。
又一种示例,在M=16,X=3,N=3的情况下,服务器为新增加的第一个节点分配的哈希值为2,服务器为新增加的第二个节点分配的哈希值为8,服务器为新增加的第三个节点分配的哈希值为13。
需要说明的是,在数据处理系统中增加了N个节点的情况下,服务器为这N个节点分配了哈希值之后,数据处理系统中还可以任意的增加节点数量。每增加一次节点,服务器根据增加的节点数量从哈希值序列中依次选择与增加的节点数量相对应的哈希值,并将这些哈希值分配给各个节点即可。这样无论数据处理系统中增加多少次节点,服务器都不需要重新确定哈希值序列,大大降低了算法复杂度。
基于上述技术方案,在数据处理系统中增加节点时,服务器可以直接将哈希值序列中未分配的哈希值按顺序分配给各个新增加的节点。这样,服务器可以不必重新为每个节点分配哈希值,大大降低了服务器的工作量,并且,由于哈希值序列中的前2a×X个哈希值在环形哈希空间中均匀分布。当数据处理系统中增加节点后的节点数量接近2a×X时,这些数据处理系统中的节点对应的哈希值将会在环形哈希空间中近似的均匀分布。
基于图4所示的技术方案,如图7所示,在S104之后,在数据处理系统中删除了L个节点的情况下,服务器还可以执行以下步骤:
S107、服务器为该L个节点对应的哈希值设置第二标识。
其中,第二标识用于表征该哈希值未分配给数据处理系统中的节点。
可以理解的是,由于数据处理系统中的X个节点在初始阶段就已经分配好了相应的哈希值。因此,在数据处理系统中的L个节点被删除时,这L个节点所对应的L个哈希值将会回归到未被分配的状态。这样服务器为该L个哈希值设置第二标识,以表示该L个哈希值可以重新分配给其他节点。当数据处理系统中又增加了新的节点时,服务器优先将该L个哈希值分配给新增加的节点。
一种示例,在M=8,X=2的情况下,若数据处理系统中的第二个节点被删除,则服务器将第二个节点对应的哈希值4的第一标识更新为第二标识。
又一种示例,在M=16,X=3的情况下,若数据处理系统中的第二个节点被删除,则服务器将第二个节点对应的哈希值5的第一标识更新为第二标识。
基于图3所示的技术方案,如图8所示,在S103之后,该方法还包括:
S108、服务器确定待处理数据的哈希值。
一种可能的实现方式中,服务器根据待处理数据携带的ip地址,确定待处理数据的哈希值。
具体来说,服务器将待处理数据携带的ip地址转换为整数A。服务器确定环形哈希空间的大小M。服务器将A除以M后得到的余数,作为该待处理数据的哈希值。
举例来说,服务器确定待处理数据的ip地址为:192.168.0.1。服务器将该ip地址转换为整数为:3232235521(16进制为:0xc0a80001)。服务器确定环形哈希空间的大小为16,服务器将该整数除以16,得到的余数为1,则服务器确定该数据的哈希值为1。
需要说明的是,在实际应用中,服务器确定数据的哈希值的方法有多种,本申请仅以服务器根据数据携带的ip地址,确定待处理数据的哈希值为例进行说明。关于其他确定哈希值的方法,可以参考现有技术,本申请对此不在赘述。
S109、服务器从X个节点中确定第一节点。
第一节点的哈希值与待处理数据的哈希值的相似度最大。
需要说明的是,第一节点的哈希值与待处理数据的哈希值的相似度最大。可以是第一节点的哈希值与待处理数据的哈希值之间的差值最小。也可以是,第一节点的哈希值为小于等于待处理数据的哈希值的最大哈希值。
下面,以第一节点的哈希值为小于等于待处理数据的哈希值的最大哈希值为例,进行详细说明:
服务器确定待处理数据的哈希值为h,则服务器确定节点搜索表中哈希值小于h+1的最大哈希值,将该最大哈希值对应的节点作为第一节点。
举例来说,待处理数据的哈希值为1。此时,服务器根据节点搜索表确定数据处理系统中包括3个节点分别为:ip1对应的哈希值为0,ip2,对应的哈希值为5,ip3对应的哈希值为10。服务器确定节点搜索表中哈希值小于1+1的最大哈希值为0。则服务器将该待处理数据发送给节点ip1。
可以理解的是,服务器采用红黑树算法生成节点搜索表。相应的,服务器采用红黑树算法,从节点搜索表中确定与待处理数据最接近的哈希值对应的节点。
S110、服务器向第一节点发送待处理数据。
基于上述技术方案,服务器根据待处理数据的ip地址,与环形哈希空间的大小,确定待处理数据的哈希值,在待处理数据的数据量足够大的时候,可以保证这些待处理数据的哈希值在环形哈希空间中也是均匀分布的。服务器根据待处理数据的哈希值,从节点搜索表中查找距离待处理数据的哈希值最近的哈希值对应的节点。服务器确定将待处理数据发送至该节点,可以保证数据处理系统的负载均衡以及数据处理系统的数据一致性。
本申请实施例可以根据上述方法示例对哈希值的分配装置进行功能模块或者功能单元的划分,例如,可以对应各个功能划分各个功能模块或者功能单元,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块或者功能单元的形式实现。其中,本申请实施例中对模块或者单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
如图9所示,为本申请实施例提供的一种哈希值的分配装置的结构示意图,该装置包括:
处理单元801,用于确定数据处理系统的环形哈希空间的大小M,以及数据处理系统中的节点的数量X;M和X均为正整数;M>X。
处理单元801,还用于根据环形哈希空间的大小M,以及节点的数量X,确定哈希值序列;哈希值序列包括M个哈希值,哈希值序列中的前2a×X个哈希值在环形哈希空间中均匀分布;a为整数,2a×X<M。
处理单元801,还用于从哈希值序列中选择前X个哈希值,并将前X个哈希值分配给该X个节点。
可选的,处理单元801,还用于:在数据处理系统中增加了N个节点的情况下;从哈希值序列中依次选择第X+1个哈希值到第X+N个哈希值;N为正整数;X+N≤M;将第X+1个哈希值到第X+N个哈希值分别分配给增加的N个节点。
可选的,处理单元801,还用于:为所述哈希值序列中的第一哈希值设置第一标识;所述第一哈希值为已经分配给数据处理系统中的节点的哈希值;所述第一标识用于表征所述哈希值已经分配给数据处理系统中的节点。
可选的,处理单元801,还用于:在所述数据处理系统中删除了L个节点的情况下,为L个节点对应的哈希值设置第二标识,L为小于等于X的正整数。
第二标识用于表征所述哈希值未分配给数据处理系统中的节点。
可选的,哈希值的分配装置还包括通信单元802;通信单元802,用于接收待处理数据;处理单元801,还用于:确定待处理数据的哈希值;从X个节点中确定第一节点,第一节点的哈希值与待处理数据的哈希值的相似度最大;通信单元802,还用于向第一节点发送待处理数据。
在通过硬件实现时,本申请实施例中的通信单元802可以集成在通信接口上,处理单元801可以集成在处理器上。具体实现方式如图10所示。
图10示出了上述实施例中所涉及的哈希值的分配装置的又一种可能的结构示意图。该哈希值的分配装置包括:处理器902和通信接口903。处理器902用于对哈希值的分配装置的动作进行控制管理,例如,执行上述处理单元801执行的步骤,和/或用于执行本文所描述的技术的其它过程。通信接口903用于支持哈希值的分配装置与其他网络实体的通信,例如,执行上述通信单元802执行的步骤。哈希值的分配装置还可以包括存储器901和总线904,存储器901用于存储哈希值的分配装置的程序代码和数据。
其中,存储器901可以是哈希值的分配装置中的存储器等,该存储器可以包括易失性存储器,例如随机存取存储器;该存储器也可以包括非易失性存储器,例如只读存储器,快闪存储器,硬盘或固态硬盘;该存储器还可以包括上述种类的存储器的组合。
上述处理器902可以是实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。该处理器可以是中央处理器,通用处理器,数字信号处理器,专用集成电路,现场可编程门阵列或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。该处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。
总线904可以是扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。总线904可以分为地址总线、数据总线、控制总线等。为便于表示,图10中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
图11是本申请实施例提供的芯片170的结构示意图。芯片170包括一个或两个以上(包括两个)处理器1710和通信接口1730。
可选的,该芯片170还包括存储器1740,存储器1740可以包括只读存储器和随机存取存储器,并向处理器1710提供操作指令和数据。存储器1740的一部分还可以包括非易失性随机存取存储器(non-volatile random access memory,NVRAM)。
在一些实施方式中,存储器1740存储了如下的元素,执行模块或者数据结构,或者他们的子集,或者他们的扩展集。
在本申请实施例中,通过调用存储器1740存储的操作指令(该操作指令可存储在操作系统中),执行相应的操作。
其中,上述处理器1710可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,单元和电路。该处理器可以是中央处理器,通用处理器,数字信号处理器,专用集成电路,现场可编程门阵列或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,单元和电路。所述处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。
存储器1740可以包括易失性存储器,例如随机存取存储器;该存储器也可以包括非易失性存储器,例如只读存储器,快闪存储器,硬盘或固态硬盘;该存储器还可以包括上述种类的存储器的组合。
总线1720可以是扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。总线1720可以分为地址总线、数据总线、控制总线等。为便于表示,图11中仅用一条线表示,但并不表示仅有一根总线或一种类型的总线。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本申请实施例提供一种包含指令的计算机程序产品,当该计算机程序产品在计算机上运行时,使得该计算机执行上述方法实施例中的哈希值的分配方法。
本申请实施例还提供一种计算机可读存储介质,计算机可读存储介质中存储有指令,当该指令在计算机上运行时,使得该计算机执行上述方法实施例所示的方法流程中的哈希值的分配方法。
其中,计算机可读存储介质,例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(Random Access Memory,RAM)、只读存储器(Read-Only Memory,ROM)、可擦式可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)、寄存器、硬盘、光纤、便携式紧凑磁盘只读存储器(Compact Disc Read-Only Memory,CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合、或者本领域熟知的任何其它形式的计算机可读存储介质。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于特定用途集成电路(Application Specific Integrated Circuit,ASIC)中。在本申请实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
本发明的实施例提供一种包含指令的计算机程序产品,当指令在计算机上运行时,使得计算机执行如图3至图8中所述的哈希值的分配方法。
由于本发明的实施例中的哈希值的分配装置、计算机可读存储介质、计算机程序产品可以应用于上述方法,因此,其所能获得的技术效果也可参考上述方法实施例,本发明实施例在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
以上,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应该以权利要求的保护范围为准。
Claims (12)
1.一种哈希值的分配方法,其特征在于,所述方法包括:
服务器确定数据处理系统的环形哈希空间的大小M,以及所述数据处理系统中的节点的数量X;M和X均为正整数;M>X;
所述服务器根据所述环形哈希空间的大小M,以及所述节点的数量X,确定哈希值序列;所述哈希值序列包括M个哈希值,所述哈希值序列中的前2a×X个哈希值在所述环形哈希空间中均匀分布;a为正整数,2a×X<M;
所述服务器从所述哈希值序列中选择前X个哈希值,并将所述前X个哈希值分配给所述X个节点。
2.根据权利要求1所述的方法,其特征在于,在所述服务器将所述前X个哈希值分配给所述X个节点之后,在所述数据处理系统中增加了N个节点的情况下,所述方法还包括:
所述服务器从所述哈希值序列中依次选择第X+1个哈希值到第X+N个哈希值,N为正整数;X+N≤M;
所述服务器将所述第X+1个哈希值到第X+N个哈希值分别分配给所述N个节点。
3.根据权利要求1-2任一项所述的方法,其特征在于,所述方法还包括:
所述服务器为所述哈希值序列中的第一哈希值设置第一标识;所述第一哈希值为已经分配给所述数据处理系统中的节点的哈希值;所述第一标识用于表征所述哈希值已经分配给所述数据处理系统中的节点。
4.根据权利要求3所述的方法,其特征在于,在所述服务器为所述哈希值序列中的第一哈希值设置第一标识之后,所述方法还包括:
所述数据处理系统中删除了L个节点的情况下,L为小于等于X的正整数;
所述服务器为所述L个节点对应的哈希值设置第二标识,所述第二标识用于表征所述哈希值未分配给所述数据处理系统中的节点。
5.根据权利要求1-2任一项所述的方法,其特征在于,在所述将所述前X个哈希值分配给所述X个节点之后,所述方法还包括:
所述服务器确定待处理数据的哈希值;
所述服务器从所述X个节点中确定第一节点;所述第一节点的哈希值与所述待处理数据的哈希值之间的相似度最大;
所述服务器向所述第一节点发送所述待处理数据。
6.一种哈希值的分配装置,其特征在于,所述装置包括:
处理单元,用于确定数据处理系统的环形哈希空间的大小M,以及所述数据处理系统中的节点的数量X;M和X均为正整数;M>X;
所述处理单元,还用于根据所述环形哈希空间的大小M,以及所述节点的数量X,确定哈希值序列;所述哈希值序列包括M个哈希值,所述哈希值序列中的前2a×X个哈希值在所述环形哈希空间中均匀分布;a为整数,2a×X<M;
所述处理单元,还用于从所述哈希值序列中选择前X个哈希值,并将所述前X个哈希值分配给所述X个节点。
7.根据权利要求6所述的装置,其特征在于,所述处理单元,还用于:
在所述数据处理系统中增加了N个节点的情况下;
从所述哈希值序列中依次选择第X+1个哈希值到第X+N个哈希值;N为正整数;X+N≤M;
将所述第X+1个哈希值到第X+N个哈希值分别分配给所述N个节点。
8.根据权利要求6所述的装置,其特征在于,所述处理单元,还用于:
在所述将所述前X个哈希值分配给X个所述节点之后,为所述哈希值序列中的第一哈希值设置第一标识;所述第一哈希值为已经分配给所述数据处理系统中的节点的哈希值;所述第一标识用于表征所述哈希值已经分配给所述数据处理系统中的节点。
9.根据权利要求8所述的装置,其特征在于,所述处理单元,还用于:
在所述数据处理系统中删除了L个节点的情况下,为所述L个节点对应的哈希值设置第二标识,所述第二标识用于表征所述哈希值未分配给所述数据处理系统中的节点L为小于等于X的正整数。
10.根据权利要求6-9任一项所述的装置,其特征在于,所述装置还包括通信单元;所述处理单元,还用于:确定待处理数据的哈希值;从所述X个节点中确定第一节点;所述第一节点的哈希值与所述待处理数据的哈希值的相似度最大;
所述通信单元,用于向所述第一节点发送所述待处理数据。
11.一种哈希值的分配装置,其特征在于,包括:处理器和通信接口;所述通信接口和所述处理器耦合,所述处理器用于运行计算机程序或指令,以实现如权利要求1-5任一项中所述的哈希值的分配方法。
12.一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,其特征在于,当计算机执行该指令时,该计算机执行上述权利要求1-5任一项中所述的哈希值的分配方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911340964.XA CN111182043B (zh) | 2019-12-23 | 2019-12-23 | 哈希值的分配方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911340964.XA CN111182043B (zh) | 2019-12-23 | 2019-12-23 | 哈希值的分配方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111182043A true CN111182043A (zh) | 2020-05-19 |
CN111182043B CN111182043B (zh) | 2022-08-12 |
Family
ID=70657396
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911340964.XA Active CN111182043B (zh) | 2019-12-23 | 2019-12-23 | 哈希值的分配方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111182043B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112541039A (zh) * | 2020-12-07 | 2021-03-23 | 武汉联影医疗科技有限公司 | 数据库处理方法、装置、计算机设备和存储介质 |
CN114776176A (zh) * | 2022-05-24 | 2022-07-22 | 中欣链证数字科技有限公司 | 一种贵金属存储方法、装置、设备及系统 |
CN115002131A (zh) * | 2022-05-24 | 2022-09-02 | 中欣链证数字科技有限公司 | 一种用户请求分配方法、装置、设备及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130263151A1 (en) * | 2012-04-03 | 2013-10-03 | Microsoft Corporation | Consistent Hashing Table for Workload Distribution |
CN108121810A (zh) * | 2017-12-26 | 2018-06-05 | 北京锐安科技有限公司 | 一种数据去重方法、系统、中心服务器及分布式服务器 |
CN108769111A (zh) * | 2018-04-17 | 2018-11-06 | 平安科技(深圳)有限公司 | 一种服务器连接方法、计算机可读存储介质及终端设备 |
CN110213038A (zh) * | 2019-06-03 | 2019-09-06 | 中城智慧科技有限公司 | 一种基于vrf的权益随机共识方法及系统 |
-
2019
- 2019-12-23 CN CN201911340964.XA patent/CN111182043B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130263151A1 (en) * | 2012-04-03 | 2013-10-03 | Microsoft Corporation | Consistent Hashing Table for Workload Distribution |
CN108121810A (zh) * | 2017-12-26 | 2018-06-05 | 北京锐安科技有限公司 | 一种数据去重方法、系统、中心服务器及分布式服务器 |
CN108769111A (zh) * | 2018-04-17 | 2018-11-06 | 平安科技(深圳)有限公司 | 一种服务器连接方法、计算机可读存储介质及终端设备 |
CN110213038A (zh) * | 2019-06-03 | 2019-09-06 | 中城智慧科技有限公司 | 一种基于vrf的权益随机共识方法及系统 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112541039A (zh) * | 2020-12-07 | 2021-03-23 | 武汉联影医疗科技有限公司 | 数据库处理方法、装置、计算机设备和存储介质 |
CN114776176A (zh) * | 2022-05-24 | 2022-07-22 | 中欣链证数字科技有限公司 | 一种贵金属存储方法、装置、设备及系统 |
CN115002131A (zh) * | 2022-05-24 | 2022-09-02 | 中欣链证数字科技有限公司 | 一种用户请求分配方法、装置、设备及系统 |
CN115002131B (zh) * | 2022-05-24 | 2024-03-01 | 中欣链证数字科技有限公司 | 一种用户请求分配方法、装置、设备及系统 |
CN114776176B (zh) * | 2022-05-24 | 2024-05-14 | 北京金玖银玖数字科技有限公司 | 一种贵金属存储方法、装置、设备及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN111182043B (zh) | 2022-08-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111182043B (zh) | 哈希值的分配方法及装置 | |
CN107622091B (zh) | 一种数据库查询方法和装置 | |
CN106407207B (zh) | 一种实时新增数据更新方法和装置 | |
CN109684092B (zh) | 资源分配方法及装置 | |
CN108595268B (zh) | 一种基于MapReduce的数据分配方法、装置及计算机可读存储介质 | |
TWI694700B (zh) | 資料處理方法和裝置、用戶端 | |
CN111813805A (zh) | 一种数据处理方法及装置 | |
CN110519406B (zh) | 一种虚拟地址分配方法、装置及ctdb集群和存储介质 | |
CN113282941A (zh) | 获取对象标识的方法、装置、电子设备及存储介质 | |
CN112148693A (zh) | 一种数据处理方法、装置及存储介质 | |
JP2022539291A (ja) | 計算資源の動的割り当て | |
CN111064786A (zh) | 账户标识管理方法及设备 | |
CN112650692A (zh) | 堆内存分配方法、装置及存储介质 | |
CN113766047A (zh) | 一种任务分组方法、装置、计算机设备及存储介质 | |
CN108182509B (zh) | 基于数据的分配方法、装置、存储介质及电子设备 | |
CN107770190B (zh) | 一种权限管理方法及装置 | |
US5504872A (en) | Address translation register control device in a multiprocessor system | |
US9201982B2 (en) | Priority search trees | |
CN111259012A (zh) | 数据均匀化方法、装置、计算机设备及存储介质 | |
CN116881003A (zh) | 资源分配方法、装置、服务设备及存储介质 | |
CN113076266B (zh) | 一种内存管理方法、装置、电子设备及存储介质 | |
CN111258733B (zh) | 一种嵌入式os任务调度方法、装置、终端设备及存储介质 | |
CN111327546B (zh) | 一种报文转发的方法及装置 | |
US11429452B2 (en) | Method for distributing keys using two auxiliary hashing functions | |
CN116194906A (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 |