CN103368864A - 一种基于c/s架构的智能负载均衡方法 - Google Patents

一种基于c/s架构的智能负载均衡方法 Download PDF

Info

Publication number
CN103368864A
CN103368864A CN 201310329306 CN201310329306A CN103368864A CN 103368864 A CN103368864 A CN 103368864A CN 201310329306 CN201310329306 CN 201310329306 CN 201310329306 A CN201310329306 A CN 201310329306A CN 103368864 A CN103368864 A CN 103368864A
Authority
CN
China
Prior art keywords
load
task
node
task node
cpu
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
Application number
CN 201310329306
Other languages
English (en)
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.)
BEIJING HUAYI INTERACTIVE TECHNOLOGY Co Ltd
Original Assignee
BEIJING HUAYI INTERACTIVE 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 BEIJING HUAYI INTERACTIVE TECHNOLOGY Co Ltd filed Critical BEIJING HUAYI INTERACTIVE TECHNOLOGY Co Ltd
Priority to CN 201310329306 priority Critical patent/CN103368864A/zh
Publication of CN103368864A publication Critical patent/CN103368864A/zh
Pending legal-status Critical Current

Links

Images

Abstract

本发明公开了一种基于c/s架构的智能负载均衡方法。本方法为:1)将所有任务节点和一个负载均衡器采用c/s星状结构建立通信连接;其中,任务节点与负载均衡器初始化并维持一个长连接;2)任务节点定期发送节点信息到负载均衡器;3)负载均衡器根据节点信息计算各任务节点的性能值,并根据各任务节点性能值的变化趋势确定任务的分发:如果某个任务节点的性能正在改善,则将总任务队列中的任务分发给该任务节点,如果某个任务节点的性能正在降低,则将总任务队列中的任务暂停分发给该任务节点;4)任务节点接收分发的任务并将任务执行日志反馈给负载均衡器。本发明可实现任务的动态调节,达到精细智能负载均衡。

Description

