一种分布式缓存系统中负荷分配方法、装置及服务器的制作方法

文档序号:7765186阅读:520来源:国知局
专利名称:一种分布式缓存系统中负荷分配方法、装置及服务器的制作方法
技术领域
本发明涉及云计算技术领域,尤其涉及一种云计算分布式缓存系统中负荷分配方 法、装置及服务器。
背景技术
云计算(Cloud Computing)是网格计算(Grid Computing)、分布式计算 (Distributed Computing)、并行计算(Parallel Computing)、效用计算(Utility Computing)、(Network Storage Technologies)^ ^ (Virtualization)>^ic 均衡(Load Balance)等传统计算机技术和网络技术发展融合的产物。它旨在通过网络把 多个成本相对较低的计算实体整合成一个具有强大计算能力的系统。分布式缓存是云计算 范畴中的一个领域,其作用是提供海量数据的分布式存储服务以及高速读写访问的能力。在分布式缓存系统中,服务器节点的负荷分配是比较难以解决的关键问题之一。 分布式缓存系统是由若干服务器节点和客户端互相连接构成的;服务器节点负责数据的存 储;客户端可以对服务器做数据的写入、读取、更新、删除等操作。一般来说写入的数据不可能只保存在单个服务器节点(以下简称“节点”)上,而是 在多台节点上保存同一个数据的副本,互为备份。对某个数据做写入、更新、删除等动作,称 为请求(Request)。分布式缓存系统服务端会不停地收到不同的请求。将请求发至服务器 节点的路径称为路由(Route),请求会根据相应的路由(Route)到达相应节点,路由的集合 称为路由表(Route Table)。那么,如果分布式缓存系统同时或顺序收到多个请求动作时,就要在这些不同的 节点上做相应的处理操作,从而保证数据的快速准确写入、更新、删除等,并给出响应。由于 各个节点硬件配置以及网络吞吐能力等因素导致各个节点当前的处理能力有所不同,如何 根据节点的当前状态将这些请求合理的分配到不同的节点上,这就是所述负荷分配问题。 现有技术方案中,分配负荷一般采用虚节点(Virtual Node)的解决方法
将每台服务器节点看作一个或若干个虚节点的载体,将虚节点按照一定规则映射到 0 232的哈希(Hash)环上。每个虚节点承载的负荷由虚节点在Hash环上的位置决定。客 户端向服务器端发送请求时,根据请求的数据映射在环上的位置找到相应服务器。其缺点 是,负荷的分配随机性很高,容易造成某个节点的负荷非常高,另外,若多台节点同时故障, 造成部分路由失效的概率较大。

