一种实现负载均衡的方法及装置的制作方法

文档序号:7665489阅读:221来源:国知局
专利名称:一种实现负载均衡的方法及装置的制作方法
技术领域
本发明涉及通信技术领域,尤其涉及一种实现负载均衡的方法及装置。
背景技术
在现有的公共对象请求代理结构(CORBA)中定义的分布式服务可以复 制是其实现负载均衡的前提,而对于CORBA中有状态服务,由于客户端发送 的业务操作之间存在相互关联性,为了保证当这一组业务操作被调度到不同 服务实例上执行时,仍能返回正确结果,现有技术中采用状态同步机制,将 与业务操作相关的服务实例的状态同步,以达到分布式服务复制安全的目 的,从而实现负载均衡。
体可以包括以单独的业务操作为调度单位,根据预先制定的实现负载均衡 策略,将同一个客户端发送的不同业务操作调度到不同的服务实例上处理。 如果不同业务操作之间存在状态相互关联,那么通过状态同步机制,将服务 实例间的状态保持一致,以实现对客户端发送的业务操作进行正确处理。
上述不同业务操作之间存在状态相互关联,是指各业务操作的状态之间 相互影响,即某一业务操作的状态结果会对其它业务操作的状态结果产生影 响,例如,某一业务操作的状态为失败,则需要基于该业务操作状态结果而 进行处理的其它业务操作的状态也为失败。
在具体应用中,实现服务实例状态同步的业务操作可由CORBA中间件发 起,根据预先配置的状态同步策略,CORBA中间件定期从参照服务实例中获 取其当前状态信息;然后通过通信协议广播,将所述当前状态信息作为需要同步的参照状态信息,发送至所有被同步的服务实例;在收到所述参照状态
从而实现所有服务实例的状态一致性。
由于服务实例的状态是动态变化的,不能事先定义,因此,在进行状态 同步前,需要发送当前状态的参照服务实例必须先建立 一 个其当前状态的快
照(save point),在建立快照的过程中,参照服务实例需要保证所有正在处 理的业务请求都已处理完毕,而且不再处理新的业务请求。在同步过程中, 所有被同步的服务实例也不能处理新的请求,直到其内部状态被刷新。
发明人在实现本发明的过程中发现,在现有的CORBA有状态分布式服务 负载均衡的方案中,由于将 一组状态相互关联的业务操作分布到不同的服务 实例中分别处理,并采用实现过程复杂,且技术难度高的状态同步机制同步 不同服务实例中的业务操作,因此可能会导致CORBA有状态分布式服务负栽 均衡方案存在性能不稳定的问题,进而可能导致系统整体性能的下降,造成 系统瘫痪。

发明内容
本发明实施例提供一种实现负载均衡的方法及装置,从而在确保系统性 能的前提下,采用实现简单的处理方案,在公共对象请求代理结构中实现负 载均衡。
本发明实施例提供了 一种实现负载均衡的方法,包括 接收客户端发起的请求,所述请求参数中包括会话标识,所述会话标识 为客户端发起的相互关联的业务操作的会话标识;
根据所述会话标识,确定与所述会话标识绑定的网络连接。
本发明实施例还提供了 一种实现负载均衡的装置,包括。
请求接收模块,用于接收客户端发起的请求,所述请求参数中包括会话标识,所述会话标识为客户端发起的相互关联的业务操作的会话标识;
网络连接确定模块,用于根据所述会话标识,确定与所述会话标识绑定 的网络连接。
由上述本发明提供的技术方案可以看出,本发明实施例通过采用与客户 端发起的请求中包含的会话标识绑定的网络连接,进行业务操作,从而在确 保系统性能的前提下,采用实现简单的处理方案,在公共对象请求代理结构 中实现负载均^f。


