应用于分布式应用系统的负载均衡方法和系统的制作方法

文档序号:7622412阅读:137来源:国知局
专利名称:应用于分布式应用系统的负载均衡方法和系统的制作方法
技术领域
本发明涉及信息技术领域,更具体的说是涉及一种应用于分布式应用系统的负载 均衡方法和系统。
背景技术
目前现有网络的各个核心部分随着业务量的提高,访问量和数据流量的快速增 长,其处理能力和计算强度也相应地增大,使得单一的设备根本无法承担,因此负载均衡机 制应运而生。负载均衡是指在网络环境中,将负载均衡地分派到多台计算机、网络连接器、处理 器、硬件设备或其它资源上,以便获得更高的资源利用率,提高系统的吞吐率,降低响应时 间,从而避免负载过重。现有的一种负载均衡的方法,是在客户端有待处理的业务时,直接选择出负载较 轻的服务器,然后与该服务器上的服务对象建立连接,由服务对象处理完成客户端发送的 相应的业务请求,而在分布式应用系统中存在大量客户端的并发操作,与客户端建立连接 的服务器可能处理多个服务类型的请求,系统在运行过程中,服务器的负载就会出现严重 的不均衡现象,且由于完成一个业务,客户端可能需要发送一系列的请求,客户端与服务器 中的服务对象之间是长期基于一种连接进行信息交互,也会造成服务器的负载过重,因此, 采用现有的这种方法,仍然存在系统中服务器负载不均衡的现象。

