CN109769019B - 一种一致性负载均衡方法及装置 - Google Patents

一种一致性负载均衡方法及装置 Download PDF

Info

Publication number
CN109769019B
CN109769019B CN201811653777.2A CN201811653777A CN109769019B CN 109769019 B CN109769019 B CN 109769019B CN 201811653777 A CN201811653777 A CN 201811653777A CN 109769019 B CN109769019 B CN 109769019B
Authority
CN
China
Prior art keywords
node
nodes
modulus
service
client
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.)
Active
Application number
CN201811653777.2A
Other languages
English (en)
Other versions
CN109769019A (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.)
Shenzhen Lan You Technology Co Ltd
Original Assignee
Shenzhen Lan You 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 Shenzhen Lan You Technology Co Ltd filed Critical Shenzhen Lan You Technology Co Ltd
Priority to CN201811653777.2A priority Critical patent/CN109769019B/zh
Publication of CN109769019A publication Critical patent/CN109769019A/zh
Application granted granted Critical
Publication of CN109769019B publication Critical patent/CN109769019B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Computer And Data Communications (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种一致性负载均衡方法及装置,该方法包括:计算N个节点的哈希值,并依据所述哈希值将N个所述节点配置到对应的服务节点环,N为正整数;接收客户端的请求数据,并依据所述请求数据提取键值;将所述键值对N取模以得到第一模值;依据所述第一模值获取所述服务节点环中符合预设条件的节点,并将所述节点的属性信息返回至所述客户端。本发明的有益效果是,从客户信息处直接取模,避免了每次请求都需要计算哈希值,解决哈希一致性负载均衡中多次使用哈希算法对CPU造成高消耗的问题。

Description

一种一致性负载均衡方法及装置
技术领域
本发明涉及一致性负载均衡技术领域,尤其涉及一种一致性负载均衡方法及装置。
背景技术
目前IT服务架构大都采用微服务化之后,系统分布式部署。通过微服务化实现服务的专业化和精细分工,分布式部署提升服务的可靠性和可用性。分布式部署后采用负载均衡解决并发流量和流量重定向的问题。负载均衡是分布式架构的重点,负载均衡机制将决定着整个服务集群的性能与稳定。其中,微服务是一个新兴的软件架构,就是把一个大型的单个应用程序和服务拆分为数十个的支持微服务。一个微服务的策略可以让工作变得更为简便,它可扩展单个组件而不是整个的应用程序堆栈,从而满足服务等级协议。分布式是指一个系统拆成n个子工程,每一个子工程配置服务器,独立运作。但是需要相互协作才能运转整个系统流程。每一个节点都可以配置集群。
涉及负载均衡的现有技术主要包括TCP网络通信、多线程数据异步处理、Linuxepoll I/O多路复用技术等技术。当前大部分负载均衡采用组件实现,主要与集群中的各个服务器进行通讯。负载均衡组件主要提供以下基础功能:维护服务器的IP、DNS名称等信息;根据特定的负载均衡策略在服务器列表中循环。
负载均衡的效果取决于负载均衡策略的设计和实现,负载均衡策略是一个逻辑组件,这些逻辑将会决定,从服务器列表中返回哪个服务器实例。
请求数据分发按如下的方式在系统中进行:
1)客户端需要向服务端发起TCP的数据请求,调用负载均衡组件的API获取服务端信息;
2)负载均衡组件根据请求类型选定均衡策略;
3)均衡策略根据规则从服务列表中选定在线的终端服务的服务信息并返回;
4)服务端检测服务的信息,如果有TCP连接,直接发送请求数据;否则使用服务信息和终端服务建立TCP连接后发送请求数据。
采用负载均衡后,对于包含会话的业务,需要会话保持。即是指在负载均衡器上有一种机制,在作负载均衡的同时,还保证同一用户相关连的访问请求会被分配到同一台服务器上。
现有的一致性负载均衡策略主要是一致性哈希的负载均衡策略;它是根据哈希一致性的原理,相同用户参数的请求总是发到同一提供者。当某一台提供者挂时,原本发往该提供者的请求,基于虚拟节点,平摊到其它提供者,不会引起剧烈变动。其中,一致性哈希算法在1997年由麻省理工学院提出,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简单哈希算法带来的问题,使得DHT可以在P2P环境中真正得到应用。
假设有8个节点,组成A-H的8个虚拟节点,A-H哈希值分别是递增的,当有一个请求进来,通过计算参数的哈希值,比如该值刚好是1的位置,那么选中比1的值大的最小的那个实例,则结果该请求选中C虚拟节点;假如请求的参数的哈希值是在2的位置,那么找不到比2的值大的最小的实例,则选中所有实例中最小的一个,也就是A。
但是,由于一致性哈希是要对用户参数做一致性哈希算法计算哈希值,每次调用一次,会比较占CPU资源。
发明内容
本发明的目的在于提供一种一致性负载均衡方法及装置,解决现有技术中一致性哈希是要对用户参数做一致性哈希算法计算哈希值,每次调用一次,会比较占CPU资源的问题。
本发明的技术方案实现如下:
一方面,本发明提供一种一致性负载均衡方法,包括:
计算N个节点的哈希值,并依据所述哈希值将N个所述节点配置到对应的服务节点环,N为正整数;
接收客户端的请求数据,并依据所述请求数据提取键值;
将所述键值对N取模以得到第一模值;
依据所述第一模值获取所述服务节点环中符合预设条件的节点,并将所述节点的属性信息返回至所述客户端。
在本发明所述的一致性负载均衡方法中,所述计算N个节点的哈希值,并依据所述哈希值将N个所述节点配置到对应的服务节点环,N为正整数中:
N=2x,0≤x<32。
在本发明所述的一致性负载均衡方法中,所述接收客户端的请求数据,并依据所述请求数据提取键值,包括:
接收客户端的第一请求数据以向节点填入服务信息,并依据所述第一请求数据提取键值;
接收客户端的第二请求数据以查找节点的可用服务,并依据所述第二请求数据提取用户参数。
在本发明所述的一致性负载均衡方法中,所述将所述键值对N取模以得到第一模值,包括:
将所述键值对N取模以得到第一模值;
依据所述用户参数提取内存中的多位字符,将所述多位字符转换为十进制数值,将所述十进制数值对N取模以得到第二模值。
在本发明所述的一致性负载均衡方法中,所述依据所述第一模值获取所述服务节点环中符合预设条件的节点,并将所述节点的属性信息返回至所述客户端,包括:
依据所述第一模值获取所述服务节点环中的第R个节点,判断所述第R个节点是否为空,若是,则将所述第R个节点的属性信息返回至所述客户端,并于所述第R个节点中填入服务信息;若否,则从所述第R个节点往后查找节点,当查找到空的节点时,将所述空的节点的属性信息返回至所述客户端,并于所述空的节点中填入服务信息;其中,R为第一模值;
依据所述第二模值获取所述服务节点环中的第T个节点,判断所述第T个节点是否有可用服务,若是,则将所述第T个节点的属性信息返回至所述客户端,并从所述第T个节点中获取所述可用服务;若否,则从所述第T个节点往后查找节点,当查找到具有可用服务的节点时,将所述具有可用服务的节点的属性信息返回至所述客户端,并于所述具有可用服务的节点中获取所述可用服务;其中,T为第二模值。
另一方面,提供一种一致性负载均衡装置,其中存储有多条指令,所述指令适于由处理器加载并执行,包括:
计算N个节点的哈希值,并依据所述哈希值将N个所述节点配置到对应的服务节点环,N为正整数;
接收客户端的请求数据,并依据所述请求数据提取键值;
将所述键值对N取模以得到第一模值;
依据所述第一模值获取所述服务节点环中符合预设条件的节点,并将所述节点的属性信息返回至所述客户端。
在本发明所述的一致性负载均衡装置中,所述计算N个节点的哈希值,并依据所述哈希值将N个所述节点配置到对应的服务节点环,N为正整数中:
N=2x,0≤x<32。
在本发明所述的一致性负载均衡装置中,所述接收客户端的请求数据,并依据所述请求数据提取键值,包括:
接收客户端的第一请求数据以向节点填入服务信息,并依据所述第一请求数据提取键值;
接收客户端的第二请求数据以查找节点的可用服务,并依据所述第二请求数据提取用户参数。
在本发明所述的一致性负载均衡装置中,所述将所述键值对N取模以得到第一模值,包括:
将所述键值对N取模以得到第一模值;
依据所述用户参数提取内存中的多位字符,将所述多位字符转换为十进制数值,将所述十进制数值对N取模以得到第二模值。
在本发明所述的一致性负载均衡装置中,所述依据所述第一模值获取所述服务节点环中符合预设条件的节点,并将所述节点的属性信息返回至所述客户端,包括:
依据所述第一模值获取所述服务节点环中的第R个节点,判断所述第R个节点是否为空,若是,则将所述第R个节点的属性信息返回至所述客户端,并于所述第R个节点中填入服务信息;若否,则从所述第R个节点往后查找节点,当查找到空的节点时,将所述空的节点的属性信息返回至所述客户端,并于所述空的节点中填入服务信息;其中,R为第一模值;
依据所述第二模值获取所述服务节点环中的第T个节点,判断所述第T个节点是否有可用服务,若是,则将所述第T个节点的属性信息返回至所述客户端,并从所述第T个节点中获取所述可用服务;若否,则从所述第T个节点往后查找节点,当查找到具有可用服务的节点时,将所述具有可用服务的节点的属性信息返回至所述客户端,并于所述具有可用服务的节点中获取所述可用服务;其中,T为第二模值。
因此,本发明的有益效果是,从客户信息处直接取模,避免了每次请求都需要计算哈希值,解决哈希一致性负载均衡中多次使用哈希算法对CPU造成高消耗的问题。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1为本发明一实施例提供的一种一致性负载均衡方法的流程图。
具体实施方式
为了对本发明的技术特征、目的和效果有更加清楚的理解,以下将对照附图详细说明本发明的具体实施方式。应当理解,以下说明仅为本发明实施例的具体阐述,不应以此限制本发明的保护范围。
参见图1,图1为本发明一实施例提供的一种一致性负载均衡方法的流程图,该一致性负载均衡方法包括步骤S1-S4:
S1、计算N个节点的哈希值,并依据所述哈希值将N个所述节点配置到对应的服务节点环,N为正整数;其中,N=2x,0≤x<32。优选的,N为128。例如:求出服务器(节点)的哈希值,并将其配置到0~232的圆(continuum)上。
S2、接收客户端的请求数据,并依据所述请求数据提取键值;步骤S2包括步骤S21-S22:
S21、接收客户端的第一请求数据以向节点填入服务信息,并依据所述第一请求数据提取键值;键值(key)是windows中注册表中的概念。键值位于注册表结构链末端,和文件系统的文件类似,包含当前计算机及应用程序执行时使用的实际配置信息和数据。
S22、接收客户端的第二请求数据以查找节点的可用服务,并依据所述第二请求数据提取用户参数。
S3、将所述键值对N取模以得到第一模值;步骤S3包括步骤S31-S32:
S31、将所述键值对N取模以得到第一模值;其中,取模运算是指:
对于整型数a,b来说:
1.求整数商:c=a/b;
2.计算模或者余数:r=a-c*b。
S32、依据所述用户参数提取内存中的多位字符,将所述多位字符转换为十进制数值,将所述十进制数值对N取模以得到第二模值。
S4、依据所述第一模值获取所述服务节点环中符合预设条件的节点,并将所述节点的属性信息返回至所述客户端。步骤S4包括步骤S41-S42:
S41、依据所述第一模值获取所述服务节点环中的第R个节点,判断所述第R个节点是否为空,若是,则将所述第R个节点的属性信息返回至所述客户端,并于所述第R个节点中填入服务信息;若否,则从所述第R个节点往后查找节点,当查找到空的节点时,将所述空的节点的属性信息返回至所述客户端,并于所述空的节点中填入服务信息;其中,R为第一模值;即如果服务节点环R已经有服务,往后找到一个为空的环点填入服务信息,否则直接填入服务信息,例如:从第R个节点的位置开始顺时针查找,将数据保存到找到的第一个服务器上。如果超过232仍然找不到服务器,就会保存到第一台服务器上。
S42、依据所述第二模值获取所述服务节点环中的第T个节点,判断所述第T个节点是否有可用服务,若是,则将所述第T个节点的属性信息返回至所述客户端,并从所述第T个节点中获取所述可用服务;若否,则从所述第T个节点往后查找节点,当查找到具有可用服务的节点时,将所述具有可用服务的节点的属性信息返回至所述客户端,并于所述具有可用服务的节点中获取所述可用服务;其中,T为第二模值。例如:查找服务时,通过提取用户参数的8个字符当作长整数对N取模得到结果T,服务节点环T有可用服务,返回T服务,否则从第T个节点往下找最近的可用服务,并返回。
此外,本发明还提供一种一致性负载均衡装置(即存储介质),其中存储有多条指令,所述指令适于由处理器加载并执行,从而实现上述方法。
综上所述,虽然本发明已以优选实施例揭露如上,但上述优选实施例并非用以限制本发明,本领域的普通技术人员,在不脱离本发明的精神和范围内,均可作各种更动与润饰,因此本发明的保护范围以权利要求界定的范围为准。