一种基于c/s架构的智能负载均衡方法
技术领域
本发明涉及一种负载均衡方法,尤其涉及一种基于c/s架构的智能负载均衡方法,属于分布式网络计算领域。 
背景技术
负载均衡是一种通过某种算法实现负载分担的方法。通俗的讲就是统一分配请求的设备,负载均衡会统一接收全部请求,然后按照设定好的算法将这些请求分配给这个负载均衡组中的所有成员,以此来实现请求(负载)的均衡分配。 
负载均衡主要解决任务是减小服务器的压力,平衡的分配系统负载。并且参与负载均衡的服务器总是处于一个或多个集群中,而集群使企业应用程序能够扩大到单个应用程序服务器能够获得的吞吐量以外。 
服务器负载均衡在服务器世界中并不是一个新的概念,目前普遍应用的负载均衡一般可以分为本地负载均衡和全局负载均衡: 
1)、本地负载均衡是指对本地的服务器做负载均衡,如图1所示。 
本地负载均衡能有效地解决数据流量过大、网络负荷过重的问题,并且不需花费昂贵开支购置性能卓越的服务器,充分利用现有设备,避免服务器单点故障造成数据流量的损失。其有灵活多样的均衡策略把数据流量合理地分配给服务器群内的服务器共同负担。即使是再给现有服务器扩充升级,也只是简单地增加一个新的服务器到服务群中,而不需改变现有网络结构、停止现有的服务。 
2)、全局负载均衡是指分别放置在不同地理位置、有不同网络结构的服务器群间作负载均衡。 
全局负载均衡主要用于在一个多区域拥有自己服务器的站点,为了使全球用户只以一个IP地址或域名就能访问到离自己最近的服务器,从而获得最快的访问速度,也可用于子公司分散站点分布广的大公司。 
本方案中我们主要研究的是本地负载均衡。常见的本地负载均衡算法主要有如下几种: 
1).轮询调度(RR) 
轮询算法按顺序把每个新的连接请求分配给下一个服务器,最终把所有请求平分给所有的服务器。轮询算法在大多数情况下都工作的不错,但是如果负载均衡的设备在处理速度、 连接速度和内存等方面不是完全均等,那么效果会较差。 
2).加权轮询调度(WRR) 
该算法中,每个机器接受的连接数量是按权重比例分配的。这是对普通轮询算法的改进,比如可以设定:第三台机器的处理能力是第一台机器的两倍,那么负载均衡器会把两倍的连接数量分配给第3台机器。 
3).随机调度(R) 
负载均衡方法随机的把负载分配到各个可用的服务器上,通过随机数生成算法选取一个服务器,然后把连接发送给它。虽然许多均衡产品都支持该算法,但是它的有效性一直受到质疑,除非把服务器的可运行时间看的很重。 
4).加权随机调度(WR) 
此种均衡算法类似于权重轮循算法,不过在处理请求分担时是个随机选择的过程。 
5).最少连接调度(LC) 
系统把新连接分配给当前连接数目最少的服务器。该算法在各个服务器运算能力基本相似的环境中非常有效。 
6).加权最少连接调度(WLC) 
权重最少连接数调度算法是在做少连接数调度算法的基础上,根据服务器的不同处理能力,给每个服务器分配不同的权值,使其能够接受相应权值数的服务请求,是在最少连接数调度算法的基础上的改进。 
传统负载平衡算法的不足: 
目前主要的负载均衡策略主要都是以连接为粒度的,每个对象从服务器上获取服务都需要建立一个TCP连接,一般的平衡算法主要任务是决定选择下一个集群节点,然后将新的服务请求转发给他。 
1).静态平衡算法的不足 
因为集群系统在运行一段时间之后,各个真实节点的实际负载情况会与负载均衡器上的记录产生一定的偏差。如果采用简单的静态平衡算法,将出现服务器集群负载极不平衡,有些服务器节点极度空闲,有些服务器节点严重超载却受到大量的连接请求。其中轮询调度、加权轮询调度、随机调度、加权随机调度均属于静态平衡算法。 
2).动态反馈平衡算法的不足 
动态反馈平衡算法的思想是:根据后端服务器节点的负载变化情况,动态的调整分配的连接。其中最少连接调度和加权最少连接调度都属于动态反馈平衡算法。此算法的最主要不足是带来额外的服务器节点开销。 
目前的负载均衡技术应用非常广泛,但由于平衡算法有限,负载均衡技术应用领域有一定的局限性,比如无法利用现有的平衡算法进行任务的动态负载。 
发明内容
针对现有技术中存在的不足,本发明的目的在于提供一种基于c/s架构的智能负载均衡方法,本发明是基于任务原子性颗粒的动态负载均衡,如图2所示: 
基于任务分发的负载均衡的技术构思: 
采用C/S星状结构,使得所有任务节点(服务器节点)和一个负载均衡器交互。 
首先负载均衡器和任务节点有各自的服务(deamon),任务节点和负载均衡器初始化并维持一个长连接(所谓长连接,指在一个连接上可以连续发送多个数据包,在连接保持期间,如果没有数据包发送,需要双方发链路检测包),以保证任务节点和控制端的及时通讯,确保实时性。同时客户端程序对任务节点的系统负载信息(内存(mem)、网络(IPC)、CPU、磁盘IO)进行收集并反馈给负载均衡器,并计算出一个加权综合负载值L,公式: 
L=WCPULCPU+WMEMLMEM+WIPCLIPC+WIOLIO,其中LCPU、LMEM、LIPC、LIO表示CPU、内存、网络和磁盘IO各个关键资源的负载值,WCPU,WMEM,WIPC,WIO表示各个关键资源在系统负载中的所占的比重,称之为权重(反映各节点整体负载状态的参数标准,是节点资源负载情况的一种数值表示)。权重的计算公式为: 
W CPU = Σ i = T 1 T n L CPU ( i ) Σ i = T 1 T n L CPU ( i ) + Σ i = T 1 T n L MEN ( i ) + Σ i = T 1 T n L IO ( i ) + Σ i = T 1 T n L IPC ( i ) ;
W MEN = Σ i = T 1 T n L MEN ( i ) Σ i = T 1 T n L CPU ( i ) + Σ i = T 1 T n L MEN ( i ) + Σ i = T 1 T n L IO ( i ) + Σ i = T 1 T n L IPC ( i ) ;
W IO = Σ i = T 1 T n L IO ( i ) Σ i = T 1 T n L CPU ( i ) + Σ i = T 1 T n L MEN ( i ) + Σ i = T 1 T n L IO ( i ) + Σ i = T 1 T n L IPC ( i ) ;
W IPC = Σ i = T 1 T n L IPC ( i ) Σ i = T 1 T n L CPU ( i ) + Σ i = T 1 T n L MEN ( i ) + Σ i = T 1 T n L IO ( i ) + Σ i = T 1 T n L IPC ( i ) .
其中,n为任务节点总数;在任务节点运行过程中,权重的值是随时在发生变化的,并根据这个权重值,负载均衡器动态的调整对各任务节点任务分发。 
负载均衡器周期性(T)的收集任务节点的负载信息,并利用预判算法分析节点负载的变化趋势来判断某个任务节点的性能正在改善还是降低,以决定如何向任务节点分发任务(负载值大的相对分配任务少,相反的分配得多。)。任务节点接收分发的任务并执行,负载均衡器维护一个初始的总任务队列,任务节点每隔一段时间重复发送节点计算机信息到负载均衡器,负载均衡器通过预判算法,以实现任务的动态调节,达到精细智能负载均衡的目的。 
负载均衡器负载预判的过程: 
1).初始化负载信息表TBL,并建立历史样本空间S0,S1,S2,,,Sn(n是节点序列,与前面的n含义一样)。 
2).采集负载数据L0,L1,L2,,,,Ln,生成负载序列{L(t)},并放入S空间;t为采样时间。 
3).以S空间存放的负载数值为样本,分别建立各任务节点的预测模型WP_SVR(L(t)). 
4).对每一个采集周期T,预测下一个周期负载值r=WP_SVR(L(t)),以此决定任务的负载分配。 
与现有技术相比,本发明的积极效果为: 
与传统的算法相比,本发明主要在于本地任务集群的负载,目的是合理高效的利用计算机资源,而传统的负载均衡主要解决外来访问带来的服务器压力问题,另外本发明很容易实现横向扩展,可以随意添加节点。 
与目前大部分的负载均衡技术相比,本发明请求由负载均衡器发起,任务节点执行相应操作;而传统方法由任务节点对负载均衡器发起请求,再由负载均衡器按一定调度算法分发请求到任务节点,在这里传统的负载均衡器主要做请求的中继转发(按某一算法),不参与其他更复杂的计算。另外本发明的C/S架构具备易扩展性,只需在新添加的任务节点上安装相应的软件包程序,简单的设置即可完成节点的添加,实现横向扩展。 
本发明基于任务分发的均衡负载是以任务原子性为处理的粒度,相比现有方法以连接为粒度的算法更加精细化。 
附图说明
图1为传统的本地负载均衡架构图; 
图2为本发明负载均衡结构图; 
图3为本发明负载均衡模块组成图; 
图4为本发明一次任务执行图。 
具体实施方式
基于任务分发的负载均衡的技术实现: 
1).程序主要采用java开发,利用RMI(Java Remote Method Invocation)(EJB)技术进行分布式的设计,RMI是java远程方法调用,是Java编程语言里,一种用于实现远程过程调用的应用程序编程接口,通过RMI任务节点与负载均衡器进行交互,任务节点接收负载均衡器的消息(任务),并执行。 
2).负载均衡器与任务节点采用异步消息传递机制进行通信。 
3).任务节点维护一个任务队列(redis),并利用堆栈记录已完成任务的偏移量,这样在任务节点出现意外无法完成任务时,剩下的任务将在机器恢复后继续接着执行或被负载均衡器回收,转发到其他正常工作的任务节点,如图3所示。堆栈是一种特殊的串行形式的数据结构,只允许在链结串行的一端进行插入和读取运算。 
4).任务节点采用一个插件(facter)定时收集任务节点的节点信息(包括流量、CPU、内存、负载),反馈给负载均衡器。负载均衡器根据返回的节点信息计算任务节点的分数和分数变化趋势,决定下一步动作。 
5).任务节点将任务执行日志反馈给负载均衡器。负载均衡器记录各任务节点的任务执行情况,并更新总任务队列的任务状态,比如删除已完成的任务,分配新的任务到节点 。

