具体实施方式
本发明实施例提供一种云计算***中均衡负载的方法,通过多个接入节点接入负载,通过多个业务节点处理负载,实现了云计算***中的海量接入。本发明实施例还提供了相应的装置及***。以下分别进行详细说明。
参阅图1,本发明实施例提供的云计算***中均衡负载的方法的一实施例包括:
101、接收每个接入节点和每个业务节点的注册请求,所述注册请求中携带各自的节点标识和地址信息。
对于云计算***中越来越多的用户、越来越多的接入请求,现有技术中通过增强接入硬件的功能,来实现海量接入显得力不从心了,本发明实施例中,提供了接入集群和业务集群的设计方案,参阅图2,接入集群中有多个接入节点,业务集群中有多个业务节点,对于加入接入集群的接入节点都要先向节点管理器发送注册请求,对于加入业务集群的业务节点也都要向节点管理器发送注册请求,每个注册请求中都携带各自的节点标识和地址信息。
每个接入节点的注册请求中还携带各自允许接入的协议类型,如允许接入HTTP协议、SOAP协议、Restful协议、短消息点对点(SMMP,Short Message Peerto Peer)协议、文件转换协议(FTP,File Transfer Protocol)等,一个接入节点可以允许接入上述协议中的一种或几种。
当接入节点的注册请求中还携带各自允许接入的协议类型时,节点管理器将所述接入节点的节点标识、地址信息和允许接入的协议类型对应存储;在发送负载接入请求消息时,获取所述负载接入请求消息的协议类型,将所述负载接入请求消息,发送给负载接入量未满负荷的,且允许接入的协议类型包括所述负载接入请求消息的协议类型的任意一个接入节点。
接入节点可以接入不同协议类型的负载接入请求,接入节点对负载接入请求进行分析后,可以将不同协议类型的负载接入请求转化为所有接入节点通用协议结构,然后再将负载分发给业务节点,这样业务节点可以使用统一的方式处理多种接入协议。这对于目前云计算中经常需要同时提供SOAP和RESTful等多种协议实现非常有价值。
本发明实施例中提供的接入节点可以通过扩展插件的方式支持新的协议与新的接入方式。
每个接入节点都是对等的,任何一个接入节点的工作都可以由其他接入节点替代,这样接入节点可以非常容易实现水平扩展和水平收缩,从而实现云计算***中的海量接入请求。
为达到接入节点集群化的目的,首先接入节点对接入协议的类型进行划分,分为无会话、短连接会话和长连接会话三种情况进行处理:
对于无会话请求,处理非常简单,无需保存会话信息,各个接入节点本来就是对等(share nothing)的。
对于短连接会话,一般会话存在时间较短,如几分钟,并且会话信息变化频繁,比如http请求的会话,这种可以采用本地内存缓存的方式进行处理。对于对会话可靠性要求高的应用,接入节点提供了分布式内存缓存,可以通过一致性哈希方式选择分布式内存缓存节点保存会话信息,从而达到接入节点对等(share nothing)的目的。
对于长连接会话,一般会话存在时间较长,如几个小时到几天,此时会话信息可以保存在中心持久化存储,如数据库或分布式文件存储中,在每个节点上使用本地内存进行缓存,通过节点管理器监听缓存信息的变化,进行缓存刷新。
102、将每个接入节点的节点标识、地址信息对应存储,并将每个业务节点的节点标识和地址信息对应存储。
接入节点和业务节点向节点管理器发送注册请求后,节点管理器将注册请求中携带的节点标识和地址信息对应存储;如图2中个节点的节点标识和地址信息对应存储在下表1和表2中,表1为接入节点注册信息表,表2为业务节点注册信息表:
表1:接入节点注册信息表
接入节点 |
节点标识 |
地址信息 |
接入节点1 |
接入ID1 |
接入AD1 |
接入节点2 |
接入ID2 |
接入AD2 |
接入节点3 |
接入ID3 |
接入AD3 |
... |
... |
... |
接入节点N |
接入IDN |
接入ADN |
表2:业务节点注册信息表
业务节点1 |
业务ID1 |
业务AD1 |
业务节点2 |
业务ID2 |
业务AD2 |
业务节点3 |
业务ID3 |
业务AD3 |
... |
... |
... |
业务节点N |
业务IDN |
业务ADN |
当接入节点的注册请求中还携带各自允许接入的协议类型时,在表1后还需要增加一列协议类型,具体可表示为表3:
表3:接入节点注册信息表
接入节点 |
节点标识 |
地址信息 |
协议类型 |
接入节点1 |
接入ID1 |
接入AD1 |
HTTP、SOAP |
接入节点2 |
接入ID2 |
接入AD2 |
FTP、SOAP |
接入节点3 |
接入ID3 |
接入AD3 |
Restful、SOAP |
... |
... |
... |
... |
接入节点N |
接入IDN |
接入ADN |
SMMP、HTTP |
103、监控注册后的每个接入节点的负载接入量和注册后的每个业务节点的负载处理量。
对于在节点管理器注册后的接入节点或业务节点,节点管理器要监控每个接入节点的负载接入量和每个业务节点的负载处理量。
对于监控每个接入节点的负载接入量的具体方案包括:通过每个接入节点的节点标识和地址信息查询对应接入节点的负载接入量,并将所述负载接入量与对应的接入节点的节点标识和地址信息关联存储;用上面的表格来表示就是节点管理器按照表1中的接入节点标识和接入节点地址到对应的接入节点下查询该接入节点的负载接入量,并将负载接入量也记录到表格中的相应位置,用表4来表示接入节点的负载接入量,如下:
表4:负载接入量记录表
接入节点 |
节点标识 |
地址信息 |
负载接入量 |
接入节点1 |
接入ID1 |
接入AD1 |
55 |
接入节点2 |
接入ID2 |
接入AD2 |
41 |
接入节点3 |
接入ID3 |
接入AD3 |
34 |
... |
... |
... |
... |
接入节点5 |
接入ID5 |
接入AD5 |
30 |
从上表中可以看出,每个接入节点对应的负载接入量。
对于监控注册后的每个接入节点的负载接入量还有另外一种方案,具体包括:在发送负载接入请求消息给接入节点时,将发送给相同接入节点的负载请求消息的次数累加,并将所述累加后的次数与接入节点的标识和地址信息关联存储。这种方案是在节点管理器给接入节点分发接入请求时,将发给每个接入节点的接入请求次数记录下来,并进行累加,同样在节点管理中也能用上表4来表示最终的监控结果。
对于监控注册后的每个业务节点的负载处理量的具体方案,与监控接入节点的第一种方案类似,具体为:通过每个业务节点的节点标识和地址信息查询对应业务节点的负载处理量,并将所述负载处理量与对应的业务节点的节点标识和地址信息关联存储。
通过这种方案监控的业务节点,在节点管理器中可用表5来表示,表5为:
表4:负载处理量记录表
业务节点 |
节点标识 |
地址信息 |
负载业务量 |
业务节点1 |
业务ID1 |
业务AD1 |
55 |
业务节点2 |
业务ID2 |
业务AD2 |
41 |
业务节点3 |
业务ID3 |
业务AD3 |
34 |
... |
... |
... |
... |
业务节点5 |
业务ID5 |
业务AD5 |
30 |
从表5中,可以看出每个业务节点的业务处理量。
104、接收用户端发送的负载接入请求消息。
用户端请求接入云计算***,现有技术中是通过一个负载均衡器接入请求后,再分配给多个应用服务器处理每个用户的具体业务,本发明实施例中,节点管理器不负责用户端的接入请求,只是相当于一个中转站,收到负载接入请求后,将接收到的负载接入请求分发给接入集群中的接入节点去完成用户端的接入工作,因此,本发明实施例提供的节点管理器可以不受业务量的限制,接入集群中有多个对等的接入节点,可以实现云计算***中的海量接入。
105、将所述负载接入请求消息,发送给负载接入量未满负荷的任意一个接入节点,使所述用户端接入云计算***。
因为每个接入节点的容量是有限的,并不能无限接入,接入节点的容量可以相同,也可以不同。当接入节点的负载接入量已经满负荷时,就不能再接入负载了,因此,在节点管理器选择接入节点时,可将负载接入量满负荷接入节点排除。
节点管理器选择具体的接入节点的方案可以为:查询每个接入节点的负载接入量;从所有接入节点中选出负载接入量未满负荷的接入节点;按照接入节点的标识和地址信息存储顺序,将所述负载接入请求消息,发送给选出的负载接入量未满负荷的接入节点中所述存储顺序在前的接入节点。
当每个接入节点的注册请求中还携带各自允许接入的协议类型时,将所述负载接入请求消息,发送给负载接入量未满负荷的,且允许接入的协议类型包括所述负载接入请求消息的协议类型的任意一个接入节点;
一种发送方案为:
查询允许接入的协议类型包括所述负载接入请求消息的协议类型的接入节点的负载接入量;从查询出的接入节点中选出负载接入量未满负荷的接入节点;按照接入节点的标识和地址信息存储顺序,将所述负载接入请求消息,发送给选出的负载接入量未满负荷的接入节点中所述存储顺序在前的接入节点。
这个方案可以参阅表3和表4进行理解:节点管理器接收到负载接入请求消息后,从上述表4中查询每个接入节点的负载接入量,假如满负荷的接入量为55,那么可以看出接入节点1已经达到了满负荷,不能再接入用户端了,除接入节点1之外的其他接入节点都没有达到满负荷,然后,获取到该负载接入请求消息的协议类型为SOAP,可以确定允许SOAP协议接入的接入节点有接入节点1、2、3,接入节点1已经被排除,那么符合未满负荷、又允许SOAP协议接入的节点为接入节点2和接入节点3,可以从这,两个接入节点中,任意选择一个,发送该负载接入请求给选择出的接入节点,为了便于均衡每个接入节点的负载,可以按照接入节点的标识和地址信息存储顺序,一个接入节点满负载后,再发送给下一个接入节点,将所述负载接入请求消息,发送给选出的负载接入量未满负荷的接入节点中所述存储顺序在前的接入节点,也就是接入节点2。
另一种发送方案为:
查询允许接入的协议类型包括所述负载接入请求消息的协议类型的接入节点的负载接入量;从查询出的接入节点中选出负载接入量未满负荷的接入节点;从所述选出的负载接入量未满负荷的接入节点中,采用轮循方式选择一接入节点,将所述负载接入请求消息发送给所述轮循方式选出的接入节点。
这种方案的具体理解,也可以参阅上表3和表4,对于选择负载接入量未满负荷的过程与上述方案相同,不同的是,本方案不是一个接入节点满负载后再发送给下一个节点,而是采用轮循的方式,这次的负载请求消息发送给接入节点2,下次的接入请求消息发送给接入节点3,依次往下,到最后一个未满负荷、且允许SOAP协议接入的接入节点后,再进行循环。
106、将每个业务节点的负载处理量发送给每个接入节点,使接入节点将接入的负载,分发给负载处理量未满负荷的任意一个业务节点。
本发明实施例中,接入节点完成用户端的接入后,由接入节点将用户端的具体业务分发给业务节点,因节点管理器一直监控着业务节点的负载处理量,所以节点管理器在接入节点分发业务前,要将每个业务节点的负载处理量发送给每个接入节点。
节点管理器将每个业务节点的负载处理量发送给每个接入节点的一种方案,可以为:查询业务节点中负载处理量未满负荷的业务节点;将查询到的负载处理量小于第二预置预置的业务节点的节点标识和地址信息,发送给所有接入节点。
这个方案的具体过程可以参阅表5进行理解:假设满负荷也为55,当然业务节点容量可以与接入节点容量不同,当每个业务节点的满负荷都为55时,每个业务节点的业务处理容量可以相同,也可以不同,本实施例中为便于说明,认为每个业务节点的处理容量都相同,可以看出,只有业务节点1达到了满负荷,其他业务节点都可以再处理负载,这种情况,节点管理器将表5中的从业务节点2到业务节点N的业务节点的节点标识和地址信息,发送给所有的接入节点,使接入节点将接入的负载分发给从业务节点2到业务节点N的任意一个业务节点进行处理。
节点管理器将每个业务节点的负载处理量发送给每个接入节点的另一种方案,还可以为:查询业务节点中负载处理量未满负荷的业务节点;将查询到的负载处理量小于第二预置预置的业务节点的节点标识和地址信息,发送给接收了负载接入请求的接入节点。
本方案的具体过程是将表5中的从业务节点2到业务节点N的节点信息发送给表4中的接入节点2,因为接入节点2刚刚接收了接入请求。
本发明实施例中,接收每个接入节点和每个业务节点的注册请求,所述注册请求中携带各自的节点标识和地址信息;将每个接入节点的节点标识、地址信息对应存储,并将每个业务节点的节点标识和地址信息对应存储;监控注册后的每个接入节点的负载接入量和注册后的每个业务节点的负载处理量;接收用户端发送的负载接入请求消息;将所述负载接入请求消息,发送给负载接入量未满负荷的任意一个接入节点,使所述用户端接入云计算***;将每个业务节点的负载处理量发送给每个接入节点,使接入节点将接入的负载,分发给负载处理量未满负荷的任意一个业务节点。与现有技术相比,本发明实施例提供的云计算***中均衡负载的方法,可以通过多个接入节点接入负载,通过多个业务节点处理负载,实现了云计算***中的海量接入。
参阅图3,本发明实施例提供的节点管理器的一实施例包括:
接收单元201,用于接收每个接入节点和每个业务节点的注册请求,所述注册请求中携带各自的节点标识和地址信息;
存储单元202,用于将所述接收单元201接收到的每个节点的注册请求中携带的接入节点的节点标识、地址信息对应存储,每个业务节点的节点标识和地址信息对应存储;
监控单元203,用于监控所述接收单元201接收到注册请求后的每个接入节点的负载接入量和注册后的每个业务节点的负载处理量;
所述接收单元201,还用于接收用户端发送的负载接入请求消息;
发送单元204,用于将所述接收单元201接收到的负载接入请求消息,发送给所述监控单元203监控到的负载接入量未满负荷的任意一个接入节点,使所述用户端接入云计算***;
所述发送单元204,还用于将所述监控单元203监控到的每个业务节点的负载处理量发送给每个接入节点,使接入节点将接入的负载,分发给负载处理量未满负荷的任意一个业务节点。
本发明实施例中,接收单元201接收每个接入节点和每个业务节点的注册请求,所述注册请求中携带各自的节点标识和地址信息;存储单元202将所述接收单元201接收到的每个节点的注册请求中携带的接入节点的节点标识、地址信息对应存储,每个业务节点的节点标识和地址信息对应存储;监控单元203监控所述接收单元201接收到注册请求后的每个接入节点的负载接入量和注册后的每个业务节点的负载处理量;所述接收单元201接收用户端发送的负载接入请求消息;发送单元204将所述接收单元201接收到的负载接入请求消息,发送给所述监控单元203监控到的负载接入量未满负荷的任意一个接入节点,使所述用户端接入云计算***;所述发送单元204将所述监控单元203监控到的每个业务节点的负载处理量发送给每个接入节点,使接入节点将接入的负载,分发给负载处理量未满负荷的任意一个业务节点。本发明实施例提供的节点管理器,可以通过多个接入节点接入负载,通过多个业务节点处理负载,实现了云计算***中的海量接入。
参阅图4,在上述图3对应的实施例的基础上,本发明实施例提供的节点管理器的另一实施例还包括:
所述存储单元202,具体用于所述每个接入节点的注册请求中还携带各自允许接入的协议类型时,将所述接入节点的节点标识、地址信息和允许接入的协议类型对应存储;
获取单元205,用于获取所述接收单元201接收到的负载接入请求消息的协议类型;
所述发送单元204,具体用于将所述负载接入请求消息,发送给负载接入量未满负荷的,且允许接入的协议类型包括所述获取单元获取205的负载接入请求消息的协议类型的任意一个接入节点。
参阅图5,在上述图3或4对应的实施例的基础上,本发明实施例提供的节点管理器的另一实施例还包括:
查询单元206,用于通过每个接入节点的节点标识和地址信息查询对应业务节点的负载接入量;
所述存储单元202,还用于将所述查询单元206查询到的负载接入量与对应的接入节点的节点标识和地址信息关联存储;
所述查询单元206,还用于通过每个业务节点的节点标识和地址信息查询对应业务节点的负载处理量;
所述存储单元202,还用于将所述查询单元查询到的负载处理量与对应的业务节点的节点标识和地址信息关联存储。
可选地,参阅如6,在上述图3或4对应的实施例的基础上,本发明实施例提供的节点管理器的另一实施例还包括:
计数单元207,用于在发送负载接入请求消息给接入节点时,将发送给相同接入节点的负载请求消息的次数累加;
所述存储单元202,还用于将所述计数单元207累加后的次数与接入节点的标识和地址信息关联存储。
参阅如7,在上述图5对应的实施例的基础上,本发明实施例提供的节点管理器的另一实施例还包括:
所述查询单元206,具体用于查询允许接入的协议类型包括所述请求消息的协议类型的接入节点的负载接入量;
第一选择单元208,用于从所述查询单元206查询出的接入节点中选出负载接入量未满负荷的接入节点;
所述发送单元204,具体用于按照接入节点的标识和地址信息存储顺序,将所述负载接入请求消息,发送给所述第一选择单元207选出的负载接入量未满负荷的接入节点中所述存储顺序在前的接入节点。
参阅如8,在上述图5对应的实施例的基础上,本发明实施例提供的节点管理器的另一实施例还包括:
所述查询单元206,具体查询允许接入的协议类型包括所述请求消息的协议类型的接入节点的负载接入量;
第二选择单元209,用于从所述查询单元查询出的接入节点中选出负载接入量未满负荷的接入节点;
所述发送单元204,具体用于从所述第二选择单元209选出的负载接入量未满负荷的接入节点中,采用轮循方式选择一接入节点,将所述负载接入请求消息发送给所述轮循方式选出的接入节点。
参阅图9,在上述图5对应的实施例的基础上,本发明实施例提供的节点管理器的另一实施例还包括:
所述查询单元206,还用于查询业务节点中负载处理量未满负荷的业务节点;
所述发送单元204,具体用于将所述查询单元206查询到的负载处理量未满负荷的业务节点的节点标识和地址信息,发送给所有接入节点。
所述查询单元206,还用于查询业务节点中负载处理量未满负荷的业务节点;
所述发送单元204,具体用于将所述查询单元206查询到的负载处理量未满负荷的业务节点的节点标识和地址信息,发送给接收了负载接入请求的接入节点。
本发明实施例的多种方案提供的节点管理器,都可以通过多个接入节点接入负载,通过多个业务节点处理负载,实现了云计算***中的海量接入。
参阅图2,本发明实施例提供的云计算***包括:节点管理器、多个接入节点、和多个业务节点;
所述每个接入节点和每个业务节点向所述节点管理器发送注册消息,所述注册请求中携带各自的节点标识和地址信息;
所述节点管理器,用于接收每个接入节点和每个业务节点的注册请求,所述注册请求中携带各自的节点标识和地址信息;将每个接入节点的节点标识、地址信息对应存储,并将每个业务节点的节点标识和地址信息对应存储;监控注册后的每个接入节点的负载接入量和注册后的每个业务节点的负载处理量;接收用户端发送的负载接入请求消息;将所述负载接入请求消息,发送给负载接入量未满负荷的任意一个接入节点,使所述用户端接入云计算***;将每个业务节点的负载处理量发送给每个接入节点,使接入节点将接入的负载,分发给负载处理量未满负荷的任意一个业务节点。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:ROM、RAM、磁盘或光盘等。
以上对本发明实施例所提供的云计算***中均衡负载的方法、节点管理器以及***进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。