Claims (4)

1.一种一致性负载均衡方法,其特征在于,包括:
计算N个节点的哈希值,并依据所述哈希值将N个所述节点配置到对应的服务节点环,N为正整数;
接收客户端的请求数据,并依据所述请求数据提取键值,包括:
接收客户端的第一请求数据以向节点填入服务信息,并依据所述第一请求数据提取键值;
接收客户端的第二请求数据以查找节点的可用服务,并依据所述第二请求数据提取用户参数;
将所述键值对N取模以得到第一模值,包括:
将所述键值对N取模以得到第一模值;
依据所述用户参数提取内存中的多位字符,将所述多位字符转换为十进制数值,将所述十进制数值对N取模以得到第二模值;
依据所述第一模值获取所述服务节点环中符合预设条件的节点,并将所述节点的属性信息返回至所述客户端,包括:
依据所述第一模值获取所述服务节点环中的第R个节点,判断所述第R个节点是否为空,若是,则将所述第R个节点的属性信息返回至所述客户端,并于所述第R个节点中填入服务信息;若否,则从所述第R个节点往后查找节点,当查找到空的节点时,将所述空的节点的属性信息返回至所述客户端,并于所述空的节点中填入服务信息;其中,R为第一模值;
依据所述第二模值获取所述服务节点环中的第T个节点,判断所述第T个节点是否有可用服务,若是,则将所述第T个节点的属性信息返回至所述客户端,并从所述第T个节点中获取所述可用服务;若否,则从所述第T个节点往后查找节点,当查找到具有可用服务的节点时,将所述具有可用服务的节点的属性信息返回至所述客户端,并于所述具有可用服务的节点中获取所述可用服务;其中,T为第二模值。
2.根据权利要求1所述的一致性负载均衡方法,其特征在于,所述计算N个节点的哈希值,并依据所述哈希值将N个所述节点配置到对应的服务节点环,N为正整数中:
N=2x,0≤x<32。
3.一种一致性负载均衡装置,其中存储有多条指令,所述指令适于由处理器加载并执行,其特征在于,包括:
计算N个节点的哈希值,并依据所述哈希值将N个所述节点配置到对应的服务节点环,N为正整数;
接收客户端的请求数据,并依据所述请求数据提取键值,包括:
接收客户端的第一请求数据以向节点填入服务信息,并依据所述第一请求数据提取键值;
接收客户端的第二请求数据以查找节点的可用服务,并依据所述第二请求数据提取用户参数;
将所述键值对N取模以得到第一模值,包括:
将所述键值对N取模以得到第一模值;
依据所述用户参数提取内存中的多位字符,将所述多位字符转换为十进制数值,将所述十进制数值对N取模以得到第二模值;
依据所述第一模值获取所述服务节点环中符合预设条件的节点,并将所述节点的属性信息返回至所述客户端,包括:
依据所述第一模值获取所述服务节点环中的第R个节点,判断所述第R个节点是否为空,若是,则将所述第R个节点的属性信息返回至所述客户端,并于所述第R个节点中填入服务信息;若否,则从所述第R个节点往后查找节点,当查找到空的节点时,将所述空的节点的属性信息返回至所述客户端,并于所述空的节点中填入服务信息;其中,R为第一模值;
依据所述第二模值获取所述服务节点环中的第T个节点,判断所述第T个节点是否有可用服务,若是,则将所述第T个节点的属性信息返回至所述客户端,并从所述第T个节点中获取所述可用服务;若否,则从所述第T个节点往后查找节点,当查找到具有可用服务的节点时,将所述具有可用服务的节点的属性信息返回至所述客户端,并于所述具有可用服务的节点中获取所述可用服务;其中,T为第二模值。
4.根据权利要求3所述的一致性负载均衡装置,其特征在于,所述计算N个节点的哈希值,并依据所述哈希值将N个所述节点配置到对应的服务节点环,N为正整数中:
N=2x,0≤x<32。
CN201811653777.2A 2018-12-29 2018-12-29 一种一致性负载均衡方法及装置 Active CN109769019B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811653777.2A CN109769019B (zh) 2018-12-29 2018-12-29 一种一致性负载均衡方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811653777.2A CN109769019B (zh) 2018-12-29 2018-12-29 一种一致性负载均衡方法及装置