Claims (7)

1.一种基于c/s架构的智能负载均衡方法,其步骤为:
1)将所有任务节点和一个负载均衡器采用c/s星状结构建立通信连接;其中,任务节点与负载均衡器初始化并维持一个长连接,负载均衡器维护一个总任务队列;
2)任务节点定期发送节点的负载信息到负载均衡器;
3)负载均衡器根据节点的负载信息计算各任务节点的性能值,并根据各任务节点性能值的变化趋势确定任务的分发:如果某个任务节点的性能正在改善,则将总任务队列中的任务分发给该任务节点,如果某个任务节点的性能正在降低,则将总任务队列中的任务暂停分发给该任务节点;
4)任务节点接收分发的任务并将任务执行日志反馈给负载均衡器。
2.如权利要求1所述的方法,其特征在于所述任务节点维护一个任务队列,并利用堆栈记录已完成任务的偏移量。
3.如权利要求1或2所述的方法,其特征在于所述负载信息包括CPU、内存、网络和磁盘IO。
4.如权利要求3所述的方法,其特征在于计算所述任务节点的性能值L的公式为:L=WCPULCPU+WMEMLMEM+WIPCLIPC+WIOLIO,LCPU、LMEM、LIPC、LIO分别表示CPU、内存、网络和磁盘IO的负载值,WCPU,WMEM,WIPC,WIO分别表示CPU、内存、网络和磁盘IO在系统负载中所占的比重。
5.如权利要求1所述的方法,其特征在于所述负载均衡器周期性的收集任务节点的负载信息,并利用预判算法判断任务节点性能值的变化趋势,其方法为;
1)负载均衡器初始化一负载信息表TBL,并建立历史样本空间S0,S1,S2,,,Sn,n是节点序列;
2)负载均衡器采集任务节点的负载数据L0,L1,L2,,,,Ln,生成负载序列{L(t)},并放入空间S;t为采样时间;
3)以S空间存放的负载数值为样本,分别建立各任务节点的预测模型WP_SVR(L(t));
4)对每一个采集周期T,预测下一个周期负载值r=WP_SVR(L(t)),得到任务节点性能值的变化趋势。
6.如权利要求1所述的方法,其特征在于负载均衡器与任务节点采用异步消息传递机制进行通信。
7.如权利要求1或6所述的方法,其特征在于任务节点通过RMI与负载均衡器进行交互。
CN 201310329306 2013-07-31 2013-07-31 一种基于c/s架构的智能负载均衡方法 Pending CN103368864A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 201310329306 CN103368864A (zh) 2013-07-31 2013-07-31 一种基于c/s架构的智能负载均衡方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 201310329306 CN103368864A (zh) 2013-07-31 2013-07-31 一种基于c/s架构的智能负载均衡方法