发明内容
有鉴于此,本发明提供一种实现负载均衡的方法和系统,解决了系统中服务器负 载不均衡的现象。为实现上述目的,本发明提供如下技术方案—种应用于分布式应用系统的负载均衡方法,所述方法包括A 接收客户端发送的请求;B 判断所述客户端是否与服务器建立连接,如果是,则进入步骤D,否则进入步骤 C ;C 选择负载较轻的服务器,并建立所述客户端和所选择服务器之间的连接;D 判断与所述客户端建立连接的服务器负载是否过重,如果是,则释放客户端与 所述服务器的连接,返回步骤C,否则进入步骤E ;E 将所述请求发送至与所述客户端建立连接的服务器进行处理。优选地,所述接收客户端发送的请求之前,还包括将已启动的服务器记录在注册表中;监测所述注册表中的服务器状态并记录在注册表中,所述状态包括服务器的服务 状态以及负载状态;依据注册表中的所有服务器的负载计算平均负载。
优选地,所述判断所述服务器负载是否过重包括判断所述服务器负载是否大于系统第一预设值且所述服务器负载相对于所述平 均负载的百分比是否大于系统第二预设值。优选地,所述监测所述注册表中的服务器的状态并记录在注册表中,包括周期性监测已启动的服务器的状态并记录在注册表中;当监测到服务器不可用时,在注册表中标记其不可用或删除所述服务器的记录。优选地,所述方法还包括当接收到服务器返回的处理请求失败信息时,释放客户端与所述服务器的连接, 返回步骤C。优选地,当服务器没有负载过重时,所述将所述请求发送至所述服务器并由所述 服务器处理请求之后还包括当还有客户端发送的请求时,重复执行步骤A 步骤E直至处理完所有请求。一种应用于分布式应用系统的负载均衡系统,所述系统包括客户端管理模块、负 载均衡模块和服务器管理模块,其中所述客户端管理模块,用于接收客户端发送的请求,判断所述客户端是否与服务 器建立连接,当客户端与服务器建立连接时,将所述请求发送至服务器管理模块,否则启动 负载均衡模块,建立客户端与所述负载均衡模块所选服务器的连接;接收到服务器管理模 块反馈的与客户端连接的服务器负载过重信息时,释放客户端与所述服务器的连接并重新 启动负载均衡模块;负载均衡模块,用于选择负载较轻的服务器并将所述服务器标识信息反馈给客户 端管理模块;服务器管理模块,用于接收客户端管理模块发送的请求,判断与所述客户端连接 的服务器负载是否过重,如果是,则将负载过重信息反馈给客户端管理模块,否则将所述请 求发送至所述服务器。优选地,所述负载均衡模块还用于将已启动的服务器以及所述服务器的服务状态 和负载状态记录在注册表,所述注册表为所述负载均衡模块中的内存单元;则,所述服务器管理模块还用于监测所述记录的服务器的服务状态和负载状态并反 馈给负载均衡模块。优选地,所述负载均衡模块还用于根据记录的所有服务器的负载计算平均负载, 则,所述服务器管理模块具体用于接收客户端管理模块发送的所述请求后,判断与所 述客户端连接的服务器负载是否大于系统第一预设值且所述服务器负载相对于所述平均 负载的百分比是否大于系统第二预设值,如果是,则将负载过重信息反馈给客户端管理模 块,否则将所述请求发送至所述服务器。优选地,所述服务器管理模块还用于接收服务器处理请求失败信息,并将所述信 息反馈给客户端管理模块;则,所述客户端管理模块还用于接收到处理请求失败信息时,释放客户端与所述服务 器的连接并重新启动负载均衡模块。经由上述的技术方案可知,与现有技术相比,本发明公开提供了一种应用于分布式应用系统的负载均衡的方法和系统,通过本发明所述的系统接收客户端发送的请求,首 先判断该客户端是否建立连接,当没有建立连接时选择负载较轻的服务器与所述客户端建 立连接,当客户端与服务器建立连接后判断所述服务器负载是否过重,当负载过重时,则指 示客户端释放与所述服务器的连接,重新选择其他服务器,直至选择出与客户端建立连接 的服务器负载没有过重,避免了在服务器负载过重的情况下仍继续处理客户端的请求,保 障了负载在服务器之间均衡分配,从而提高了负载均衡的可靠性。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本 发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据 提供的附图获得其他的附图。图1为本发明一种应用于分布式应用系统的负载均衡方法实施例1的流程图;图2为本发明一种应用于分布式应用系统的负载均衡方法实施例2的流程图;图3为本发明一种应用于分布式应用系统的负载均衡系统具体实施例的结构图。
具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完 整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于 本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他 实施例,都属于本发明保护的范围。本发明实施例公开了一种应用于分布式应用系统的负载均衡方法和系统,通过本 发明所述的系统接收客户端发送的请求,首先判断该客户端是否建立连接,当没有建立连 接时选择负载较轻的服务器与所述客户端建立连接,当客户端与服务器建立连接后判断所 述服务器负载是否过重,当负载过重时,则指示客户端释放与所述服务器的连接,重新选择 其他服务器,直至选择出与客户端建立连接的服务器负载没有过重,避免了在服务器负载 过重的情况下仍继续处理客户端的请求,影响了服务器的负载均衡,从而提高了负载均衡 的可靠性。参见图1,示出了本发明一种应用于分布式应用系统的负载均衡方法具体实施例 1的流程图,可以包括以下步骤步骤101 接收客户端发送的请求。在分布式应用系统中,客户端与服务器之间的交互需要基于两者之间的网络连 接,然后客户端发送相应的请求,服务器接收所述请求并进行处理,本发明实施例中,客户 端的请求不直接发送给相应的服务器,而是先经过判断与客户端建立网络连接的服务器是 否适合,之后再进行请求处理,从而可实现服务器的负载均衡。步骤102 判断所述客户端是否与服务器建立连接,如果是,则进入步骤104,否则 进入步骤103。客户端需要完成的业务操作可能包括多个待处理的请求,服务器在一次请求处理 完成后,客户端如果还有其他请求待处理,则并不会马上断开与所述服务器的网络连接,而是基于该网络连接继续发送其他待处理的请求。步骤103 选择负载较轻的服务器,并建立所述客户端与所选择服务器的连接。系统接收到客户端发送的请求后,当所述客户端没有与服务器建立连接时,则从 服务器中选择出一个负载较轻的服务器,根据该服务器的标识信息建立客户端与所述服务 器的网络连接,由于是由服务器中相应的服务对象进行请求处理,其具体可以是根据服务 器中用于处理相应请求的服务对象的对象标识符,该对象标识符可惟一标识一个服务对 象。建立客户端与所述服务器中的服务对象的网路连接。在本实施例中,客户端发送请求后,当客户端没有与服务器的连接关系时,由系统 选择出负载较轻的服务器与该客户端建立连接,而作为客户端无需知道是与哪个具体服务 器建立的连接。服务器开始启动运行时,系统即记录下已启动的服务器,保存在注册表中,注册表 是系统中的内存单元。记录下已启动的服务器,即可对该服务器进行监测,监测服务器的状 态并记录在注册表中,所述状态包括服务器的服务状态,即是否正在处理请求或已经退出, 以及负载状态。所记录服务器的负载状态可以是通过监测服务器的流量、访问量等指标来 获得。系统根据记录的负载情况,即可选择出负载较轻的一个服务器与客户端去建立连接。需要说明的是,当选择服务器失败时,则向客户端发送异常信息,结束流程。步骤104 判断与所述客户端建立连接的服务器负载是否过重,如果是,则进入步 骤105,如果否,则进入步骤106。与客户端建立连接的服务器在处理一次请求后并不断开该连接,而当客户端基于 该连接继续发送请求时,并没有考虑该服务器的实际负载情况,所述服务器的负载可能已 经过重,其可能正在执行多个客户请求,如果仍由该服务器执行所述请求,就会造成服务器 的负载过重,从而使得网络系统中服务器的负载出现不均衡现象。所以需要判断与客户端 建立连接的服务器的负载是否过重。其中,判断的具体标准可以是判断该服务器的负载是否大于系统的第一预设值, 如果大于系统的第一预设值,则可进入步骤105,如果小于系统的第一预设值,则可进入步 骤 106。判断的具体标准,另一个优选的方案可以是由步骤103中可知,系统会记录所有 已启动的服务器的负载情况,即可根据记录的各个服务器负载情况来计算所有服务器的平 均负载。因此,判断服务器负载是否过重具体可以为判断该服务器的负载相对于平均负载 的百分比是否大于系统的第二预设值,如果是,则进入步骤105,如果否,则进入步骤106。判断的具体标准,另一个优选的方案还可以是判断该服务器负载是否大于系统 第一预设值且所述服务器负载相对于平均负载的百分比是否大于系统第二预设值,如果 是,则进入步骤105,如果否,则进入步骤106。其中,第一预设值和第二预设值是根据实际应用情况具体设置的,例如,在快速傅 里叶变换的应用中,快速傅立叶变换是计算密集型应用,在该应用中,CPU作为关键资源被 多个并发执行的快速傅立叶变换任务共享,且限制一个服务器上并发执行的任务的个数不 能大于CPU个数的4倍,在单cpu的服务器上,一个服务器的并发执行的任务个数最大为4。 服务器的负载可以用服务器上正在执行的并发任务数表示,此时,第一预设值为1,第二预 设值为100%。此应用中的第一预设值为1,表示如果该服务器上的并发执行任务数不多于2个,即使出现负载不均衡,也不会影响该服务器上各任务的执行,因此不需要切换其它服 务器来执行该任务,只有当该服务器的并发执行任务数大于2时,才需要考虑切换服务器。 第二预设值为100%,表示如果该服务器上的负载比平均负载大,则至少存在一个服务器, 其上并发执行的任务比该服务器上并发执行的任务少1,因此,新的任务应该切换到并发任 务数小的服务器上执行。又如,在订票服务的应用中,订票业务为典型的在线事务处理服务,其单个业务的 计算量并不大,且响应时间也很快,订票业务主要面临的是大规模订票业务的并发执行问 题,如果业务的并发度不高,则多个业务在一个服务器上执行对用户而言没有明显的影响, 但当并发度超过一定限度以后,服务器的性能将急剧下降。目前普通的个人计算机中的服 务器基本能够有效支持100个业务的并发执行,因此,订票系统会限制业务的并发度,当业 务个数大于该并发度时,超过的业务将进入等待队列,等待其它业务执行完,再执行。在该 应用中,服务器的负载可以用服务器上的业务数(正在执行和处于等待状态的业务数)表 示,对于普通的服务器,第一预设值为100,表示如果服务器上的并发业务数没有超过100, 则不需要重新分配服务器,第二预设值可以设置为105%,表示如果该服务器上的业务数比 各个服务器上的平均业务数多,就需要将新的业务调度到负载较轻的服务器上执行。需要说明的是,以上所列举的实例只是实际场景中的两个具体应用,并不是作为 对第一预设值以及第二预设值的具体限定,本领域技术人员可以了解的是,第一预设值和 第二预设值根据不同的应用情况而不同,在此不再一一赘述。步骤105 释放客户端与所述服务器的连接,返回步骤103。在服务器负载过重的情况下,则该服务器不执行客户端的请求,则为客户端断开 与所述服务器的网络连接,重新返回步骤103,从记录的服务器中查找另一个负载较轻的服 务器返回给客户端。步骤106 将所述请求发送至与所述客户端建立连接的服务器,由所述服务器进 行处理。当服务器的负载没有过重时,则可由该服务器中的相应服务对象进行请求处理, 客户端发送的请求中包括了执行该请求的服务类型以及请求的具体内容,服务器即可选择 合适的服务对象进行请求处理,并将处理的结果返回给客户端。如果客户端还有其他待处理的请求,则重复执行步骤101 步骤106的所述操作, 直至处理完所有的请求。需要说明的是,如果服务器处理请求失败,则接收服务器返回的处理失败信息,释 放客户端与该服务器的连接,返回步骤103继续执行。在本发明实施例中,接收到客户端发送的请求后,当客户端已与服务器建立连接, 则直接判断该服务器负载是否过重,当客户端没有与服务器建立网络连接,则选择负载较 轻的服务器与所述客户端建立连接,之后再判断与所述客户端相连的服务器负载是否过 重,当过重时不指示所述服务器执行所述请求,而是重新选择其他服务器进行重新判断,直 至选择出与客户端建立连接的服务器负载没有过重,避免了在服务器负载过重的情况下仍 继续处理客户端的请求,影响服务器的负载均衡,从而提高了负载均衡的可靠性,且服务器 在处理请求失败后,则重新选择其他服务器,选择的过程与上述说明相同,从而提高了处理 请求的准确性。
参见图2,示出了本发明一种应用于分布式应用系统的负载均衡方法实施例2的 流程图,可以包括以下步骤步骤201 将已启动的服务器记录在注册表中,监测并记录所述注册表中的服务 器的状态。服务器开始启动运行时,系统即记录下已启动的服务器,保存在注册表中,注册表 是系统中的内存单元,并监测注册表中已记录的服务器的状态,包括服务器的服务状态以 及负载状态,并将状态记录在注册表中。其中,对服务器的监测是一直执行的,优选地,可以周期性进行状态服务器的状态 监测,具体周期可以根据实际情况而设定,当监测到服务器不可用,或者已经退出,则从注 册表中删除该服务对象,服务器可用且运行正常,则记录下该服务器的负载,如果服务器的 服务状态不确定,则标记其为不可用。步骤202 依据注册表中的所有服务器的负载计算平均负载。根据记录的服务器的负载情况,计算平均负载。步骤203 接收客户端发送的请求。步骤204 判断所述客户端是否与服务器建立连接,如果是,则进入步骤206。如果 否,则进入步骤205。步骤205 选择负载较轻的服务器,并建立客户端与所选服务器的连接。从注册表中的记录中选出服务状态正常且负载最轻的服务器反馈给客户端,建立 客户端与所选择服务器的网络连接。如果反馈出现异常,例如,服务器均不可用或已经退出时,则向客户端发送异常消 息,结束流程。步骤206 判断所述服务器负载是否大于系统第一预设值且所述服务器负载相对 于所述平均负载的百分比是否大于系统第二预设值,如果是,则进入步骤207,如果否,则进 入步骤208。其中,系统第一预设值以及系统第二预设值是根据实际应用情况预先设置的。当服务器的负载大于系统第一预设值且服务器的负载相对于平均负载的百分比 大于系统第二预设值时,则认为该服务器负载过重,否则,认为服务器负载没有过重。步骤207 释放客户端与所述服务器的连接,返回步骤205。负载过重时,即释放与所述服务器的网络连接,重新返回步骤205,从记录的服务 器中重新选择负载较轻的服务器,以便于为客户端重新建立连接。步骤208 将所述请求发送至所述服务器,并接收所述服务器处理请求后返回的结果。步骤209 依据返回的结果判断服务器是否处理成功,如果是,则进入步骤210,如 果否,返回步骤207。服务器进行请求处理,当处理失败,则将处理请求失败信息返回给系统,当接收到 该处理请求失败信息时,则重新选择服务器,以保证请求执行成功。步骤210 当还有客户端发送的请求时,返回步骤204。执行完一个请求后,会判断是否还有其他待处理的请求,当客户端还有其他待处 理的请求,则继续接收所述客户端发送的请求,返回步骤204,直至处理完所有请求,结束整个流程。如果没有其他请求时,直接结束流程。在本发明实施例中,将已启动的服务器进行监测,以便于选择出负载较轻的服务 器与客户端建立连接,当与客户端建立连接后,在进行判断该服务器是否负载过重,负载过 重时,则重新从注册表的记录中选择其他负载较轻的服务器,然后再将请求发至该服务器 进行处理。避免了在服务器负载过重的情况下仍继续处理客户端的请求,影响服务器的负 载均衡,从而提高了负载均衡的可靠性,且服务器在处理请求失败后,则重新选择其他服务 器,保证了请求执行的成功率。参见图3,示出了本发明一种应用于分布式应用系统的负载均衡系统具体实施例 的结构图,所述系统包括客户端管理模块301、负载均衡模块302和服务器管理模块303,所述客户端管理模块301 用于接收客户端发送的请求,判断所述客户端是否与 服务器建立连接,当客户端与服务器建立连接时,将所述请求发送至服务器管理模块,否则 启动负载均衡模块302,建立客户端与所述负载均衡模块所选择服务器的连接;接收到服 务器管理模块303反馈的与客户端连接的服务器负载过重信息时,释放客户端与所述服务 器的连接并重新启动负载均衡模块302。所述负载均衡模块302 用于选择负载较轻的服务器并将所述服务器标识信息反 馈给客户端管理模块301。所述服务器管理模块303 用于接收客户端管理模块301发送的所述请求后,判断 与所述客户端连接的服务器负载是否过重,如果是,则将负载过重信息反馈给客户端管理 模块301,如果否,则将所述请求发送至所述服务器。本发明所提供的负载均衡系统中,所述的客户端管理模块301可与客户端处于一 个进程中,负责管理客户端与服务器之间的连接,管理客户端发送的请求消息;所述的服务 器管理模块303可与服务器方处于一个进程中,负责监测服务器的负载情况,在服务器负 载过重时,指示服务器拒绝执行所述请求;所述的负载均衡模块302,可以是一个独立的进 程或者设备,在接收到客户端管理模块301请求分配服务器的信息时,选择负载较轻的服 务器反馈给客户端管理模块301,以便于客户端管理模块301建立客户端与所选择服务器 的连接。其中,所述的负载均衡模块302还用于将已启动的服务器以及所述服务器的服务 状态和负载状态记录在注册表中,依据记录的服务器的负载情况计算平均负载,注册表为 负载均衡模块中的内存单元,则,所述服务器管理模块303还用于监测所述注册表中的服务器的服务状态和负载 状态并反馈给负载均衡模块302。其中,所述服务器管理模块303具体用于接收客户端管理模块302发送的所述请 求后,判断所述客户端连接的服务器负载是否大于系统第一预设值如果是,则确认负载过 重,将负载过重信息反馈给客户端管理模块,如果否,则将所述请求发送给该服务器进行处 理。或者,用于接收客户端管理模块302发送的所述请求后,判断与所述客户端连接的服务 器负载相对于所述平均负载的百分比是否大于系统第二预设值,如果是,则确认负载过重, 将负载过重信息反馈给客户端管理模块,如果否,则将所述请求发送给该服务器进行处理。 或者,
用于接收客户端管理模块302发送的所述请求后,判断与所述客户端连接的服务 器负载是否大于系统第一预设值且所述服务器负载相对于所述平均负载的百分比是否大 于系统第二预设值,如果是,则确认负载过重,将负载过重信息反馈给客户端管理模块,如 果否,则将所述请求发送给该服务器进行处理。其中,所述服务器管理模块303还用于接收服务器处理请求失败信息,并将所述 信息反馈给客户端管理模块301,则,所述客户端管理模块还用于接收到处理请求失败信息时,释放客户端与所述服务 器的连接并重新启动负载均衡模块302。基于本发明提供的负载均衡系统,负载均衡的方法可描述如下服务器管理模块监测到服务器启动时,将启动的服务器信息反馈给负载均衡模 块,由负载均衡模块记录在注册表中,并向服务器管理模块发送负载监测请求,指示服务器 管理模块对注册表中记录的服务器进行状态监测,服务器管理模块在将监测结果反馈给负 载均衡模块,由负载均衡模块记录在注册表并依据所有服务器的负载计算出平均负载。客户端管理模块接收到客户请求时,首先判断该客户端是否已与相应的服务器建 立连接,如果没有,则指示负载均衡模块选择一个负载较轻的服务器,以便于建立客户端与 所选服务器的连接;如果已经建立连接,向服务器管理模块发送所述请求,服务器管理模块 接收到该请求后,首先判断处理该请求的服务器的负载是否过重,如果过重,则将过重信息 反馈给客户端管理模块,客户端管理模块指示客户端释放与所述服务器的连接,重新指示 负载均衡模块选择一个负载较轻的服务器;如果没有过重,则将所述请求发送至服务器,以 便于服务器处理所述请求。服务器管理模块将服务器的处理结果反馈给客户端管理模块,如果请求处理成 功,则将结果返回给客户端,如果失败,则客户端管理模块释放客户端与该服务器的连接, 重新指示负载均衡模块选择一个负载较轻的服务器。在本发明实施例中,客户端管理模块接收客户端发送的请求后,由负载均衡模块 选择出负载较轻的服务器反馈给客户端,以便于客户端建立连接,然后由服务器管理模块 判断与客户端连接的服务器负载是否过重,当过重时,由负载均衡模块重新选择服务器,没 有过重时,则由服务器管理模块将请求发至该服务器进行处理,通过本发明提供的系统,避 免了在服务器负载过重的情况下仍继续处理客户端的请求,影响了系统中服务器的负载均 衡,从而提高了负载均衡的可靠性。以上所描述的系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可 以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单 元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其 中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性 劳动的情况下,即可以理解并实施。本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他 实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置 而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说 明即可。最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作 之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体 意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括 那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或
者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,
并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。 对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的 一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明 将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一 致的最宽的范围。
权利要求
1.一种应用于分布式应用系统的负载均衡方法,其特征在于,所述方法包括 A 接收客户端发送的请求;B 判断所述客户端是否与服务器建立连接,如果是,则进入步骤D,否则进入步骤C ; C 选择负载较轻的服务器,并建立所述客户端和所选择服务器之间的连接; D 判断与所述客户端建立连接的服务器负载是否过重,如果是,则释放客户端与所述 服务器的连接,返回步骤C,否则进入步骤E ;E 将所述请求发送至与所述客户端建立连接的服务器进行处理。
2.根据权利要求1所述的方法,其特征在于,所述接收客户端发送的请求之前,还包括将已启动的服务器记录在注册表中;监测所述注册表中的服务器状态并记录在注册表中,所述状态包括服务器的服务状态 以及负载状态;依据注册表中的所有服务器的负载计算平均负载。
3.根据权利要求2所述的方法,其特征在于,所述判断所述服务器负载是否过重包括 判断所述服务器负载是否大于系统第一预设值且所述服务器负载相对于所述平均负载的百分比是否大于系统第二预设值。
4.根据权利要求2所述的方法,其特征在于,所述监测所述注册表中的服务器的状态 并记录在注册表中,包括周期性监测已启动的服务器的状态并记录在注册表中;当监测到服务器不可用时,在注册表中标记其不可用或删除所述服务器的记录。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括当接收到服务器返回的处理请求失败信息时,释放客户端与所述服务器的连接,返回 步骤Co
6.根据权利要求1所述的方法,其特征在于,当服务器没有负载过重时,所述将所述请 求发送至所述服务器并由所述服务器处理请求之后还包括当还有客户端发送的请求时,重复执行步骤A 步骤E直至处理完所有请求。
7.一种应用于分布式应用系统的负载均衡系统,其特征在于,所述系统包括客户端管 理模块、负载均衡模块和服务器管理模块,其中所述客户端管理模块,用于接收客户端发送的请求,判断所述客户端是否与服务器建 立连接,当客户端与服务器建立连接时,将所述请求发送至服务器管理模块,否则启动负载 均衡模块,建立客户端与所述负载均衡模块所选服务器的连接;接收到服务器管理模块反 馈的与客户端连接的服务器负载过重信息时,释放客户端与所述服务器的连接并重新启动 负载均衡模块;负载均衡模块,用于选择负载较轻的服务器并将所述服务器标识信息反馈给客户端管 理模块;服务器管理模块,用于接收客户端管理模块发送的请求,判断与所述客户端连接的服 务器负载是否过重,如果是,则将负载过重信息反馈给客户端管理模块,否则将所述请求发 送至所述服务器。
8.根据权利要求7所述的系统,其特征在于,所述负载均衡模块还用于将已启动的服务器以及所述服务器的服务状态和负载状态记录在注册表,所述注册表为所述负载均衡模 块中的内存单元;则,所述服务器管理模块还用于监测所述记录的服务器的服务状态和负载状态并反馈给 负载均衡模块。
9.根据权利要求8所述的系统,其特征在于,所述负载均衡模块还用于根据记录的所 有服务器的负载计算平均负载,则,所述服务器管理模块具体用于接收客户端管理模块发送的所述请求后,判断与所述客 户端连接的服务器负载是否大于系统第一预设值且所述服务器负载相对于所述平均负载 的百分比是否大于系统第二预设值,如果是,则将负载过重信息反馈给客户端管理模块,否 则将所述请求发送至所述服务器。
10.根据权利要求7所述的系统,其特征在于,所述服务器管理模块还用于接收服务器 处理请求失败信息,并将所述信息反馈给客户端管理模块;则,所述客户端管理模块还用于接收到处理请求失败信息时,释放客户端与所述服务器的 连接并重新启动负载均衡模块。
全文摘要
本发明提供了一种应用于分布式应用系统的负载均衡方法和系统,所述方法包括接收客户端发送的请求;判断所述客户端是否与服务器建立连接,当没有建立连接时选择负载较轻的服务器与所述客户端建立连接;当客户端与服务器已经建立了连接时,判断服务器负载是否过重,当过重时,则为客户端释放与所述服务器的连接,重新选择负载较轻的其他服务器,建立连接;将请求提交给所连接的服务器执行。避免了在服务器负载过重的情况下仍继续处理客户端的请求,保障了负载在服务器之间均衡分配,从而提高了负载均衡的可靠性。
文档编号H04L12/56GK102123179SQ20111007538
公开日2011年7月13日 申请日期2011年3月28日 优先权日2011年3月28日
发明者吴泉源, 周斌, 杨树强, 滕猛, 王凯, 王怀民, 罗荣凌, 舒琦, 贾焰, 赵辉, 金松昌, 陈志坤, 韩伟红 申请人:中国人民解放军国防科学技术大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1