本发明涉及一种面向服务架构下的服务负载均衡方法及系统。
背景技术:
广域面向服务架构(wsoa),其构成和原理如下:
广域面向服务架构(wsoa),其底层基于ip协议,通过一系列的接口服务实现服务消费者和服务提供者间的信息交换。
广域面向服务架构由域管理中心、服务管理中心、服务代理、服务提供者及服务消费者构成,其构成如图1所示。
在进行本地通信时,数据交互通过服务消费者和服务提供者之间的通道直接进行。
在进行远程通信时,通过本地服务代理和远方服务代理间的配合,在服务消费者和服务提供者之间建立起逻辑的数据连接,进行服务通信。这个过程相当于通过服务代理把服务消费者虚拟成服务提供者的服务域内的服务消费者,或者说是通过服务代理把服务提供者镜像到服务消费者的服务域。
基于广域面向服务架构的数据通信过程如图2所示,包含代理注册、服务注册、服务查询、服务定位等过程。
1)代理注册:远程通信过程,服务代理是服务域对外的唯一出口,新增一个服务域时,应首先向域管理中心进行服务代理注册,登记代理的domainname和ip。
2)服务注册:本地通信过程,服务域内部的服务提供者应向本地服务管理中心注册服务,登记服务提供者ip地址、端口、providerid及servicename。
3)服务查询:远程或本地通信过程,服务查询包括以下几个方面:
查询广域网内的所有服务域:服务消费者通过代理向域管理中心查询所有服务域名(domainname)的清单以及相应代理的ip地址。
查询某一特定服务域内的服务提供者:查询特定域内服务提供者清单。服务消费者根据domainname通过服务代理向对应服务管理中心查询该域内所有providerid清单。
查询某一特定服务提供者的服务:查询特定域内某一服务提供者所提供的服务清单。服务消费者根据domainname和providerid通过服务代理向对应服务管理中心查询该服务提供者的servicename清单。
通过服务名查询服务部署位置:查询某域内某一服务的部署位置。服务消费者根据domainname和servicename通过服务代理向对应服务管理中心查询提供该服务的providerid清单。
查询某一服务的具体信息:类似于服务定位,服务消费者根据domainname、providerid和servicename通过服务代理向对应服务管理中心查询该服务的描述和运行状态信息。
4)服务定位:本地通信过程,定位服务部署于服务管理中心,由服务消费者直接向服务管理中心请求定位服务,服务管理中心将结果返回。对应远方服务的定位,由远方代理通过本地通信过程实现。
在复杂、高可靠和大型应用的情况下,一个服务往往需要设置有多机并列服务,在此情况下服务的负载均衡就是一个重要问题。
技术实现要素:
本发明的目的在于提供一种面向服务架构下的服务负载均衡方法及系统,以实现面向服务架构下的服务负载的均衡。
为实现上述目的,本发明的技术方案是:一种面向服务架构下的服务负载均衡方法,所述面向服务架构包括服务提供者、服务消费者、服务管理中心,包括如下步骤,
服务提供者的各服务实例分别向所述服务管理中心报告负载状态;
当服务消费者访问服务,进行服务定位操作时,服务管理中心从各服务实例的当前负载状态表中选取满足预设条件的服务实例,并把相应的服务实例接口信息返回给服务消费者;
服务消费者通过返回的服务实例接口信息访问服务。
在本发明一实施例中,所述服务提供者的各服务实例在向所述服务管理中心报告负载状态之前,还需向所述服务管理中心进行注册服务。
在本发明一实施例中,所述服务实例接口信息包括服务实例地址或端口信息。
在本发明一实施例中,所述满足预设条件的服务实例即负载最小的服务实例。
在本发明一实施例中,所述面向服务架构还包括服务代理、域管理中心,以实现远程服务消费者对本地服务的访问。
在本发明一实施例中,所述服务消费者访问服务包括以下两种情况:若服务消费者为本地服务消费者,则本地服务消费者直接通过本地的服务管理中心访问服务;
若服务消费者为远程服务消费者,则远程服务消费者需通过远程服务代理、域管理中心、本地服务代理、本地的服务管理中心访问服务。
在本发明一实施例中,还包括:所述服务管理中心更新服务实例的数量,实现动态服务的功能。
本发明还提供了一种面向服务架构下的服务负载均衡系统,所述面向服务架构包括服务提供者、服务消费者、服务管理中心,
设置于所述服务管理中心的服务状态管理单元,用于实现为服务提供者的各服务实例注册服务,并为服务消费者提供服务排序决策和查询服务;
设置于所述服务提供者所在服务器的负载状态收集单元,用于收集服务提供者的各服务实例的负载实时状态,并发送给所述服务状态管理单元。
在本发明一实施例中,所述服务状态管理单元为服务提供者的各服务实例注册服务,包括注册服务实例地址或端口信息。
在本发明一实施例中,所述面向服务架构还包括服务代理、域管理中心,以实现远程服务消费者对本地服务的访问。
在本发明一实施例中,所述服务状态管理单元还用于更新服务实例的数量,实现动态服务的功能。
相较于现有技术,本发明具有以下有益效果:
1)与面向服务架构(soa)完全切合,不需要另外增加设备;
2)实现面向服务架构下的服务负载的均衡。
附图说明
图1为广域面向服务架构构成图。
图2为基于广域面向服务架构的数据通信流程图。
图3为本发明实现方法示意图。
具体实施方式
下面结合附图,对本发明的技术方案进行具体说明。
本发明的一种面向服务架构下的服务负载均衡方法,所述面向服务架构包括服务提供者、服务消费者、服务管理中心,包括如下步骤,
启动应用服务时,服务提供者的各服务实例分别向所述服务管理中心注册服务,注册服务实例接口信息;(每次服务实例启动时进行一次注册,退出时取消注册,注册在线的服务实例才纳入负载均衡计算范围,不是每次均衡进行注册。)
启动应用服务后,服务提供者的各服务实例分别定时(非周期性或条件触发的方式)向所述服务管理中心报告负载状态,服务管理中心记录各服务实例的当前负载状态;
当服务消费者访问服务,进行服务定位操作时,服务管理中心从记录的各服务实例的当前负载状态表中选取最适合提供服务的服务实例(即负载最小的服务实例),并把相应的服务实例接口信息返回给服务消费者;
服务消费者通过返回的服务实例接口信息访问服务,即可实现服务负载均衡。
所述服务实例接口信息包括服务实例地址和端口信息。
所述面向服务架构还包括服务代理、域管理中心,以实现远程服务消费者对本地服务的访问,具体的服务消费者访问服务包括以下两种情况:
若服务消费者为本地服务消费者,则本地服务消费者直接通过本地的服务管理中心访问服务;
若服务消费者为远程服务消费者,则远程服务消费者需通过远程服务代理、域管理中心、本地服务代理、本地的服务管理中心访问服务。
所述服务管理中心还能够实现动态服务的功能,即增加和减少服务实例的数量。
本发明还提供了一种面向服务架构下的服务负载均衡系统,所述面向服务架构包括服务提供者、服务消费者、服务管理中心,
设置于所述服务管理中心的服务状态管理单元,用于实现为服务提供者的各服务实例注册服务,以及记录各服务实例的负载实时状态的收集,并为服务消费者提供基于负载实时状态的服务排序决策和查询服务;
设置于所述服务提供者所在服务器的负载状态收集单元,用于收集服务提供者的各服务实例的负载实时状态,并定时发送给所述服务状态管理单元。
所述服务状态管理单元为服务提供者的各服务实例注册服务,包括注册服务实例地址和端口信息。
所述面向服务架构还包括服务代理、域管理中心,以实现远程服务消费者对本地服务的访问。
所述服务状态管理单元还能够实现动态服务的功能,即增加和减少服务实例的数量。
所述各服务实例的负载实时状态由服务提供者在系统层面、应用层面和链接数负载情况,通过可配置的加权算法形成的负载指标构成。
以下为本发明的具体实现过程。
如图3所示,本发明提供的面向服务架构(soa)下的服务负载均衡实现方法,具体如下:
1)服务提供者和实例:
服务提供者是系统提供特定功能的抽象服务是逻辑的。实例是则是服务提供者包含的,具体实现该服务的实体。一个服务提供者可用包含多个实例,负载均衡就是使一个服务提包含的多个实例负载保持均衡以达到最高的服务性能。
2)服务状态管理功能:
设置于服务管理中心,服务状态管理功能实现全系统(本服务域)的服务负载实时状态的收集,并提供基于负载实时状态的服务排序决策和查询服务。服务排序决策算法取决于负载指标的设定。
3)负载状态收集功能:
设置于应用实例所在的服务器,收集服务端在系统层面、应用层面和链接数几个方面的负载情况,通过可配置的加权算法形成的负载指标。
本发明提出的负载收集,是旨在为掌握服务端服务器负载的情况的功能,soa架构下表征服务器负载的通常是一组指标集,本专利并不对指标集的内容和收集办法做具体规定,但强调应当包含系统层面、应用层面和链接数几个方面因素,其扩张算法也属本发明内容。
4)实现过程:
a)在服务管理中心设置服务状态管理功能;
b)在应用服务端设置负载状态收集功能;
c)应用服务启动时的每个服务实例分别向服务管理中心注册服务,注册其(ip)地址和端口;
d)应用服务启动后每个服务实例分别定时向服务管理中心报告负载状态;
e)服务管理中心的服务状态管理功能记录各服务实例的当前负载状态;
f)当客户端访问服务,进行服务定位操作时(locateservice),服务管理中心从记录的服务实例的当前负载状态表中选取最适合提供服务的实例(如:负载最小的实例),并把相应的服务实例的地址和端口返回给客户端;
g)客户端通过返回的地址访问服务,这样客户端访问的服务都是负载最低的,也就实现了负载均衡;
h)对于支持动态部署的服务(如云系统),服务管理中心的服务状态管理功能,还可建立各种的服务管理策略,作进一步的负载管理。如:通过动态服务功能,增加和减少服务实例的数量等。
以上是本发明的较佳实施例,凡依本发明技术方案所作的改变,所产生的功能作用未超出本发明技术方案的范围时,均属于本发明的保护范围。