一种基于一致性哈希算法的亲和性动态负载均衡方法技术

技术编号:16283046 阅读:31 留言:0更新日期:2017-09-23 02:33
一种基于一致性哈希算法的亲和性动态负载均衡方法。其包括构建哈希空间环,根据集群系统中各实际服务器节点的权重计算虚拟节点数量,生成相应的虚拟节点,建立虚拟节点和该实际服务器节点间映射关系,将虚拟节点映射到哈希环空间环上;当有新用户请求发送到集群系统中时,解析该用户请求,并从中提取出标识信息,将用户请求映射到哈希环空间环上,再映射到距离最近实际服务器节点进行处理;当集群系统规模发生动态调整时,将用户请求的映射根据集群系统动态调整策略进行调整等步骤。本发明专利技术通过哈希映射方式,使同一用户发送的连续用户服务请求分配到同一实际服务器节点处理,可保证大部分用户的服务亲和性,保障了集群系统的稳定性和可伸缩性。

Affinity dynamic load balancing method based on consistent hash algorithm

Affinity dynamic load balancing method based on consistent hash algorithm. It includes the construction of hash space ring, computing virtual node number according to the actual weight of each server node in the cluster system, the virtual node corresponding to the mapping of virtual nodes and the actual server nodes, the virtual nodes mapped to the hash ring ring; when a new user requests to the cluster system, analysis the user request, and extract information from the identification, mapping the user request to the hash ring ring, and then mapped to the nearest actual server node for processing; when the cluster scale dynamic adjustment, will map the user request according to the cluster system dynamic adjustment strategy adjustment steps. The present invention through hash mapping, the continuous user service to send the same user requests to the same actual server nodes, most users can ensure service compatibility, guarantee the stability and scalability of cluster system.

