公开/公告号CN105208133A
专利类型发明专利
公开/公告日2015-12-30
原文格式PDF
申请/专利权人 上海斐讯数据通信技术有限公司;
申请/专利号CN201510683853.4
发明设计人 徐艺圣;
申请日2015-10-20
分类号H04L29/08(20060101);
代理机构31219 上海光华专利事务所;
代理人王再朝
地址 201616 上海市松江区思贤路3666号
入库时间 2023-12-18 13:23:49
法律状态公告日
法律状态信息
法律状态
2020-08-21
专利权的转移 IPC(主分类):H04L29/08 登记生效日:20200804 变更前: 变更后: 申请日:20151020
专利申请权、专利权的转移
2018-05-25
授权
授权
2016-01-27
实质审查的生效 IPC(主分类):H04L29/08 申请日:20151020
实质审查的生效
2015-12-30
公开
公开
技术领域
本发明涉及服务器集群应用技术领域,特别是涉及一种服务器、负载均衡器以及服务器负载均衡方法和系统。
背景技术
负载均衡技术普遍应用于服务器集群中,由独立的负载均衡软件或硬件,按照设定的负载均衡策略,将服务请求分发至集群中不同的服务器,达到整体服务器集群的处理均衡目的。
目前普遍采用的负载均衡策略均是基于被动均摊的原则,比如轮询策略(Round-Robin),或者带有权重的轮询策略(WeightedRound-Robin)。这些均衡策略技术是假设集群中的各服务器具有相似的处理能力,而实际应用中集群内各服务器性能参差不齐,并动态变化。其次,现有的均衡策略技术缺乏依据服务器实时处理情况进行动态调整的能力。
发明内容
鉴于以上所述现有技术的缺点,本发明的目的在于提供一种服务器、负载均衡器以及服务器负载均衡方法和系统,用于解决现有负载均衡策略技术缺乏依据服务器实时处理情况进行动态调整的能力的问题。
为实现上述目的及其他相关目的,本发明提供一种服务器负载均衡方法,应用于负载均衡器和连接在所述负载均衡器上的服务器集群中,所述负载均衡方法包括:
服务器向负载均衡器发送反映自身处理能力的耗时数据;
负载均衡器接收所述服务器集群中所有服务器的所述耗时数据并按处理能力由强到弱的顺序对所述耗时数据进行排序,形成一轮优先级队列;以及
在负载均衡器接收到请求时,将所述请求依次分配至所述优先级队列中当前最高优先级的耗时数据所对应的服务器进行处理。
优选地,所述耗时数据包括每一服务器处理每次请求的耗时值和在一固定周期内处理一次请求的平均耗时值。
优选地,所述负载均衡器和服务器之间采用JMS的发布/订阅模式进行通信,并为请求耗时数据建立专用的消息主题,其中,服务器为所述消息主题的发布者,负载均衡器为所述消息主题的订阅者。
本发明还提供了一种负载均衡器,至少连接于一服务器集群,所述负载均衡器包括:
耗时数据队列生成单元,用于接收所述服务器集群中所有服务器向负载均衡器发送的反映服务器处理能力的耗时数据,并按处理能力由强到弱的顺序对所述耗时数据进行排序,以形成一轮优先级队列;
请求均衡分配单元,用于在负载均衡器接收到请求时,将所述请求依次分配至所述优先级队列中当前最高优先级的耗时数据所对应的服务器进行处理。
优选地,所述耗时数据包括每一服务器处理每次请求的耗时值和在一固定周期内处理一次请求的平均耗时值。
优选地,所述负载均衡器和服务器之间采用JMS的发布/订阅模式进行通信,并为请求耗时数据建立专用的消息主题,其中,服务器为所述消息主题的发布者,负载均衡器为所述消息主题的订阅者。
本发明还提供了一种服务器,由若干所述服务器构成一服务器集群,并将所述服务器集群连接在一负载均衡器上,所述服务器包括:
耗时数据发送单元,用于统计反映服务器处理能力的耗时数据并向负载均衡器发送所述耗时数据,以供负载均衡器在接收所述服务器集群中所有服务器的所述耗时数据后按处理能力由强到弱的顺序对所述耗时数据进行排序以形成一轮优先级队列;
请求接收单元,用于在负载均衡器接收到请求并将所述请求依次分配至所述优先级队列中当前最高优先级的耗时数据所对应的服务器进行处理时,对应接收所述请求。
优选地,所述耗时数据包括每一服务器处理每次请求的耗时值和在一固定周期内处理一次请求的平均耗时值。
优选地,所述负载均衡器和服务器之间采用JMS的发布/订阅模式进行通信,并为请求耗时数据建立专用的消息主题,其中,服务器为所述消息主题的发布者,负载均衡器为所述消息主题的订阅者。
本发明还提供了一种服务器负载均衡系统,包括:
服务器集群,包括若干服务器,所述服务器用于向负载均衡器发送反映自身处理能力的耗时数据;
负载均衡器,用于接收所述服务器集群中所有服务器的所述耗时数据并按处理能力由强到弱的顺序对所述耗时数据进行排序,形成一轮优先级队列;以及在接收到请求时,将所述请求依次分配至所述优先级队列中当前最高优先级的耗时数据所对应的服务器进行处理。
优选地,所述耗时数据包括每一服务器处理每次请求的耗时值和在一固定周期内处理一次请求的平均耗时值。
优选地,所述负载均衡器和服务器之间采用JMS的发布/订阅模式进行通信,并为请求耗时数据建立专用的消息主题,其中,服务器为所述消息主题的发布者,负载均衡器为所述消息主题的订阅者。
如上所述,本发明具有以下有益效果:本发明依据集群中的各服务器上报的实时业务处理情况,动态调整负载均衡策略,以达到整体集群的负载均衡优化目的,很好地解决了现有负载均衡策略技术缺乏依据服务器实时处理情况进行动态调整的能力的问题。
附图说明
图1显示为本发明中服务器负载均衡方法所在的应用环境原理图。
图2显示为本发明中服务器负载均衡系统的原理图示意图。
图3示为本发明中一种负载均衡器的实施原理图。
图4示为本发明中一种服务器的实施原理图。
元件标号说明
101,201,301负载均衡器
102,202服务器集群
102a,102b,102c,202a,202b,202c,401服务器
301a耗时数据队列生成单元
301b请求均衡分配单元
401a耗时数据发送单元
401b请求接收单元
具体实施方式
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
实施例1
本实施例给出了一种服务器负载均衡方法,如图1所示,该服务器负载均衡方法应用于负载均衡器101和连接在所述负载均衡器101上的服务器集群102中,所述负载均衡方法包括:由服务器(102a,102b,102c)向负载均衡器101发送反映自身处理能力的耗时数据;负载均衡器101接收所述服务器集群102中所有服务器的所述耗时数据并按处理能力由强到弱的顺序对所述耗时数据进行排序,形成一轮优先级队列;以及在负载均衡器101接收到请求时,将所述请求依次分配至所述优先级队列中当前最高优先级的耗时数据所对应的服务器进行处理。本发明通过负载均衡器101依据各服务器上报的耗时数据,进行负载均衡优化,将访问请求优先转发至处理能力较强的服务器,解决了现有负载均衡策略技术缺乏依据服务器实时处理情况进行动态调整的能力的问题。
在具体实施中,负载均衡器101内部维护一个优先级队列(PriorityQueue),将接收到的服务器请求处理平均耗时数据存入其中,按数值从小到大进行排列(即按服务器处理能力由强到弱的顺序进行排序);这样,负载均衡器101每次分发请求均从该优先级队列中依次取得平均处理时间最小的服务器地址进行分发,直至队列中的服务器均使用,并重复该过程,达到动态优化负载均衡策略的目的。
在具体实施中,所述耗时数据包括服务器处理每次请求的耗时值和在一固定周期内处理一次请求的平均耗时值。
其中,服务器记录每次的请求处理时间,即耗时值,定义如下:
耗时值=|服务器接收到请求的时间点-服务器返回请求结果的时间点|,
具体地,如果该请求不产生返回值,例如出错或超时等,那么均按出错或超时结束时间点作为服务器返回请求结果的时间点来进行计算。
在具体实施中,服务器在固定周期内统计所有请求处理耗时的平均值,已得到平均耗时值。该固定周期可根据应用需要变化,通常为分钟或小时级别,如10分钟或1小时等。
在具体实施中,集群中各服务器将该耗时数据通过JMS网络消息发送至负载均衡器101,在上述固定统计周期的间隔,服务器通过Java消息服务(英文全称:JavaMessagingService,简称:JMS),以网络消息的形式,将请求处理的耗时数据上传至负载均衡器101,具体如下:
1.采用JMS的发布/订阅模式(Publish/Subscribe),为请求处理平均耗时创建专用的消息主题(MessagingTopic);
2.负载均衡器101作为该消息主题的订阅者(Subscriber),集群内的各服务器均作为该消息主题的发布者(Publisher);
3.服务器的请求处理平均耗时数据,以文本形式放入消息体内进行发送。
也即是,负载均衡器101和集群中各服务器之间采用JMS的发布/订阅模式进行通信,并为请求耗时数据建立专用的消息主题,其中,服务器为所述消息主题的发布者,负载均衡器101为所述消息主题的订阅者。
实施例2
本实施例中提供了一种服务器负载均衡系统,如图2,所述服务器负载均衡系统包括:服务器集群202,包括若干服务器(202a,202b,202c),所述服务器(202a,202b,202c)用于向负载均衡器201发送反映自身处理能力的耗时数据;负载均衡器201,用于接收所述服务器集群202中所有服务器的所述耗时数据并按处理能力由强到弱的顺序对所述耗时数据进行排序,形成一轮优先级队列;以及在接收到请求时,将所述请求依次分配至所述优先级队列中当前最高优先级的耗时数据所对应的服务器进行处理。
在具体实施中,所述耗时数据包括每一服务器处理每次请求的耗时值和在一固定周期内处理一次请求的平均耗时值。
其中,服务器记录每次的请求处理时间,即耗时值,定义如下:
耗时值=|服务器接收到请求的时间点-服务器返回请求结果的时间点|,
具体地,如果该请求不产生返回值,例如出错或超时等,那么均按出错或超时结束时间点作为服务器返回请求结果的时间点来进行计算。
在具体实施中,服务器在固定周期内统计所有请求处理耗时的平均值,已得到平均耗时值。该固定周期可根据应用需要变化,通常为分钟或小时级别,如10分钟或1小时等。
在具体实施中,集群中各服务器将该耗时数据通过JMS网络消息发送至负载均衡器201,在上述固定统计周期的间隔,服务器通过Java消息服务(英文全称:JavaMessagingService,简称:JMS),以网络消息的形式,将请求处理的耗时数据上传至负载均衡器201,具体如下:
1.采用JMS的发布/订阅模式(Publish/Subscribe),为请求处理平均耗时创建专用的消息主题(MessagingTopic);
2.负载均衡器201作为该消息主题的订阅者(Subscriber),集群内的各服务器均作为该消息主题的发布者(Publisher);
3.服务器的请求处理平均耗时数据,以文本形式放入消息体内进行发送。
也即是,负载均衡器201和集群中各服务器之间采用JMS的发布/订阅模式进行通信,并为请求耗时数据建立专用的消息主题,其中,服务器为所述消息主题的发布者,负载均衡器201为所述消息主题的订阅者。
本实施例通过在负载均衡器201内部维护一个优先级队列(PriorityQueue),将接收到的服务器请求处理平均耗时数据存入其中,按数值从小到大进行排列(即按服务器处理能力由强到弱的顺序进行排序);这样,负载均衡器201每次分发请求均从该优先级队列中依次取得平均处理时间最小的服务器地址进行分发,直至队列中的服务器均使用,并重复该过程,达到动态优化负载均衡策略的目的。
实施例3
本实施例中提供了一种负载均衡器,至少连接于一服务器集群,如图3,所述负载均衡器301包括:耗时数据队列生成单元301a,用于接收所述服务器集群中所有服务器向负载均衡器发送的反映服务器处理能力的耗时数据,并按处理能力由强到弱的顺序对所述耗时数据进行排序,以形成一轮优先级队列;请求均衡分配单元301b,用于在负载均衡器接收到请求时,将所述请求依次分配至所述优先级队列中当前最高优先级的耗时数据所对应的服务器进行处理。
在具体实施中,所述耗时数据包括每一服务器处理每次请求的耗时值和在一固定周期内处理一次请求的平均耗时值。
其中,服务器记录每次的请求处理时间,即耗时值,定义如下:
耗时值=|服务器接收到请求的时间点-服务器返回请求结果的时间点|,
具体地,如果该请求不产生返回值,例如出错或超时等,那么均按出错或超时结束时间点作为服务器返回请求结果的时间点来进行计算。
在具体实施中,服务器在固定周期内统计所有请求处理耗时的平均值,已得到平均耗时值。该固定周期可根据应用需要变化,通常为分钟或小时级别,如10分钟或1小时等。
在具体实施中,所述负载均衡器和服务器之间采用JMS的发布/订阅模式进行通信,并为请求耗时数据建立专用的消息主题,其中,服务器为所述消息主题的发布者,负载均衡器为所述消息主题的订阅者。
实施例4
本实施例还提供了一种服务器401,如图4并结合图1,由若干所述服务器401构成一服务器集群,并将所述服务器集群连接在一负载均衡器上,所述服务器包括:耗时数据发送单元401a,用于统计反映服务器处理能力的耗时数据并向负载均衡器发送所述耗时数据,以供负载均衡器在接收所述服务器集群中所有服务器的所述耗时数据后按处理能力由强到弱的顺序对所述耗时数据进行排序以形成一轮优先级队列;请求接收单元401b,用于在负载均衡器接收到请求并将所述请求依次分配至所述优先级队列中当前最高优先级的耗时数据所对应的服务器进行处理时,对应接收所述请求。
在具体实施中,所述耗时数据包括每一服务器处理每次请求的耗时值和在一固定周期内处理一次请求的平均耗时值。
其中,服务器记录每次的请求处理时间,即耗时值,定义如下:
耗时值=|服务器接收到请求的时间点-服务器返回请求结果的时间点|,
具体地,如果该请求不产生返回值,例如出错或超时等,那么均按出错或超时结束时间点作为服务器返回请求结果的时间点来进行计算。
在具体实施中,服务器在固定周期内统计所有请求处理耗时的平均值,已得到平均耗时值。该固定周期可根据应用需要变化,通常为分钟或小时级别,如10分钟或1小时等。
在具体实施中,所述负载均衡器和服务器之间采用JMS的发布/订阅模式进行通信,并为请求耗时数据建立专用的消息主题,其中,服务器为所述消息主题的发布者,负载均衡器为所述消息主题的订阅者。
综上所述,本发明利用集群中的服务器计算固定周期内的业务处理平均耗时等数据,并通过JMS网络消息来定期向负载均衡器上报该耗时数据,负载均衡器依据接收到的各服务器耗时数据,动态调整负载均衡策略,以达到整体集群的负载均衡优化目的。所以,本发明有效克服了现有技术中的种种缺点而具高度产业利用价值。
上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。
机译: 服务器负载均衡方法,负载均衡系统,服务器及负载均衡器
机译: 服务器-客户端系统,负载均衡器,负载均衡方法和负载均衡程序
机译: 服务器-客户端系统,负载均衡器,负载均衡方法和负载均衡程序