Publications (2)

Publication Number Publication Date
CN109769019A CN109769019A (zh) 2019-05-17
CN109769019B true CN109769019B (zh) 2021-11-09

Family

ID=66453151

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811653777.2A Active CN109769019B (zh) 2018-12-29 2018-12-29 一种一致性负载均衡方法及装置

Country Status (1)

Country Link
CN (1) CN109769019B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114785737A (zh) * 2022-04-11 2022-07-22 阿里巴巴(中国)有限公司 报文处理方法、网关设备、服务器及存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104580393A (zh) * 2014-12-18 2015-04-29 北京蓝汛通信技术有限责任公司 用于服务器集群系统的扩容方法、装置及服务器集群系统
CN104683422A (zh) * 2013-12-03 2015-06-03 腾讯科技(深圳)有限公司 数据传输方法及装置
CN102932434B (zh) * 2012-10-17 2015-10-14 北京奇虎科技有限公司 一种用于对服务器进行负载均衡的方法及装置
CN106254240A (zh) * 2016-09-18 2016-12-21 腾讯科技(深圳)有限公司 一种数据处理方法和路由层设备以及系统
CN106648891A (zh) * 2016-12-09 2017-05-10 中国联合网络通信集团有限公司 基于MapReduce模型的任务执行方法和装置
CN107197035A (zh) * 2017-06-21 2017-09-22 中国民航大学 一种基于一致性哈希算法的亲和性动态负载均衡方法
CN108199909A (zh) * 2018-03-30 2018-06-22 浙江网新恒天软件有限公司 一种基于一致性哈希的高可用负载均衡系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8930489B2 (en) * 2011-10-11 2015-01-06 Rakspace US, Inc. Distributed rate limiting of handling requests

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102932434B (zh) * 2012-10-17 2015-10-14 北京奇虎科技有限公司 一种用于对服务器进行负载均衡的方法及装置
CN104683422A (zh) * 2013-12-03 2015-06-03 腾讯科技(深圳)有限公司 数据传输方法及装置
CN104580393A (zh) * 2014-12-18 2015-04-29 北京蓝汛通信技术有限责任公司 用于服务器集群系统的扩容方法、装置及服务器集群系统
CN106254240A (zh) * 2016-09-18 2016-12-21 腾讯科技(深圳)有限公司 一种数据处理方法和路由层设备以及系统
CN106648891A (zh) * 2016-12-09 2017-05-10 中国联合网络通信集团有限公司 基于MapReduce模型的任务执行方法和装置
CN107197035A (zh) * 2017-06-21 2017-09-22 中国民航大学 一种基于一致性哈希算法的亲和性动态负载均衡方法
CN108199909A (zh) * 2018-03-30 2018-06-22 浙江网新恒天软件有限公司 一种基于一致性哈希的高可用负载均衡系统