发明内容
本发明要解决的技术问题是提供一种分布式缓存系统中负荷分配方法、装置及服 务器,提高系统的可用性、运行效率以及稳定性。为解决上述技术问题,本发明提供了一种分布式缓存系统中负荷分配方法,包 括
过滤本地的服务器节点列表生成临时服务器节点列表,所述临时服务器节点列表中包含具有提供服务能力的服务器节点的信息;
根据所述临时服务器节点列表中的节点的状态信息和/或负荷处理能力为表中所有 服务器节点分配负荷权重,根据各服务器节点的负荷权重生成路由信息,指示表中各服务 器节点更新本地路由信息。进一步地,所述具有提供服务能力的服务器节点包括链路稳定节点,或链路稳定 节点和链路不稳定节点,其中,链路稳定节点包括链路稳定且目前可用的节点;链路不稳 定节点包括以下节点中的一种或几种链路不稳定但目前可用的节点,链路不稳定且目前 不可用的节点,链路临时断开正在重连的节点。进一步地,所述临时服务器节点列表中的服务器节点的信息包括地址信息、链路 状态、节点类型、可处理负荷能力、负荷权重。进一步地,所述根据状态信息和/或负荷处理能力分配负荷权重是指根据状态 信息分配负荷权重,或根据负荷处理能力分配负荷权重,或根据状态信息和负荷处理能力 分配权重;其中
按节点状态分配负荷权重值是指,链路稳定节点的权重高于链路不稳定节点的权重; 按负荷处理能力分配负荷权重值是指,硬件配置高于预定第一门限的节点的权重高于 硬件配置低于预定第一门限的节点的权重,和/或,硬件当前使用情况高于预定第二门限 的节点的权重高于硬件当前使用情况低于预定第二门限的节点的权重。进一步地,为表中所有服务器节点分配负荷权重后,将负荷权重信息发送给表中 所有服务器节点,所述负荷权重信息包括当前服务器节点权重值占有所有服务器节点权 重值总和的比值,或者所有服务器节点的负荷权重值。进一步地,所述根据各服务器节点的负荷权重生成路由信息包括根据临时服务 器节点列表中服务器节点的个数确定标识符个数,生成标识符序列,所述标识符个数大于 等于服务器节点个数;根据各服务器节点的负荷权重为各节点分配标识符;将分配的标识 符与相应的服务器节点的地址信息组合后得到路由信息,写入路由表。进一步地,所述指示表中各服务器节点更新本地路由信息包括向所述临时服务 器节点列表中的所有服务器节点发送路由更新消息或者负荷权重信息以指示各服务器节 点列表获取路由信息,所述负荷权重信息包括当前服务器节点权重值占有所有服务器节 点权重值总和的比值,或者所有服务器节点的负荷权重值;服务器节点收到所述路由更新 消息或者负荷权重信息后,从默认位置获取最新的路由信息,更新本地的路由信息。进一步地,表中各服务器节点更新本地路由信息后,所述方法还包括服务器节点 接收到客户端根据本地路由信息发送的请求后,发现所述客户端的请求不符合服务器节点 本地的路由信息,则根据服务器节点本地路由信息将该客户端的请求转发至相应的服务器 节点,并将所述服务器节点本地路由信息推送给所述客户端,所述客户端保存所述路由信 肩、ο为解决上述技术问题,本发明还提供了一种分布式缓存系统中负荷分配的装置, 包括第一单元,第二单元,其中
第一单元,用于在进行负荷分配时,过滤本地的服务器节点列表生成临时服务器节点 列表,所述临时服务器节点列表中包含具有提供服务能力的服务器节点的信息;
第二单元,用于根据所述临时服务器节点列表中的节点的状态信息和/或负荷处理能
5力为表中所有服务器节点分配负荷权重,根据各服务器节点的负荷权重生成路由信息,指 示表中各服务器节点更新本地路由信息。为解决上述技术问题,本发明还提供了一种分布式缓存系统中负荷分配的服务 器,包括如上所述的负荷分配装置。本文提出了一种高效而可靠的分布式缓存系统中负荷分配的方案,根据服务节点 的当前负荷状态和处理能力分配相应负荷,它可以提前分析当前各节点的已有的负荷分担 情况和当前的处理能力,避免部分节点由于分担负荷过重造成瘫痪而无法提供服务,使得 待处理的负荷能够自动的,合理的分派到不同的处理节点上进行高效的处理,从而提高了 系统的可用性、运行效率及稳定性。