【技术实现步骤摘要】
一种基于一致性哈希算法的亲和性动态负载均衡方法
本专利技术属于集群系统中服务请求亲和性负载分配
,特别是涉及一种基于一致性哈希算法的亲和性动态负载均衡方法。
技术介绍
目前我国民航业发展迅速,据统计,2016年,民航业完成旅客运输量48796万人次,比上年增长11.9%。逐年增长的航空旅客运输量产生大量的订票需求,给民航旅客服务系统带来了极大挑战。新一代旅客服务系统(即PSS,PassengerServiceSystem)等大规模分布式集群系统能够共同分担海量用户请求,其上部署的负载均衡算法可以提供一种廉价并且有效透明的方法来扩展网络设备和服务器的带宽、增加吞吐量、提高数据处理能力等,因此,负载均衡成为大规模分布式集群系统的重点研究内容。民航业一直在积极建设新一代PSS,由于系统结构和业务需求原因,部分服务的上下文环境被存储在处理该服务请求的服务器上,不能被其他服务器共享,而在处理同一个用户后续请求过程中需要用到这些环境,所以需要分配相同服务器处理。同一个用户的请求会出现互相关联现象,即处理后续请求时,需要用到前面请求的处理结果,所以这部分请求需按时间顺序进行处理。因此,来自同一个用户的请求,应分配到相同的服务器去处理。这称之为服务的亲和性。即服务的亲和性是指:同一用户的连续请求必须由同一服务器进行处理。若服务的亲和性无法满足,会导致用户请求分配不合理性等问题。因此设计同时保证服务的亲和性和负载均衡的算法是必要的。在负载均衡算法的研究方面,目前已经有很多研究成果,从民航业务的亲和性的角度,按照用户请求分配方式,对这些算法进行了如下总结和分析。一类是以轮询机制分配请求,例如:(1)固定比例因子算法:以服务器为单位分配比例因子,并按比例因子轮流分发请求给各个服务器;(2)轮询算法:将用户的请求依次分配给集群系统中的服务节点,循环往复。另一类是按照特定规则分配请求,例如:(1)最小未完成交易数算法:以未完成交易数为负载度量指标,循环服务列表中的每一个服务实例,选择未完成交易数最低的服务器处理请求;(2)改进的动态告警负载均衡算法:基于请求类型、节点工作能力和实时负载值来确定请求转发目标;(3)基于空间填充曲线的动态负载均衡算法:利用空间填充曲线可高效地将高维数据映射到一维索引的特点,使均衡器根据实时收集的各项负载指标快速定位到最优编码的服务器。(4)基于内存云架构的带宽负载均衡算法:内存云数据中心采用段式日志结构文件系统,提出一种数据段交换(data-segmentsexchanging,DSE)算法,周期性地对内存带宽负载不均衡的服务器上数据段进行相互交换,使集群的带宽负载达到均衡。但以上多种负载均衡算法,对于来自同一用户的连续请求,可能会被分配到不同的服务器上,因此不能在保证负载均衡的情况下满足服务的亲和性需求。
技术实现思路
为了解决上述问题,本专利技术的目的在于提供一种基于一致性哈希算法的亲和性动态负载均衡方法。为了达到上述目的,本专利技术提供的基于一致性哈希算法的亲和性动态负载均衡方法包括按按顺序进行的下列步骤:步骤一、构建由多个实际服务器节点构成的哈希空间环,并根据集群系统中各实际服务器节点的权重计算虚拟节点数量,生成相应的虚拟节点,然后建立虚拟节点和该实际服务器节点之间的映射关系,由此将虚拟节点映射到哈希环空间环上;步骤二、每当有一新的用户请求发送到集群系统中时,解析该用户请求,并从中提取出有用的标识信息,然后将用户请求映射到上述哈希环空间环上,再映射到距离其最近的实际服务器节点上进行处理;步骤三、当集群系统规模发生动态调整时,针对扩展和缩减两类实际情况,将用户请求的映射根据集群系统动态调整策略进行调整。在步骤一中,所述的构建由多个实际服务器节点构成的哈希空间环,并根据集群系统中各实际服务器节点的权重计算虚拟节点数量,生成相应的虚拟节点,然后建立虚拟节点和该实际服务器节点之间的映射关系,由此将虚拟节点映射到哈希环空间环上的具体步骤如下:根据键值的比特数N构建一个由多个实际服务器节点构成的0~232-1的哈希空间环,比特数N=32;定义虚拟节点数量并将虚拟节点数量记为VNN,计算公式如下:其中,N为当前集群系统中实际服务器节点总数,k为常数,W为整个集群系统的权重之和,wi为第i个实际服务器节点的权重;根据上面公式计算出虚拟节点数量VNN后生成相应的虚拟节点,然后对每个虚拟节点进行编号,编号Virtual_Nodeit表示第i个实际服务器节点对应的第t个虚拟节点,其中1≤i≤N,1≤t≤VNN;由此建立起虚拟节点和实际服务器节点之间的映射关系,即一个实际服务器节点对应VNN个虚拟节点;之后计算实际服务器节点的哈希值,在JCF中间件平台的服务库中,每个实际服务器节点注册一个元数据表,根据表中实际服务器节点配置的服务器名称,通过MurmurHash3算法计算得到每个实际服务器节点的哈希值Node_hashi,其中1≤i≤N;之后计算虚拟节点的哈希值,对于某个虚拟节点,将实际服务器节点的哈希值Node_hashi加上虚拟节点的编号Virtual_Nodeit的值作为MurmurHash3算法输入,计算得到每个虚拟节点的哈希值,记为Virtual_Node_hashit,表示第i个实际服务器节点对应的第t个虚拟节点的哈希值,其中1≤i≤N,1≤t≤VNN;根据虚拟节点的哈希值Virtual_Node_hashit将虚拟节点映射到哈希空间环上。在步骤二中,所述的每当有一新的用户请求发送到集群系统中时,解析该用户请求,并从中提取出有用的标识信息,然后将用户请求映射到上述哈希环空间环上,再映射到距离其最近的实际服务器节点上进行处理的具体步骤如下:用户根据设定规则设置请求内容并发送到集群系统中,集群系统解析该用户请求,并从用户请求的消息头中获取请求头部的主机值作为标识信息,若该主机值的类型为字符串,首先使用Fowler-NOll-Vo函数将字符串类型的主机值转换成整形数据,公式如下:keyuser=Fowler-NOLL-Vo(host)然后根据上述整形数据keyusr通过MurmurHash3算法计算出用户请求的哈希值User_hash;之后将上述用户请求的哈希值User_hash映射到哈希环空间环上,再沿顺时针方向映射到距离最近的虚拟节点上,根据实际服务器节点和虚拟节点的映射关系,该用户请求实际是映射到对应的实际服务器节点上去处理。在步骤三中,所述的当集群系统规模发生动态调整时,针对扩展和缩减两类实际情况,将用户请求的映射根据集群系统动态调整策略进行调整的具体步骤如下:在集群系统规模扩展情况下,当需要增加实际服务器节点时,首先将该实际服务器节点信息添加到服务库中;再根据规则生成新的实际服务器节点的虚拟节点,并映射到哈希空间环上;最后将用户请求根据规则映射到新的实际服务器节点上进行处理;在集群系统规模缩减情况下,当需要删除实际服务器节点时,先将该实际服务器节点从服务库中删除,并从哈希空间环中删除该实际服务器节点的所有虚拟节点映射,原来发送到该实际服务器节点上的用户请求将沿顺时针方向寻找离自己最近的实际服务器节点而作为新的实际服务器节点,并由新的实际服务器节点来处理该用户请求。本专利技术提供的基于一致性哈希算法本文档来自技高网
...
一种基于一致性哈希算法的亲和性动态负载均衡方法