Publications (1)

Publication Number Publication Date
CN103368864A true CN103368864A (zh) 2013-10-23

Family

ID=49369427

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 201310329306 Pending CN103368864A (zh) 2013-07-31 2013-07-31 一种基于c/s架构的智能负载均衡方法

Country Status (1)

Country Link
CN (1) CN103368864A (zh)

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103763378A (zh) * 2014-01-24 2014-04-30 中国联合网络通信集团有限公司 基于分布式流式计算系统的任务处理方法、系统及节点
CN103812703A (zh) * 2014-02-20 2014-05-21 浪潮集团有限公司 一种基于云计算的异步保存日志方法
CN103889001A (zh) * 2014-03-13 2014-06-25 南京邮电大学 一种基于未来负载预测的自适应负载均衡方法
CN104270322A (zh) * 2014-10-30 2015-01-07 中电海康集团有限公司 面向物联网设备接入处理平台的自适应负载均衡调度机制
CN104702652A (zh) * 2014-01-10 2015-06-10 杭州海康威视数字技术股份有限公司 集群部署系统中的负载调度方法及装置
CN104767778A (zh) * 2014-01-07 2015-07-08 中兴通讯股份有限公司 任务处理方法及装置
CN106664314A (zh) * 2014-07-25 2017-05-10 华为技术有限公司 一种用于调用远程Java对象的软件应用方法的方法、计算设备以及系统
CN107453938A (zh) * 2016-05-30 2017-12-08 北京京东尚科信息技术有限公司 一种负载均衡方法及系统
CN107920134A (zh) * 2017-12-21 2018-04-17 广东汇泰龙科技有限公司 一种基于云锁的自动分配服务器的后台管理方法、系统
CN108206789A (zh) * 2016-12-20 2018-06-26 英业达科技有限公司 分段式处理请求的负载均衡系统及其方法
US10055262B1 (en) 2015-12-11 2018-08-21 Amazon Technologies, Inc. Distributed load balancing with imperfect workload information
CN108632384A (zh) * 2018-05-15 2018-10-09 西安电子科技大学 基于视频请求数预测的负载均衡方法
CN109308221A (zh) * 2018-08-02 2019-02-05 南京邮电大学 一种基于WebSocket长连接的Nginx动态负载均衡方法
CN109783226A (zh) * 2018-12-13 2019-05-21 交控科技股份有限公司 可分散数据压力的分布式ats系统
CN110175074A (zh) * 2019-04-18 2019-08-27 北京奇艺世纪科技有限公司 负载均衡方法和服务器、负载单元、服务处理设备及介质
CN110191159A (zh) * 2019-05-09 2019-08-30 网宿科技股份有限公司 一种资源服务器的负载调节方法及系统、设备
CN110636388A (zh) * 2019-09-29 2019-12-31 浪潮(北京)电子信息产业有限公司 一种业务请求分配方法、系统、电子设备及存储介质