图1为本发明实施例提供的实现负载均衡方法中建立会话标识与网络连接
之间绑定关系过程流程图2为本发明实施例^是供的实现负载均衡方法的具体实现过程示意图; 图3为本发明实施例提供的实现负载均衡装置的具体实现结构示意图。
具体实施例方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发 明作进一 步地详细描述。
本发明实施例提供的实现负载均衡的方法中,接收客户端发起的请求, 所述请求参数中可包括会话标识,所述会话标识为客户端发起的相互关联的 业务操作的会话标识;根据所述会话标识,查找与所述会话标识绑定的网络 连接;采用所述确定的网络连接,进行业务操作。从而简单,安全地在公共
对象请求代理结构中实现负载均衡。
本发明实施例提供的实现负载均衡的方法中,可以首先将客户端一组状 态相互关联的业务操作定义为一个会话,具体可以为基于接口定义语言
(IDL)的会话。比如,在一组业务操作中,业务操作2 (func2)的状态与业务操作1 (fund)的状态有关联,那么可通过如下方式为这两个业务操作建立一个基 于IDL的会话 interface test
S6SSJ0门6X3mpl6
void fund (in string para); void func2 (out string result);
};
};
将一组状态相关的业务操作定义为以上IDL会话,且会话中状态相关的业务操
作也并不限于两个,可由实际情况具体设定。
然后,为会话生成一个会话标识,并将其加入业务操作参数中。 在将一组状态相互关联的业务操作定义为一个基于IDL的会话后,为该会
话生成唯一的会话标识(ID),并将会话ID加入到业务操作参数中,使其成
为业务操作参数中的一个参数。
在具体实现过程中,可由支持IDL文件会话声明和定义的IDL编译器为会
话生成会话ID。
当客户端发起请求时,将调用上述会话以及携带包含会话ID的业务操作 参数。所述客户端发起的请求具体可以为业务操作请求,或者其他请求。
需要说明的是,本发明实施例提供的实现负载均衡的方法在具体应用过 程中,当客户端根据包含会话ID的业务操作参数,发起初始请求时,需要执 行建立会话ID与网络连接绑定的操作,为了便于对本发明的理解,下面"设 定功能器件包括会话代理,请求管理器,连接管理器,调度器以及服务实例,客户端发起初始业务操作请求为例,并结合附图1所示,对建立会话ID与
网络连接绑定的具体操作过程进行详细的说明,具体可以包括 步骤101、客户端发起业务操作请求。
客户端调用已经生成的会话,并通过会话代理,向请求管理器发起业务 操作请求。
业务操作请求内可以包括业务操作参数,或者其它如业务操作等信息。
在所述业务操作参数内可以包括已经生成的会话ID,或者其它参数信息。 步骤102,请求管理器请求确定网络连接。
请求管理器在通过接口接收业务操作请求,获取业务操作请求中包含的 会话ID,将其发送至连接管理器,请求连接管理器查找与会话ID绑定的网络 连接。
步骤103,连接管理器确定网络连接。
连接管理器接收到请求管理器发送的会话ID后,查找并确定与会话ID绑 定的网络连接。
需要说明的是,本发明实施例提供的实现负载均衡方法中,连接管理器 可在由软件程序构建的"连接池"中查找并确定与会话ID绑定的网络连接。 所述"连接池"功能实质为将已经建立的会话ID与网络连接的绑定关系进行 保存,以及保存网络连接的当前状态。具体的,当连接管理器根据会话ID查 找与之绑定的网络连接时,可以根据"连接池"中保存的会话ID与网络连接 的绑定关系以及网络连接的当前状态,确定网络连接。本发明实施例中可采 用任一种软件及任一种程序构建所述"连接池"。 ,
由于此次业务操作请求为初始请求操作,所以连接管理器无法查找到与 会话ID绑定的网络连接,因此,执行步骤104。
步骤104,连接管理器请求建立新网络连接。
若连接管理器在连接池中没有查找到与会话ID绑定的网络连接,则连接管理器向调度器发起建立新网络连接业务请求。 步骤105,调度器确定服务实例。
调度器接收到连接管理器发送的建立新网络连接业务请求后,根据预先 配置的负载均衡策略,确定新网络连接对应的服务实例。
上述预先配置的负载均衡策略可根据需要,采用任一种负载均衡策略。
步骤106,调度器调度建立新网络连接业务请求。 调度器向确定的服务实例调度建立新网络连接业务请求。 步骤107,服务实例返回建立成功信息。
服务实例接收到调度器调度的建立新网络连接业务请求后,建立与调度 器之间的新网络连接,并向调度器返回建立新网络连接成功信息; 调度器向连接管理器转发建立新网络连接成功信息。 步骤108,连接管理器建立绑定关系。
连接管理器保存建立新网络连接成功信息,并根据该信息,建立会话ID 与新建的网络连接之间的绑定关系,将绑定关系保存在"连接池"。
在完成上述操作后,会话ID与网络连接的绑定关系便已经确定,当客户 端采用相同会话ID发起非初始业务操作请求时,连接管理器根据会话ID,在 "连接池"中查找及确定与之绑定的网络连接,并以会话为调度单位,将客 户端发起的一组相互关联的业务操作采用同一个网络连接,进一步的,即采 用同一服务实例进行操作,从而解决了现有技术中,公共对象请求代理结构 (CORBA)中采用分布式服务实现负载均衡方案存在的问题。
本发明实施例提供的实现负载均衡的方法中,所述的调度器,或其它功 能与之相同的功能器件可以设置于公共对象请求代理结构(CORBA)中的对 象请求代理(ORB)内,或者直接由ORB来完成调度器的功能操作。
下面,结合附图2,对已经建立会话ID与网络连接之间的绑定关系,客户 端发起非初始业务操作请求的处理流程进行详细的表述,具体可以包括
9步骤201,客户端发起业务操作请求。
客户端调用已经生成的会话,并通过会话代理,向请求管理器发起业务
操作请求。如上所述,业务操作请求参数中包括会话ID。 步骤202,请求管理器请求确定网络连接。
请求管理器在通过接口接收业务操作请求,获取业务操作请求中包含的 会话ID,将其发送至连接管理器,请求连接管理器查找与会话ID绑定的网络 连接。
步骤203,连接管理器确定网络连接。
连接管理器接收到请求管理器发送的会话ID后,根据"连接池"中保存 的会话ID与网络连接的绑定关系,查找并确定网络连接。
本发明实施例提供的实现负载均衡的方法中,查找并确定网络连接的过 程具体可以包括
若所述网络连接处于空闲状态,则采用所述网络连接,并将所述网络连 接的状态设置为忙状态;
若所述网络连接处于忙状态,则进入等待阶段,并当所述网络连接处于 空闲状态后,采用所述连接,同时将所述网络连接的状态设置为忙状态。
进一步的,本发明实施例提供的实现负载均衡的方法中,查找并确定网 络连接的过程还可以包括采用与所述确定的网络连接对应的服务实例标识 中,相同IP地址和端口号的空闲网络连接,并将该网络连接与会话标识绑 定。
也就是说,若连接管理器在"连接池"中没有找到与会话ID绑定的网络 连接,可以采用与会话ID绑定的网络连接所对应的服务实例标识中,相同IP 地址和端口号的空闲网络连接进行业务操作,并将该网络连接与会话ID绑定。
需要说明的是,在若连接管理器在"连接池"中没有找到与会话ID绑定
10的网络连接,且连接管理器也没有找到与会话ID绑定的网络连接所对应的服 务实例标识中,相同IP地址和端口号的空闲网络连接,则连接管理器按照上
述步骤104至步骤108的操作,建立该会话ID与网络连接的绑定关系,并将绑 定关系保存在"连接池,,中。
连接管理器在确定与会话ID绑定的网络连接后,执行步骤204。
步骤204,连接管理器返回获取网络连接成功信息。
连接管理器在确定所要采用的网络连接后,将该网络连接的状态设置为 忙,并向请求管理器返回获取网络连接成功信息。
步骤205,请求管理器将业务操作请求发送至服务实例。
请求管理器在接收到获取网络连接成功信息后,获取其中包含的网络连 接信息,并采用确定的网络连接,将客户端发起的业务操作请求发送至所述 网络连4妄对应的服务实例,由服务实例对业务才喿作请求进行相应的处理操 作。从而实现了一组状态相互关联的业务操作由同一服务实例进行处理的目 的。
步骤206,请求管理器释放网络连接。
在服务实例完成对客户端发起的业务操作请求的处理后,请求管理器释 放所述网络连接,并在"连接池"中将该网络连接的状态设置为空闲,等待 客户端发起下一次业务操作请求。
本发明实施例提供的实现有状态分布式服务负载均衡的方法,改进了现 有技术中以单独业务操作为单位的调度机制,通过将相互关联的业务操作定 义为会话,并在将会话ID与网络连接绑定后,以会话为调度单位,采用确定 的网络连接进行业务操作,从而实现了在公共对象请求代理结构(CORBA) 中,将状态相关的一组业务操作无缝地调度到同一服务实例中运行,使得多 个服务实例之间无需复杂的状态同步,完全消除了现有技术中采用状态同步 机制实现负载均衡所带来的缺点,而且还扩展了CORBA标准的IDL语言和ORB的功能,增强了CORBA支持状态接口和方法的能力。且实现过程完全对 客户端应用透明,而且简单,具有很高的通用性和可用性,可直接与第三方 高性能调度器集成,具备很高的可扩展性和兼容性。
本发明实施例还提供了 一种实现负载均衡装置。所述装置具体可由请求 接收模块,网络连接模块组成,其中
1) 请求接收模块,用于接收客户端发起的请求,所述请求参数中包括会 话标识,所述会话标识为客户端发起的相互关联的业务操作的会话标识。
所述客户端发起的请求具体可以为业务操作请求,或者其他请求。
2) 网络连接查找模块,用于根据所述会话标识,查找与所述会话标识绑 定的网络连4^。
所述装置进一步还可以包括会话标识生成模块,绑定管理建立模块,绑 定关系保存模块,业务操作模块,以及释放模块,其中
3) 会话标识生成模块,用于为客户端发起的相互关联的业务操作建立会 话,并为所述会话生成会话标识。
4) 绑定关系建立^=莫块,用于建立所述会话标识生成^^块生成的会话标识 与网络连接的绑定关系。
5) 绑定关系保存模块,用于保存所述绑定关系建立模块建立的会话标识 与网络连接的绑定关系。
所述网络连接查找模块根据所述绑定关系保存模块保存的会话标识与网 络连接之间的绑定关系,查找并确认网络连接。
6) 业务操作模块,用于采用所述网络连接查找模块确定的网络连接,进 行业务操作。
7) 释放模块,用于在所述业务操作模块完成业务操作后,释放所述网络 连接。有技术中以单独业务操作为单位的调度机制,通过将相互关联的业务操作定 义为会话,并在将会话ID与网络连接绑定后,以会话为调度单位,采用确定
的网络连接进行业务操作,从而实现了在公共对象请求代理结构(CORBA) 中,将状态相关的一组业务操作无缝地调度到同一个服务实例中运行,使得 多个服务实例之间无需复杂的状态同步,完全消除了现有技术中采用状态同 步机制实现负载均衡所带来的缺点,而且还扩展了 CQRBA标准的IDL语言和 ORB的功能,增强了CORBA支持状态接口和方法的能力。且实现过程完全对 客户端应用透明,而且筒单,具有很高的通用性和可用性,可直接与第三方 高性能调度器集成,具备很高的可扩展性和兼容性。
以上所述,仅为本发明较佳的具体实施方式
,但本发明的保护范围并不 局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可 轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明 的保护范围应该以权利要求的保护范围为准。
权利要求
1、一种实现负载均衡的方法,其特征在于,包括接收客户端发起的请求,所述请求参数中包括会话标识,所述会话标识为客户端发起的相互关联的业务操作的会话标识;根据所述会话标识,确定与所述会话标识绑定的网络连接。
2、 根据权利要求1所述的方法,其特征在于,所述接收客户端发起的请 求前包括为客户端发起的相互关联的业务操作建立会话,并为所述会话生 成会话标识。
3、 根据权利要求2所述的方法,其特征在于,所述根据所述会话标识, 确定与所述会话标识绑定的网络连接之前还包括建立所述会话标识与网络 连接的绑定关系。
4、 根据权利要求3所述的方法,其特征在于,所述建立所述会话标识与 网络连接的绑定关系包括接收所述请求,根据获取的所述会话标识,发起建立连接请求; 根据返回的连接信息,建立所述会话标识与所述网络连接的绑定关系。
5、 根据权利要求4所述的方法,其特征在于,所述建立所述会话标识与 网络连接的绑定关系还包括接收所述建立连接请求,根据预先配置的负载 均衡策略,确定服务实例,并建立与所述确定的服务实例之间的网络连接, 返回连接信息。
6、 根据权利要求5所述的方法,其特征在于,所述确定与所述会话标识 绑定的网络连接之后还包括采用所述确定的网络连接,进行业务操作。
7、 根据权利要求6所述的方法,其特征在于,所述采用所述确定的网络 连接包括若所述网络连接处于空闲状态,则采用所述网络连接,并将所述网络连接的状态设置为忙状态;若所述网络连接处于忙状态,则进入等待阶段,并当所述网络连接处于 空闲状态后,采用所述连接,同时将所述网络连接的状态设置为忙状态。
8、 根据权利要求6所述的方法,其特征在于,所述采用所述确定的网络 连接还包括采用与所述确定的网络连接对应的服务实例标识中,相同IP地 址和端口号的空闲网络连接,并将该网络连接与会话标识绑定。
9、 根据权利要求1至8任一项所述的方法,其特征在于,所述方法还包 括在完成所述业务操作后,采用释放机制,释放所述确定的网络连接,并 将该网络连接设置为空闲状态。
10、 一种实现负载均衡的装置,其特征在于,包括 请求接收模块,用于接收客户端发起的请求,所述请求参数中包括会话标识,所述会话标识为客户端发起的相互关联的业务操作的会话标识;网络连接确定模块,用于根据所述会话标识,确定与所述会话标识绑定 的网络连接。
11、 根据权利要求10所述的装置,其特征在于,所述装置还包括 会话标识生成模块,用于为客户端发起的相互关联的业务操作建立会话,并为所述会话生成会话标识。
12、 根据权利要求11所述的装置,其特征在于,所述装置还包括绑定关系建立模块,用于建立所述会话标识生成模块生成的会话标识与 网络连接的绑定关系;绑定关系保存模块,用于保存所述绑定关系建立模块建立的会话标识与 网络连接的绑定关系;业务操作模块,用于采用所述网络连接确定模块确定的网络连接,进行 业务操作;释放模块,用于在所述业务操作模块完成业务操作后,释放所述网络连接。
全文摘要
本发明实施例涉及一种实现负载均衡方法及装置。本发明实施例通过采用与客户端发起的请求中包含的会话标识绑定的网络连接,将客户端发起的一组相互关联的业务操作在指定的服务实例中完成业务处理操作,从而简单,安全地在公共对象请求代理结构中实现负载均衡。
文档编号H04L12/56GK101453404SQ200710178530
公开日2009年6月10日 申请日期2007年11月30日 优先权日2007年11月30日
发明者嘉 万, 坚 陈 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1