【技术保护点】
一种基于一致性哈希算法的亲和性动态负载均衡方法,其特征在于:所述的基于一致性哈希算法的亲和性动态负载均衡方法包括按按顺序进行的下列步骤:步骤一、构建由多个实际服务器节点构成的哈希空间环,并根据集群系统中各实际服务器节点的权重计算虚拟节点数量,生成相应的虚拟节点,然后建立虚拟节点和该实际服务器节点之间的映射关系,由此将虚拟节点映射到哈希环空间环上;步骤二、每当有一新的用户请求发送到集群系统中时,解析该用户请求,并从中提取出有用的标识信息,然后将用户请求映射到上述哈希环空间环上,再映射到距离其最近的实际服务器节点上进行处理;步骤三、当集群系统规模发生动态调整时,针对扩展和缩减两类实际情况,将用户请求的映射根据集群系统动态调整策略进行调整。

【技术特征摘要】
1.一种基于一致性哈希算法的亲和性动态负载均衡方法,其特征在于:所述的基于一致性哈希算法的亲和性动态负载均衡方法包括按按顺序进行的下列步骤:步骤一、构建由多个实际服务器节点构成的哈希空间环,并根据集群系统中各实际服务器节点的权重计算虚拟节点数量,生成相应的虚拟节点,然后建立虚拟节点和该实际服务器节点之间的映射关系,由此将虚拟节点映射到哈希环空间环上;步骤二、每当有一新的用户请求发送到集群系统中时,解析该用户请求,并从中提取出有用的标识信息,然后将用户请求映射到上述哈希环空间环上,再映射到距离其最近的实际服务器节点上进行处理;步骤三、当集群系统规模发生动态调整时,针对扩展和缩减两类实际情况,将用户请求的映射根据集群系统动态调整策略进行调整。2.根据权利要求1所述的基于一致性哈希算法的亲和性动态负载均衡方法,其特征在于:在步骤一中,所述的构建由多个实际服务器节点构成的哈希空间环,并根据集群系统中各实际服务器节点的权重计算虚拟节点数量,生成相应的虚拟节点,然后建立虚拟节点和该实际服务器节点之间的映射关系,由此将虚拟节点映射到哈希环空间环上的具体步骤如下:根据键值的比特数N构建一个由多个实际服务器节点构成的0~232-1的哈希空间环,比特数N=32;定义虚拟节点数量并将虚拟节点数量记为VNN,计算公式如下:其中,N为当前集群系统中实际服务器节点总数,k为常数,W为整个集群系统的权重之和,wi为第i个实际服务器节点的权重;根据上面公式计算出虚拟节点数量VNN后生成相应的虚拟节点,然后对每个虚拟节点进行编号,编号Virtual_Nodeit表示第i个实际服务器节点对应的第t个虚拟节点,其中1≤i≤N,1≤t≤VNN;由此建立起虚拟节点和实际服务器节点之间的映射关系,即一个实际服务器节点对应VNN个虚拟节点;之后计算实际服务器节点的哈希值,在JCF中间件平台的服务库中,每个实际服务器节点注册一个元数据表,根据表中实际服务器节点配置的服务器名称,通过MurmurHash3算法计算得到每个实际服务器节点的哈希值Node_hashi,其中1≤i≤N;之后计算虚拟节点的哈希值,对于某个虚拟节点,将实际服务器节点的哈希值Node_hashi加上虚拟节点的编号Virtual_Nodeit的值...

【专利技术属性】
技术研发人员:曹卫东孙晓君丁建立王静王家亮
申请(专利权)人:中国民航大学
类型:发明
国别省市:天津,12

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

1