Cited By (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104767778A (zh) * 2014-01-07 2015-07-08 中兴通讯股份有限公司 任务处理方法及装置
CN104702652A (zh) * 2014-01-10 2015-06-10 杭州海康威视数字技术股份有限公司 集群部署系统中的负载调度方法及装置
CN104702652B (zh) * 2014-01-10 2018-06-01 杭州海康威视数字技术股份有限公司 集群部署系统中的负载调度方法及装置
CN103763378A (zh) * 2014-01-24 2014-04-30 中国联合网络通信集团有限公司 基于分布式流式计算系统的任务处理方法、系统及节点
CN103812703A (zh) * 2014-02-20 2014-05-21 浪潮集团有限公司 一种基于云计算的异步保存日志方法
CN103889001B (zh) * 2014-03-13 2018-04-20 南京邮电大学 一种基于未来负载预测的自适应负载均衡方法
CN103889001A (zh) * 2014-03-13 2014-06-25 南京邮电大学 一种基于未来负载预测的自适应负载均衡方法
CN106664314A (zh) * 2014-07-25 2017-05-10 华为技术有限公司 一种用于调用远程Java对象的软件应用方法的方法、计算设备以及系统
US10341234B2 (en) 2014-07-25 2019-07-02 Huawei Technologies Co., Ltd. Method, computing device and system for invoking software application methods of remote JAVA objects
CN106664314B (zh) * 2014-07-25 2020-03-31 华为技术有限公司 一种用于调用远程Java对象的软件应用方法的方法、计算设备以及系统
CN104270322B (zh) * 2014-10-30 2018-05-29 中电海康集团有限公司 面向物联网设备接入处理平台的自适应负载均衡调度机制
CN104270322A (zh) * 2014-10-30 2015-01-07 中电海康集团有限公司 面向物联网设备接入处理平台的自适应负载均衡调度机制
US10055262B1 (en) 2015-12-11 2018-08-21 Amazon Technologies, Inc. Distributed load balancing with imperfect workload information
CN107453938B (zh) * 2016-05-30 2020-11-20 北京京东尚科信息技术有限公司 负载均衡方法、系统、电子设备及计算机可读存储介质
CN107453938A (zh) * 2016-05-30 2017-12-08 北京京东尚科信息技术有限公司 一种负载均衡方法及系统
CN108206789A (zh) * 2016-12-20 2018-06-26 英业达科技有限公司 分段式处理请求的负载均衡系统及其方法
CN107920134A (zh) * 2017-12-21 2018-04-17 广东汇泰龙科技有限公司 一种基于云锁的自动分配服务器的后台管理方法、系统
CN108632384A (zh) * 2018-05-15 2018-10-09 西安电子科技大学 基于视频请求数预测的负载均衡方法
CN109308221A (zh) * 2018-08-02 2019-02-05 南京邮电大学 一种基于WebSocket长连接的Nginx动态负载均衡方法
CN109308221B (zh) * 2018-08-02 2022-06-10 南京邮电大学 一种基于WebSocket长连接的Nginx动态负载均衡方法
CN109783226A (zh) * 2018-12-13 2019-05-21 交控科技股份有限公司 可分散数据压力的分布式ats系统
CN109783226B (zh) * 2018-12-13 2020-09-25 交控科技股份有限公司 可分散数据压力的分布式ats系统
CN110175074A (zh) * 2019-04-18 2019-08-27 北京奇艺世纪科技有限公司 负载均衡方法和服务器、负载单元、服务处理设备及介质
CN110191159A (zh) * 2019-05-09 2019-08-30 网宿科技股份有限公司 一种资源服务器的负载调节方法及系统、设备
CN110191159B (zh) * 2019-05-09 2021-05-25 网宿科技股份有限公司 一种资源服务器的负载调节方法及系统、设备
US11108695B2 (en) 2019-05-09 2021-08-31 Wangsu Science & Technology Co., Ltd. Method, system and device for adjusting load of resource server
CN110636388A (zh) * 2019-09-29 2019-12-31 浪潮(北京)电子信息产业有限公司 一种业务请求分配方法、系统、电子设备及存储介质

Similar Documents

Publication Publication Date Title
CN103368864A (zh) 一种基于c/s架构的智能负载均衡方法
CN103152393B (zh) 一种云计算的计费方法和计费系统
Niu et al. Load balancing across microservices
CN102521021B (zh) 经由事件流管理的绿色计算
Peng et al. Random task scheduling scheme based on reinforcement learning in cloud computing
CN102130938B (zh) 一种面向Web应用宿主平台的资源供给方法
CN109308221B (zh) 一种基于WebSocket长连接的Nginx动态负载均衡方法
Lee et al. Load-balancing tactics in cloud
CN102170396B (zh) 一种基于区分服务的云存储系统QoS控制方法
CN109218355A (zh) 负载均衡引擎,客户端,分布式计算系统以及负载均衡方法
CN103188345A (zh) 分布式动态负载管理系统和方法
Tong et al. A load balancing strategy based on the combination of static and dynamic
CN105245617A (zh) 一种基于容器的服务器资源供给方法
EP2929674B1 (en) Server load management
CN108170530B (zh) 一种基于混合元启发式算法的Hadoop负载均衡任务调度方法
CN103207920A (zh) 一种元数据并行采集系统
CN104239555A (zh) 基于mpp的并行数据挖掘架构及其方法
CN102110014A (zh) 虚拟机负载均衡处理的方法
Maiti et al. Efficient data collection for IoT services in edge computing environment
Pasyeka et al. Development algorithmic model for optimization of distributed fault-tolerant web-systems
Zhang et al. Dynamic workload management in heterogeneous cloud computing environments
El-Zoghdy A hierarchical load balancing policy for grid computing environment
KR20070032441A (ko) 퍼지 그룹핑 기반의 로드 밸런싱 시스템 및 그 로드 밸런싱방법
Qin et al. Optimal workload allocation for edge computing network using application prediction
Kadhim et al. Hybrid load-balancing algorithm for distributed fog computing in internet of things environment

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20131023

RJ01 Rejection of invention patent application after publication