Also Published As

Publication number Publication date
CN109769019A (zh) 2019-05-17

Similar Documents

Publication Publication Date Title
US11863417B2 (en) Routing mode and point-of-presence selection service
US10033627B1 (en) Routing mode and point-of-presence selection service
US10091096B1 (en) Routing mode and point-of-presence selection service
CN108173774B (zh) 一种客户端的升级方法及系统
US10601767B2 (en) DNS query processing based on application information
EP2277110B1 (en) Distributed service framework
EP2216958B1 (en) Method and device for reconstructing torrent content metadata
US20140095649A1 (en) Proxy-based cache content distribution and affinity
CN110166570B (zh) 业务会话管理方法、装置、电子设备
US20100169442A1 (en) Apparatus and method for providing peer-to-peer proxy service with temporary storage management and traffic load balancing in peer-to-peer communications
JP5599943B2 (ja) サーバクラスター
US7844708B2 (en) Method and apparatus for load sharing and data distribution in servers
US11075987B1 (en) Load estimating content delivery network
US20130297703A1 (en) Peer node and method for improved peer node selection
KR101402367B1 (ko) 전화 호출 관리 방법 및 호출 관리 시스템
US9760370B2 (en) Load balancing using predictable state partitioning
CN109769019B (zh) 一种一致性负载均衡方法及装置
JP5957965B2 (ja) 仮想化システム、負荷分散装置、負荷分散方法、及び負荷分散プログラム
US20100257256A1 (en) Method for downloading file in parallel
US11902352B2 (en) HttpDNS scheduling method, apparatus, medium and device
EP2887620A1 (en) Session Initiation Protocol Messaging
CN114615276B (zh) 一种内容分发网络域名调度方法及装置
CN114466031B (zh) 一种cdn系统节点配置方法、装置、设备及存储介质
CN113873302B (zh) 内容分发方法、装置、存储介质和电子设备
Gupta et al. 2-Tiered cloud based content delivery network architecture: An efficient load balancing approach for video streaming

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