图1是本发明实施例的一种网元结构图; 图2是本发明实施例的另一种网元结构图3是本发明实施例服务节点进行负荷分配操作的流程图。
具体实施例方式下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的 情况下,本申请中的实施例及实施例中的特征可以相互任意组合。负荷分配方法包括
过滤本地的服务器节点列表生成临时服务器节点列表,所述临时服务器节点列表中包 含具有提供服务能力的服务器节点的信息;
根据所述临时服务器节点列表中的节点的状态信息和/或负荷处理能力为表中所有 服务器节点分配负荷权重,根据各服务器节点的负荷权重生成路由信息,指示表中各服务 器节点更新本地路由信息。上述方法可以通过一装置实现,该装置可以位于一服务器节点中,如图1所示,或 者单独设置,如图2所示。下面对上述方法进行详细说明。步骤一,过滤本地的服务器节点列表生成临时服务器节点列表,所述临时服务器 节点列表中包含具有提供服务能力的服务器节点的信息;
如果由服务器节点来执行本流程,则该服务器节点可以是系统中任一个具有负荷分配 功能的服务器节点,即包含有负荷分配装置的服务器节点(以下简称第一服务器节点)。此 时,控制台选择具有负荷分配功能的服务器节点,向其发送负荷分配操作指令,该服务器节 点收到负荷分配操作指令后,进行负荷分配。如果由单独设置的负荷分配装置来执行本流 程,则控制台可将负荷分配操作指令发送至该负荷分配装置。控制台可在检测到服务器节 点增加或者减少时,向具有负荷分配功能的服务器节点或者负荷分配装置发送负荷分配操 作指令。生成临时服务器节点列表时,该第一服务器节点或负荷分配装置读取本地当前的 服务器节点列表,判断其中各服务器节点的状态是否正常,从服务器节点列表中过滤掉不 具有提供服务能力的服务器节点,例如严重存在问题且相对一段较长时间内无法提供服务的故障节点,将过滤后的服务器节点列表保存为临时服务器节点列表;或者将状态正常 的服务器节点的信息保存在一个新建的服务器节点列表中。在本次负荷分配结束后,该临 时服务器节点列表将被清除。具体地,具有提供服务能力的服务器节点包括链路稳定节点,或链路稳定节点和 链路不稳定节点。链路稳定节点是指链路稳定且目前可用的节点,链路不稳定节点包括以 下节点中的一种或几种链路不稳定但目前可用的节点(如网线接触不良等),链路不稳定 且目前不可用的节点,链路临时断开正在重连的节点。不具有提供服务能力的服务器节点 包括永久故障节点(硬件故障或者退出集群等)和暂时故障节点(硬件故障如网卡坏了正 在更换)。对于每个具有提供服务能力的服务器节点,临时服务器节点列表中包括该服务器 节点的以下信息地址信息(如IP地址)、链路状态、节点类型、可处理负荷能力、负荷权重。 其中,可处理负荷能力是指当前条件下该节点可以继续处理新增加负荷的大小,相当于总 能力减去已使用的能力。负荷权重表示该服务器节点相比其他服务器节点所承载负荷的比 值,通过改变负荷权重值可以增加或减少该服务器节点的负荷。临时服务器节点列表中的 内容与服务器节点列表中的内容相同。在首次分配负荷前,各节点的服务器节点列表中的 负荷权重为默认值,每个服务器节点的权重相同。在第二次或之后再分配负荷时,服务器节 点列表中的负荷权重为上一次负荷分配时分配的负荷权重值。当负荷分配中途出现错误 时,各节点的服务器节点列表中的负荷权重仍然为默认值或上一次的负荷权重值。步骤二,根据所述临时服务器节点列表中的节点的状态信息和/或负荷处理能力 为表中所有服务器节点分配负荷权重;
按节点状态分配负荷权重值是指,链路稳定节点的权重高于链路不稳定节点的权重, 即将负荷优先分配给链路稳定节点,在集群负荷仍然过重时再考虑将符合依次分配给链路 不稳定但目前可用的节点,链路不稳定且目前不可用的节点,链路临时断开正在重连的节 点ο按负荷处理能力分配负荷权重值是指,即考虑节点的硬件配置以及硬件当前使用 情况来分配负荷,硬件配置高于预定第一门限的节点的权重高于硬件配置低于预定第一门 限的节点的权重,和/或,硬件当前使用情况高于预定第二门限的节点的权重高于硬件当 前使用情况低于预定第二门限的节点的权重。硬件配置可参考以下参数中的一种或几种 CPU处理能力、内存容量、硬盘容量、网卡容量、网络带宽。硬件当前使用情况可参考以下参 数中的一种或几种CPU剩余处理能力、内存剩余容量、硬盘剩余容量、网卡剩余容量。处理 能力强和/或硬件当前使用情况较好的节点的权重值较高。也可综合上述两点,即同时参考节点状态和负荷处理能力进行负荷权重值的确定。在为临时服务器节点列表中的各节点分配负荷权重值后,用新分配的各节点的负 荷权重值更新第一服务器节点中的服务器节点列表中的负荷权重或者负荷分配装置中的 服务器节点列表中的负荷权重。第一服务器节点或负荷分配装置将更新的负荷权重通知给 该临时服务器节点列表中的所有节点,供该些节点更新本地服务器节点列表。该更新操作 也可在步骤三后执行。服务器节点可采用以下方式保存权重值保存当前服务器节点权重值占有所有服
7务器节点权重值总和的比值,或者保存所有服务器节点的权重值。例如节点A、B、C的权 重分别是1、2、3,那么对于节点A可以保存的权重为1/6,或者是1:2:3。根据分配的权重可以控制各节点接收到的请求数,从而避免出现负荷过重的节 点。假设有三个服务节点,(1)如负荷权重为1:1:1,客户端总请求数为300时,则实际到达 每个节点的请求数为100,若客户端总请求为900时,则实际到达每个节点的请求数为300 ; (2)如负荷权重为1:2:1,在总请求数为300的情况下,实际到达各节点的请求数为75、 150,75ο步骤三,根据临时服务器节点列表中各服务器节点的负荷权重生成路由信息,并 指示表中各服务器节点更新本地路由信息。根据负荷权重生成路由信息包括根据各服务器节点的个数确定标识符个数,生 成标识符序列;标识符个数可以与服务器节点个数相同,或者大于服务器节点个数(例如是 服务器节点个数的倍数);根据各服务器节点的负荷权重为各节点分配标识符;将分配的标 识符与相应的服务器节点的地址信息组合后得到路由信息。为各节点分配的标识符可以是 连续的也可以是不连续的。例如,生成100个标识符,用1-100表示,有三个服务器节点Α、 B、C,三节点的权重比为2:3:5,则将20个标识符分给节点A,30个标识符分给节点B,50个 标识符分给节点C,即A :1-20,B =71-100, C :21_70,写路由表,格式为节点对应的标识符加 该节点的IP地址,如1:192.168.0.1。上述仅提供一种生成路由信息的方法,但不限于采 用本方法实现,也可以采用其他方法实现。在确定标识符个数是可参考历史负荷确定。客户端在发送请求时采用与服务器相同的算法确定标识符,按照标识符查找到相 应的IP地址发送请求。指示临时服务器节点列表中各服务器节点更新本地路由信息包括向各服务器节 点发送路由更新消息;各服务器节点收到该消息后,从默认位置(可以是第一服务器节点, 或其他专用于存储路由信息的服务器节点,或负荷分配装置)获取最新的路由信息。该默认 位置为专用于存储路由信息的服务器节点时,第一服务器节点或负荷分配装置需先将最新 的路由信息发送至该服务器节点,再向其他服务器节点发送路由更新消息,各服务器节点 从该默认服务器节点获取最新的路由信息。通过一个服务器节点发布路由信息可以保证其 余服务器节点获取的路由信息是相同的,避免出错。另外,第一服务器节点或者负荷分配装 置也可在此时将更新的负荷权重发送给各节点,各节点收到更新的负荷权重后,主动从默 认位置获取最新的路由信息。所有节点的负荷权重和路由信息更新完毕后,负荷分配过程完成。负荷分配完成后,服务器节点收到客户端发送的请求,此时客户端是按照其上保 存的旧的路由表发送的,收到请求的服务器节点发现客户端的请求不符合新的路由表,则 根据最新的路由表将该客户端的请求转发至相应的服务器节点,并将新的路由表推送给该 客户端,该客户端保存最新的路由表,后续便按照新的路由表发送请求给相应服务器节点。由于考虑当前服务器节点服务状态和/或负荷处理能力等,并根据权重合理分 配,负荷处理能力较强的服务器节点优先分配负荷,避免负荷分配过于分散造成运行过程 中某单点的负荷过高,或因多台节点同时故障,造成部分路由失效。服务器节点状态和权重 值的计算是按照特定算法自动计算得到的,无需人为额外干预,以达到高效快速的目的。另外,服务器节点负荷权重值也可由工程维护人员手动指定。本实施例中,由服务器节点和客户端构成的分布式缓存系统如图1所示。结合图 3,下面以服务器节点进行负荷分配为例对上述方法进行说明,包括如下步骤
前置步骤分布式缓存系统中各个服务器节点间互相建立连接并且集群可提供服务; 控制台运行正常。步骤1,某服务器节点收到负荷分配操作指令; 步骤2,该服务器节点读取本地服务节点列表;
步骤3,自动分析当前服务器节点列表中的服务器节点状态,获取当前服务节点的运行 状态;
步骤4,该服务器节点进行服务器节点列表备份,在该备份表(即临时表)中剔除无法提 供服务的服务器节点;
步骤5,当前节点根据备份表中的服务器节点状态和负荷处理能力,计算备份表中各服 务器节点的负荷权重值;
服务器节点负荷权重值的分配过程也可由工程维护人员手动完成; 步骤6,将得到的负荷权重值发送给表中各服务器节点; 步骤7,生成路由信息,写入路由表,分配完成。实现上述方法的负荷分配装置包括第一单元,第二单元,其中
第一单元,用于在进行负荷分配时,过滤本地的服务器节点列表生成临时服务器节点 列表,所述临时服务器节点列表中包含具有提供服务能力的服务器节点的信息;
第二单元,用于根据所述临时服务器节点列表中的节点的状态信息和/或负荷处理能 力为表中所有服务器节点分配负荷权重,根据各服务器节点的负荷权重生成路由信息,指 示表中各服务器节点更新本地路由信息。优选地,上述装置还可包括第三单元,用于将负荷权重信息发送给表中所有服务 器节点。实现上述方法的服务器节点为包含上述装置的服务器节点。本发明的目的在于,在云计算领域分布式缓存系统中,解决负荷分配问题。本发明 提出一系列措施,使得负荷分配的最终效果以当前服务器节点的处理能力和已分担的负荷 多少为依据,合理的把收到的请求分配到不同的服务器节点上进行处理,带来系统的稳定 性等的增加,以达到性能提升。本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令 相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘 等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应 地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的 形式实现。本发明不限制于任何特定形式的硬件和软件的结合。以上仅为本发明的优选实施案例,且所述流程为配合本发明的描述之用,并不用 于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的 精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
一种分布式缓存系统中负荷分配方法,包括过滤本地的服务器节点列表生成临时服务器节点列表,所述临时服务器节点列表中包含具有提供服务能力的服务器节点的信息;根据所述临时服务器节点列表中的节点的状态信息和/或负荷处理能力为表中所有服务器节点分配负荷权重,根据各服务器节点的负荷权重生成路由信息,指示表中各服务器节点更新本地路由信息。
2.如权利要求1所述的方法,其特征在于所述具有提供服务能力的服务器节点包括链路稳定节点,或链路稳定节点和链路不 稳定节点,其中,链路稳定节点包括链路稳定且目前可用的节点;链路不稳定节点包括以 下节点中的一种或几种链路不稳定但目前可用的节点,链路不稳定且目前不可用的节点, 链路临时断开正在重连的节点。
3.如权利要求1所述的方法,其特征在于所述临时服务器节点列表中的服务器节点的信息包括地址信息、链路状态、节点类 型、可处理负荷能力、负荷权重。
4.如权利要求1所述的方法,其特征在于所述根据状态信息和/或负荷处理能力分配负荷权重是指根据状态信息分配负荷权 重,或根据负荷处理能力分配负荷权重,或根据状态信息和负荷处理能力分配权重;其中按节点状态分配负荷权重值是指,链路稳定节点的权重高于链路不稳定节点的权重;按负荷处理能力分配负荷权重值是指,硬件配置高于预定第一门限的节点的权重高于 硬件配置低于预定第一门限的节点的权重,和/或,硬件当前使用情况高于预定第二门限 的节点的权重高于硬件当前使用情况低于预定第二门限的节点的权重。
5.如权利要求1-4中任一项所述的方法,其特征在于为表中所有服务器节点分配负荷权重后,将负荷权重信息发送给表中所有服务器节 点,所述负荷权重信息包括当前服务器节点权重值占有所有服务器节点权重值总和的比 值,或者所有服务器节点的负荷权重值。
6.如权利要求1-4中任一项所述的方法,其特征在于所述根据各服务器节点的负荷权重生成路由信息包括根据临时服务器节点列表中服 务器节点的个数确定标识符个数,生成标识符序列,所述标识符个数大于等于服务器节点 个数;根据各服务器节点的负荷权重为各节点分配标识符;将分配的标识符与相应的服务 器节点的地址信息组合后得到路由信息,写入路由表。
7.如权利要求1-4中任一项所述的方法,其特征在于所述指示表中各服务器节点更新本地路由信息包括向所述临时服务器节点列表中的 所有服务器节点发送路由更新消息或者负荷权重信息以指示各服务器节点列表获取路由 信息,所述负荷权重信息包括当前服务器节点权重值占有所有服务器节点权重值总和的 比值,或者所有服务器节点的负荷权重值;服务器节点收到所述路由更新消息或者负荷权重信息后,从默认位置获取最新的路由 信息,更新本地的路由信息。
8.如权利要求1-4中任一项所述的方法,其特征在于表中各服务器节点更新本地路由信息后,所述方法还包括服务器节点接收到客户端根据本地路由信息发送的请求后,发现所述客户端的请求不符合服务器节点本地的路由信 息,则根据服务器节点本地路由信息将该客户端的请求转发至相应的服务器节点,并将所 述服务器节点本地路由信息推送给所述客户端,所述客户端保存所述路由信息。
9.一种分布式缓存系统中负荷分配的装置,包括第一单元,第二单元,其中第一单元,用于在进行负荷分配时,过滤本地的服务器节点列表生成临时服务器节点 列表,所述临时服务器节点列表中包含具有提供服务能力的服务器节点的信息;第二单元,用于根据所述临时服务器节点列表中的节点的状态信息和/或负荷处理能 力为表中所有服务器节点分配负荷权重,根据各服务器节点的负荷权重生成路由信息,指 示表中各服务器节点更新本地路由信息。
10.一种分布式缓存系统中负荷分配的服务器,包括如权利要求9所述的装置。
全文摘要
本发明公开了一种分布式缓存系统中负荷分配方法、装置及服务器,提高系统的可用性、运行效率以及稳定性。所述负荷分配方法包括过滤本地的服务器节点列表生成临时服务器节点列表,所述临时服务器节点列表中包含具有提供服务能力的服务器节点的信息;根据所述临时服务器节点列表中的节点的状态信息和/或负荷处理能力为表中所有服务器节点分配负荷权重,根据各服务器节点的负荷权重生成路由信息,指示表中各服务器节点更新本地路由信息。
文档编号H04L29/08GK101984632SQ201010543969
公开日2011年3月9日 申请日期2010年11月15日 优先权日2010年11月15日
发明者丁磊, 郭斌, 韩银俊 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1