CN105471760B - 一种路由方法、负载均衡的装置及数据通信系统 - Google Patents
一种路由方法、负载均衡的装置及数据通信系统 Download PDFInfo
- Publication number
- CN105471760B CN105471760B CN201410466148.4A CN201410466148A CN105471760B CN 105471760 B CN105471760 B CN 105471760B CN 201410466148 A CN201410466148 A CN 201410466148A CN 105471760 B CN105471760 B CN 105471760B
- Authority
- CN
- China
- Prior art keywords
- server
- client
- tcp connection
- load
- information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Computer And Data Communications (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明实施例公开了一种路由方法,包括:在接收到所述客户端发出的数据通信请求后,获取所述多个服务器的工作状态信息,所述工作状态信息包括负载信息;通过比较所述多个服务器的所述负载信息,选取负载满足条件的服务器作为目标服务器;生成从所述客户端通过所述中间件到所述目标服务器的路由信息;将所述路由信息发送给所述客户端,所述路由信息用于建立所述客户端通过所述中间件到所述目标服务器的数据通信。相应地,本发明实施例还公开了一种负载均衡的装置和数据通信系统。采用本发明,可以均衡客户端与多个服务器间数据通信的负载,具有请求灵活、可靠性高和成本低的特点。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种路由方法、负载均衡的装置及数据通信系统。
背景技术
应用基础架构(Application Infrastructure)是一种包括客户端、服务器以及中间件的网络公共服务平台,能够有效交付具有强大的事务整合性、事务高安全性以及控制执行性的应用和服务。广泛应用于IT(Information Technology,信息技术)、证券、金融、银行、电信、政府以及企业等核心业务。例如在金融行业的应用基础构架中,客户端与服务器之间可通过网络对金融数据业务进行交互,中间件可对客户端与服务器上的应用资源以及客户端与服务器间的网络资源进行管理,最终实现在不同的OS(Operation System,操作系统)环境或具有不同通信接口的设备间进行金融数据业务交换的功能,具有计算量庞大、可靠性高以及运算速度高的特点。
其中,在客户端与服务器间数据通信出现高负载的情况下,将会面临负载不均衡的问题,负载不均衡即网络资源并未被最大化利用,导致数据交互性能下降。为了解决这个问题,IBM提供了WLM(Workload Manager,负载管理器)技术,但该技术只支持AIX、Solaris以及z/OS平台下的应用基础架构,并不支持X86平台下的应用基础架构,而众所周知地,X86平台具有成本低、开放程度高以及用户熟悉度高的优点,因此WLM技术具有一定局限性。而基于X86平台的供应商提供了一种硬件负载均衡方法,即客户端和服务器间的数据交互通过LB(Load Balance,负载均衡)设备来处理请求转发,由LB设备来维持两端的TCP连接,该技术为了降低TCP短连接带来的数据传输延迟和反复重新连接的消耗,采用了TCP长连接方式,但是在TCP长连接过程中,由于LB设备要维持中转状态,客户端的新请求无法通过LB设备发送到其它的服务器,造成了请求不灵活,影响数据交互的性能。
发明内容
本发明实施例提供了一种路由方法、负载均衡的装置及数据通信系统,可以均衡客户端与多个服务器间数据通信的负载,具有请求灵活的特点。
本发明实施例第一方面提供了一种路由方法,所述路由方法应用于负载均衡的装置,所述负载均衡的装置分别与客户端和多个服务器相连,所述客户端通过中间件与所述多个服务器相连,所述路由方法包括:在接收到所述客户端发出的数据通信请求后,获取所述多个服务器的工作状态信息,所述工作状态信息包括负载信息;通过比较所述多个服务器的所述负载信息,选取负载满足条件的服务器作为目标服务器;生成从所述客户端通过所述中间件到所述目标服务器的路由信息;将所述路由信息发送给所述客户端,所述路由信息用于建立所述客户端通过所述中间件到所述目标服务器的数据通信。
在第一方面的第一种可能实现方式中,所述服务器的工作状态信息还包括端口进程信息;所述生成从所述客户端通过所述中间件到所述目标服务器的路由信息,包括:通过查询所述目标服务器的端口进程信息,选取所述目标服务器的空闲的目标端口进程;生成从所述客户端通过所述中间件到所述目标服务器的所述目标端口进程的路由信息。
结合第一方面的第一种可能实现方式,在第二种可能实现方式中,所述服务器的工作状态信息还包括TCP连接信息;所述通过查询所述目标服务器的端口进程信息,选取所述目标服务器的空闲的目标端口进程之前,还包括:通过查询所述目标服务器的TCP连接信息,选取所述客户端与所述目标服务器间的空闲的目标TCP连接。
所述生成从所述客户端通过所述中间件到所述目标服务器的所述目标端口进程的路由信息,包括:生成从所述客户端通过所述中间件经所述目标TCP连接到所述目标服务器的所述目标端口进程的路由信息。
结合第一方面的可能实现方式,在第三种可能实现方式中,所述通过比较所述多个服务器的所述负载信息,选取负载满足条件的服务器作为目标服务器,包括:根据预设的算法计算出各个所述服务器的所述负载信息的参考值,所述负载信息包括CPU负载值、响应时间和已建立的TCP连接数;获取在所述多个服务器中所述负载信息的参考值最小的服务器作为所述目标服务器。
结合第一方面以及第一方面的第三种可能实现方式,在第四种可能实现方式中,所述根据预设的算法计算出各个所述服务器的负载信息的参考值,包括:
根据公式Wt=S×(kLoad×j1+kRe×j2+kTCP×j3)计算出各个所述服务器的负载信息的参考值,其中,所述Wt表示所述负载信息的参考值,所述S表示服务器的在线状态,所述S=1表示服务器在线,所述S=+∞表示服务器离线,所述kLoad表示服务器的所述CPU负载值,所述j1表示预设的所述CPU负载值对应的权重值,kRe表示服务器的所述响应时间,所述j2表示预设的所述响应时间对应的权重值,所述kTCP表示服务器的所述已建立的TCP连接数,所述j3表示预设的所述已建立的TCP连接数对应的权重值。
结合第一方面以及第一方面的第二种可能实现方式,在第五种可能实现方式中,所述通过查询所述目标服务器的TCP连接信息,选取客户端与所述目标服务器间的空闲的目标TCP连接,包括:通过查询所述目标服务器的TCP连接信息,判断所述客户端与所述目标服务器间是否存在至少一个空闲的TCP连接;若存在至少一个空闲的TCP连接,则获取任意一个所述空闲的TCP连接作为所述目标TCP连接;若不存在空闲的TCP连接,则新建一个TCP连接作为所述目标TCP连接。
结合第一方面以及第一方面的第二至第五种可能实现方式,在第六种可能实现方式中,所述TCP连接是TCP长连接。
本发明实施例第二方面提供了一种计算机存储介质,所述计算机存储介质存储有程序,该程序执行时包括第一方面提供的一种路由方法的部分或全部步骤。
本发明实施例第三方面提供了一种负载均衡的装置,所述装置分别与客户端和多个服务器相连,所述客户端通过中间件与所述多个服务器相连,所述装置包括:状态信息获取模块,用于在接收到所述客户端发出的数据通信请求后,获取所述多个服务器的工作状态信息,所述工作状态信息包括负载信息;服务器选取模块,用于通过比较所述多个服务器的所述负载信息,选取负载满足条件的服务器作为目标服务器;路由信息生成模块,用于生成从所述客户端通过所述中间件到所述目标服务器的路由信息;路由信息发送模块,用于将所述路由信息发送给所述客户端,所述路由信息用于建立所述客户端通过所述中间件到所述目标服务器的数据通信。
在第三方面的第一种可能实现方式中,所述服务器的工作状态信息还包括端口进程信息。
所述路由信息生成模块,包括:端口进程选取单元,用于通过查询所述目标服务器的端口进程信息,选取所述目标服务器的空闲的目标端口进程;路由信息生成单元,用于生成从所述客户端通过所述中间件到所述目标服务器的所述目标端口进程的路由信息。
结合第三方面的第一种可能实现方式,在第二种可能实现方式中,所述服务器的工作状态信息还包括TCP连接信息。
所述路由信息生成模块,还包括:TCP连接选取单元,用于通过查询所述目标服务器的TCP连接信息,选取所述客户端与所述目标服务器间的空闲的目标TCP连接;所述路由信息生成单元,具体用于生成从所述客户端通过所述中间件经所述目标TCP连接到所述目标服务器的所述目标端口进程的路由信息。
结合第三方面的可能实现方式,在第三种可能实现方式中,所述服务器选取模块包括:参考值计算单元,用于根据预设的算法计算出各个所述服务器的所述负载信息的参考值,所述负载信息包括CPU负载值、响应时间和已建立的TCP连接数;服务器选取单元,用于获取在所述多个服务器中所述负载信息的参考值最小的服务器作为所述目标服务器。
结合第三方面以及第三方面的第三种可能实现方式,在第四种可能实现方式中,所述参考值计算单元,具体用于根据公式Wt=S×(kLoad×j1+kRe×j2+kTCP×j3)计算出各个所述服务器的负载信息的参考值,其中,所述Wt表示所述负载信息的参考值,所述S表示服务器的在线状态,所述S=1表示服务器在线,所述S=+∞表示服务器离线,所述kLoad表示服务器的所述CPU负载值,所述j1表示预设的所述CPU负载值对应的权重值,kRe表示服务器的所述响应时间,所述j2表示预设的所述响应时间对应的权重值,所述kTCP表示服务器的所述已建立的TCP连接数,所述j3表示预设的所述已建立的TCP连接数对应的权重值。
结合第三方面以及第三方面的第二种可能实现方式,在第五种可能实现方式中,所述TCP连接选取单元包括:空闲连接判断子单元,用于通过查询所述目标服务器的TCP连接信息,判断所述客户端与所述目标服务器间是否存在至少一个空闲的TCP连接;
TCP连接获取子单元,用于若存在至少一个空闲的TCP连接,则获取任意一个所述空闲的TCP连接作为所述目标TCP连接;若不存在空闲的TCP连接,则新建一个TCP连接作为所述目标TCP连接。
结合第三方面以及第三方面的第二至第五种可能实现方式,在第六种可能实现方式中,所述TCP连接是TCP长连接。
本发明实施例第四方面提供了一种负载均衡的装置,包括:处理器、通信接口和存储器,其中,存储器中存储一组程序,且处理器用于调用存储器中存储的程序,用于执行以下操作:在接收到所述客户端发出的数据通信请求后,获取所述多个服务器的工作状态信息,所述工作状态信息包括负载信息;通过比较所述多个服务器的所述负载信息,选取负载满足条件的服务器作为目标服务器;生成从所述客户端通过所述中间件到所述目标服务器的路由信息;将所述路由信息发送给所述客户端,所述路由信息用于建立所述客户端通过所述中间件到所述目标服务器的数据通信。
本发明实施例第五方面提供了一种数据通信系统的装置,所述数据通信系统包括客户端、多个服务器以及第三方面提供的所述的负载均衡的装置,所述负载均衡的装置分别与所述客户端和所述多个服务器相连,所述客户端通过中间件与所述多个服务器相连,其中:所述客户端在需要与所述服务器建立数据通信时,向所述负载均衡的装置发出数据通信请求;所述负载均衡的装置在接收到客户端发出的数据通信请求后,向所述多个服务器索要各个服务器的工作状态信息;所述多个服务器向所述负载均衡的装置上传所述工作状态信息,所述工作状态信息包括负载信息;所述负载均衡的装置获取所述多个服务器上传的工作状态信息;通过比较所述多个服务器的所述负载信息,选取负载满足条件的服务器作为目标服务器;生成从所述客户端通过所述中间件到所述目标服务器的路由信息;将所述路由信息发送给所述客户端;所述客户端根据所述路由信息建立通过所述中间件到所述目标服务器的数据通信。
由上可见,本发明实施例中的负载均衡的装置在接收到客户端发出的数据通信请求后,获取多个服务器的包括负载信息的工作状态信息,进而通过比较多个服务器的负载信息选取目标服务器,生成从客户端到目标服务器的路由信息,并将路由信息发送给客户端以使客户端根据路由信息建立与目标服务器的数据通信,可以实现均衡客户端与多个服务器间数据通信的负载,由于本发明实施例随时都可以执行客户端发出的数据通信请求,故具有请求灵活的特点。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,下面描述中的附图仅仅是本发明的一些实施例,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种路由方法的流程示意图;
图2是本发明实施例提供的另一种路由方法的流程示意图;
图3是本发明实施例提供的又一种路由方法的流程示意图;
图4是本发明实施例提供的一种负载均衡的装置的结构示意图;
图5是本发明实施例提供的一种服务器选取模块的结构示意图;
图6是本发明实施例提供的一种路由信息生成模块的结构示意图;
图7是本发明实施例提供的一种TCP连接选取单元的结构示意图;
图8是本发明实施例提供的一种数据通信系统的结构示意图;
图9是本发明实施例提供的另一种负载均衡的装置的结构示意图;
图10是本发明实施例提供的一种应用基础架构的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,所获得的所有其他实施例,都属于本发明保护的范围。
应理解的,本发明实施例可应用于各种数据通信系统,尤其应用于基于X86平台的应用基础架构(Application Infrastructure)。应用基础架构是一种包括客户端、服务器以及中间件的网络公共服务平台,能够有效交付具有强大的事务整合性、事务高安全性以及控制执行性的应用和服务,例如IT、证券、金融、银行、电信、政府以及企业等核心业务。其中,上述中间件是一种介于客户端和服务器间的分布式设备,用于实现客户端中的应用程序和服务器中的数据库间的数据通信。
还应理解的,本发明实施例中的客户端包括CICS(Customer InformationControl System,客户信息控制系统)客户端,本发明实施例中的服务器包括CICS服务器。本发明实施例提供的负载均衡的装置(以下简称为“本发明装置”)分别与CICS客户端和CICS服务器相连,但不维持CICS客户端和CICS服务器间的TCP连接,处于第三方的位置,具体连接方式,可参阅图10所示的一种应用基础架构的示意图。通过上述连接方式,CICS客户端与CICS服务器间的数据通信不经由其它设备中转,即使数据通信过程中本发明装置down机,也不影响现有及后续的数据通信,没有单点故障隐患,增强了可靠性。
还应理解的,本发明装置可应用于X86平台,而众所周知地,X86平台具有成本低、开放程度高以及用户熟悉度高的优点。进一步的,本发明装置还使用了HA(HighAvailable,高可用性)构架以增强可用性。
图1是本发明实施例中一种路由方法的流程示意图。如图所示本实施例中的路由方法的流程可以包括以下所描述的步骤S101至S104。
S101,在接收到客户端发出的数据通信请求后,获取多个服务器的工作状态信息,所述工作状态信息包括负载信息。
所述数据通信请求是客户端在需要与服务器建立数据通信时发出的请求。例如:用户向客户端提交一份交易订单,客户端需要将这份交易订单的数据信息传送给位于后台的服务器,即与服务器建立数据通信,此时客户端便会向本发明装置发出数据通信请求。
具体的,本发明装置在接收到客户端发出的数据通信请求后,获取位于后台的多个服务器的工作状态信息。需要指出的是,所述工作状态信息至少包括服务器的负载信息。
可选的,所述负载信息包括服务器的CPU负载值、服务器的响应时间和服务器已建立的TCP连接数。其中,CPU负载值表示CPU当前的使用率,如5%;响应时间表示当前响应数据通信所需的时间,如1ms;已建立的TCP连接数表示与客户端间所建立的TCP连接的个数。
S102,通过比较所述多个服务器的所述负载信息,选取负载满足条件的服务器作为目标服务器。
具体实现过程中,本发明装置选取目标服务器的方法可以包括以下所描述的两个步骤。
步骤1,根据预设的算法计算出各个服务器的负载信息的参考值。
具体的,本发明装置可根据公式Wt=S×(kLoad×j1+kRe×j2+kTCP×j3)计算出各个服务器的负载信息的参考值。其中,Wt表示负载信息的参考值,S表示服务器的在线状态,S=1表示服务器在线,S=+∞表示服务器离线,kLoad表示服务器的CPU负载值,j1表示预设的CPU负载值对应的权重值,kRe表示服务器的响应时间,j2表示预设的响应时间对应的权重值,kTCP表示服务器的已建立的TCP连接数,j3表示预设的已建立的TCP连接数对应的权重值。需要指出的是,j1、j2和j3可根据经验预先设定,例如CPU的负载值kLoad的大小最能明显反映服务器的负载信息的参考值,故j1设为100,而响应时间kRe和已建立的TCP连接数kTCP反映较小,故j2和j3可分别设为2和1。
作为一个可选的示例,假设各权重值分别为j1=100,j2=2,j3=1,又假设服务器1、服务器2和服务器3的负载信息如表1所示。
表1
在线状态 | CPU负载值 | 响应时间 | 已建立的TCP连接数 | |
服务器1 | 1 | 10% | 1ms | 1 |
服务器2 | 1 | 5% | 1ms | 2 |
服务器3 | 1 | 7% | 2ms | 2 |
设Wt1、Wt2和Wt3分别表示服务器1、服务器2和服务器3的负载信息的参考值,那么可计算得:Wt1=1×(10%×100+1×2+1×1)=13;Wt2=1×(5%×100+1×2+2×1)=9;Wt3=1×(7%×100+2×2+2×1)=13。
可见Wt1=Wt3>Wt2,Wt2最小。另外,若某服务器处于离线状态,S=+∞,则Wt=+∞,在存在其它服务器处于非离线状态时,该服务器的负载信息的参考值显然不会最小。
步骤2,获取在多个服务器中负载信息的参考值最小的服务器作为目标服务器。
具体的,本发明装置将多个服务器中负载信息的参考值最小的服务器作为目标服务器。根据步骤1的预设算法不难得知,负载信息的参考值越小,服务器的工作量越小,越相对空闲,若以相对空闲的服务器作为客户端与之建立数据通信的目标服务器,将解决客户端与服务器间数据通信负载不均衡的问题,提高数据交互性能。
S103,生成从所述客户端通过所述中间件到所述目标服务器的路由信息。
所述路由信息指示了源端通过网络连接到对端的路径选择方法,在本发明实施例中,所述源端为客户端,所述对端为目标服务器。
具体的,本发明装置生成从客户端通过中间件到目标服务器的路由信息。
进一步的,服务器需通过创建的端口进程来与客户端进行数据通信,而每个服务器可创建多个端口进程,例如,请参阅图10,服务器1就创建有2个端口进程,因此,本发明实施例还可以在路由信息里添加目标端口进程。所述服务器的端口进程也称为Region,各个Region用Region ID来区别,例如Region 1、Region 2等。
可选的,服务器的工作状态信息还包括端口进程信息,端口进程信息包括服务器已创建的端口进程和各个端口进程当前的TPS(Transaction Per Second,每秒钟处理完成的数据量),当某端口进程的TPS低于预设的阈值,则可认为该端口进程处于空闲状态。具体实现过程中,本发明装置通过查询目标服务器的端口进程信息,选取目标服务器的空闲的目标端口进程,并生成从客户端通过中间件到目标服务器的目标端口进程的路由信息。
作为一个可选的示例,本发明装置查询目标服务器的端口进程信息可知,目标服务器创建了Region 1、Region 2和Region 3三个端口进程,对应的TPS分别为30、20和3,假设预设的阈值是5,则可认为Region 3处于空闲状态,本发明装置获取Region 3作为目标端口进程,生成如表2所示的路由信息。另外,若本发明装置查询得知目标服务器存在多个空闲的端口进程,则任选其一作为目标端口进程或选取TPS最小的空闲端口进程作为目标端口进程。
表2
更进一步的,客户端与目标服务器间可能存在多个TCP连接,例如,请参阅图10,客户端与各个服务器间分别存在两个TCP连接。所述TCP连接也称为Socket,各个Socket用Socket ID来区别,例如Socket 1、Socket 2等,因此,本发明实施例还可以在路由信息里添加目标TCP连接。需要指出的是,在本发明实施例中,所述TCP连接可以是TCP长连接,TCP长连接降低了TCP短连接带来的数据传输延迟和减少了反复重新连接的消耗,并且增强了数据通信的可靠性。
可选的,服务器的工作状态信息还包括TCP连接信息,所述TCP连接信息包括客户端与服务器间存在的TCP连接。具体实现过程中,本发明装置通过查询目标服务器的TCP连接信息,选取客户端与目标服务器间的空闲的目标TCP连接,并生成从客户端通过中间件经目标TCP连接到目标服务器的目标端口进程的路由信息。
另外,若本发明装置获知客户端与目标服务器间存在多个空闲的TCP连接,则获取任意一个空闲的TCP连接作为目标TCP连接,若不存在空闲的TCP连接,则新建一个TCP连接作为目标TCP连接。
相应的,本发明装置可通过以下方法来判断TCP连接信息中的TCP连接是否处于空闲:询问客户端是否正在通过目标服务器的TCP连接信息中的所有的TCP连接向目标服务器传送数据,若否,则判定客户端与目标服务器间存在至少一个空闲的TCP连接,若是,则判定客户端与目标服务器间不存在空闲的TCP连接。
作为一个可选的示例:本发明装置查询目标服务器的TCP连接信息可知,客户端与目标服务器间存在Socket 1、Socket 2和Socket 3三个TCP连接,假设询问客户后发现客户端正在通过Socket 1、Socket 2和Socket 3向目标服务器的Region 3传送数据,则可认为Socket 1、Socket 2和Socket 3均不处于空闲状态,本发明装置将新建一个Socket 4作为目标TCP连接,生成如表3所示的路由信息。
表3
S104,将所述路由信息发送给所述客户端,所述路由信息用于建立所述客户端通过所述中间件到所述目标服务器的数据通信。
可选的,本发明装置在确定客户端根据路由信息建立与目标服务器的数据通信后,更新本地的端口进程信息和TCP连接信息。例如,假设客户端通过Socket 4与目标服务器的Region 3建立数据通信,则本发明装置在本地的TCP连接信息中增加Socket 4,在端口进程中增加Region 3。需要指出的是,通过更新本地的端口进程信息和TCP信息,当客户端发出下一个数据通信请求后,本发明装置只需获取多个服务器的部分工作状态信息,增高了本发明装置的工作效率。
由上可知,本发明实施例中的负载均衡的装置在接收到客户端发出的数据通信请求后,获取多个服务器的包括负载信息的工作状态信息,进而通过比较多个服务器的负载信息选取目标服务器,生成从客户端到目标服务器的路由信息,并将路由信息发送给客户端以使客户端根据路由信息建立与目标服务器的数据通信,可以实现均衡客户端与多个服务器间数据通信的负载,由于本发明实施例随时都可以执行客户端发出的数据通信请求,故具有请求灵活的特点。
图2是本发明实施例中另一种路由方法的流程示意图,可以包括以下所描述的步骤S201至S209。
S201,在接收到客户端发出的数据通信请求后,获取多个服务器的工作状态信息,所述工作状态信息包括负载信息。
所述数据通信请求是客户端在需要与服务器建立数据通信时发出的请求。例如:用户向客户端提交一份交易订单,客户端需要将这份交易订单的数据信息传送给位于后台的服务器,即与服务器建立数据通信,此时客户端便会向本发明装置发出数据通信请求。
具体的,本发明装置在接收到客户端发出的数据通信请求后,获取位于后台的多个服务器的工作状态信息。需要指出的是,所述工作状态信息至少包括服务器的负载信息。
可选的,所述负载信息包括服务器的CPU负载值、服务器的响应时间和服务器已建立的TCP连接数。其中,CPU负载值表示CPU当前的使用率,如5%;响应时间表示当前响应数据通信所需的时间,如1ms;已建立的TCP连接数表示与客户端间所建立的TCP连接的个数。
S202,根据预设的算法计算出各个所述服务器的所述负载信息的参考值,所述负载信息包括CPU负载值、响应时间和已建立的TCP连接数。
具体的,本发明装置可根据公式Wt=S×(kLoad×j1+kRe×j2+kTCP×j3)计算出各个服务器的负载信息的参考值。其中,Wt表示负载信息的参考值,S表示服务器的在线状态,S=1表示服务器在线,S=+∞表示服务器离线,kLoad表示服务器的CPU负载值,j1表示预设的CPU负载值对应的权重值,kRe表示服务器的响应时间,j2表示预设的响应时间对应的权重值,kTCP表示服务器的已建立的TCP连接数,j3表示预设的已建立的TCP连接数对应的权重值。需要指出的是,j1、j2和j3可根据经验预先设定,例如CPU的负载值kLoad的大小最能明显反映服务器的负载信息的参考值,故j1设为100,而响应时间kRe和已建立的TCP连接数kTCP反映较小,故j2和j3可分别设为2和1。
作为一个可选的示例,假设各权重值分别为j1=100,j2=2,j3=1,又假设服务器1、服务器2和服务器3的负载信息如表1所示。
表1
在线状态 | CPU负载值 | 响应时间 | 已建立的TCP连接数 | |
服务器1 | 1 | 10% | 1ms | 1 |
服务器2 | 1 | 5% | 1ms | 2 |
服务器3 | 1 | 7% | 2ms | 2 |
设Wt1、Wt2和Wt3分别表示服务器1、服务器2和服务器3的负载信息的参考值,那么可计算得:Wt1=1×(10%×100+1×2+1×1)=13;Wt2=1×(5%×100+1×2+2×1)=9;Wt3=1×(7%×100+2×2+2×1)=13。
可见Wt1=Wt3>Wt2,Wt2最小。另外,若某服务器处于离线状态,S=+∞,则Wt=+∞,在存在其它服务器处于非离线状态时,该服务器的负载信息的参考值显然不会最小。
S203,获取在所述多个服务器中所述负载信息的参考值最小的服务器作为所述目标服务器。
具体的,本发明装置将多个服务器中负载信息的参考值最小的服务器作为目标服务器。根据S202的预设算法不难得知,负载信息的参考值越小,服务器的工作量越小,越相对空闲,若以相对空闲的服务器作为客户端与之建立数据通信的目标服务器,将解决客户端与服务器间数据通信负载不均衡的问题,提高数据交互性能。
S204,通过查询所述目标服务器的工作状态信息中的TCP连接信息,判断所述客户端与所述目标服务器间是否存在至少一个空闲的TCP连接。
其中,客户端与目标服务器间可能存在多个TCP连接,例如,请参阅图10,客户端与各个服务器间分别存在两个TCP连接。所述TCP连接也称为Socket,各个Socket用Socket ID来区别,例如Socket 1、Socket 2等。需要指出的是,在本发明实施例中,所述TCP连接可以是TCP长连接,TCP长连接降低了TCP短连接带来的数据传输延迟和减少了反复重新连接的消耗,并且增强了数据通信的可靠性。
可选的,服务器的工作状态信息还包括TCP连接信息,所述TCP连接信息包括客户端与服务器间存在的TCP连接。具体的,本发明装置通过查询目标服务器的工作状态信息中的TCP连接信息,判断客户端与目标服务器间是否存在至少一个空闲的TCP连接,若是,则进入S205,否则进入S206。
具体实现过程中,本发明装置可通过以下方法来判断TCP连接信息中的TCP连接是否处于空闲:询问客户端是否正在通过目标服务器的TCP连接信息中的所有的TCP连接向目标服务器传送数据,若否,则判定客户端与目标服务器间存在至少一个空闲的TCP连接,若是,则判定客户端与目标服务器间不存在空闲的TCP连接。
作为一个可选的示例:本发明装置查询目标服务器的TCP连接信息可知,客户端与目标服务器间存在Socket 1、Socket 2和Socket 3三个TCP连接,假设询问客户后发现客户端正在通过Socket 1、Socket 2和Socket 3向目标服务器的Region 3传送数据,则可认为Socket 1、Socket 2和Socket 3均不处于空闲状态,进入S206。
S205,获取任意一个所述空闲的TCP连接作为所述目标TCP连接。
S206,新建一个TCP连接作为所述目标TCP连接。
S207,通过查询所述目标服务器的工作状态信息中的端口进程信息,选取所述目标服务器的空闲的目标端口进程。
其中,服务器需通过创建的端口进程来与客户端进行数据通信,而每个服务器可创建多个端口进程,例如,请参阅图10,服务器1就创建有2个端口进程。所述服务器的端口进程也称为Region,各个Region用Region ID来区别,例如Region 1、Region 2等。
可选的,服务器的工作状态信息还包括端口进程信息,端口进程信息包括服务器已创建的端口进程和各个端口进程当前的TPS(Transaction Per Second,每秒钟处理完成的数据量),当某端口进程的TPS低于预设的阈值,则可认为该端口进程处于空闲状态。具体的,本发明装置通过查询目标服务器的端口进程信息,选取目标服务器的空闲的目标端口进程。
作为一个可选的示例,本发明装置查询目标服务器的端口进程信息可知,目标服务器创建了Region 1、Region 2和Region 3三个端口进程,对应的TPS分别为30、20和3,假设预设的阈值是5,则可认为Region 3处于空闲状态,本发明装置获取Region 3作为目标端口进程。另外,若本发明装置查询得知目标服务器存在多个空闲的端口进程,则任选其一作为目标端口进程或选取TPS最小的空闲端口进程作为目标端口进程。
S208,生成从所述客户端通过中间件经所述目标TCP连接到所述目标服务器的所述目标端口进程的路由信息。
作为一个可选的示例,假设目标服务器的目标TCP连接是Socket 4,假设目标服务器的目标端口进程是Region 3,则生成的路由信息如表3所示。
表3
S209,将所述路由信息发送给所述客户端,所述路由信息用于建立所述客户端通过所述中间件到所述目标服务器的数据通信。
可选的,本发明装置在确定客户端根据路由信息建立与目标服务器的数据通信后,更新本地的端口进程信息和TCP连接信息。例如,假设客户端通过Socket 4与目标服务器的Region 3建立数据通信,则本发明装置在本地的TCP连接信息中增加Socket 4,在端口进程中增加Region 3。需要指出的是,通过更新本地的端口进程信息和TCP信息,当客户端发出下一个数据通信请求后,本发明装置只需获取多个服务器的部分工作状态信息,增高了本发明装置的工作效率。
由上可见,本发明实施例中的负载均衡的装置在接收到客户端发出的数据通信请求后,获取包括负载信息、TCP连接信息和端口进程信息的多个服务器的工作状态信息,进而通过比较多个服务器的负载信息选取目标服务器,通过查询目标服务器的TCP连接信息选取客户端与所述目标服务器间的空闲的目标TCP连接,通过查询目标服务器的端口进程信息选取目标服务器的空闲的目标端口进程,再生成从客户端经目标TCP连接到目标服务器的目标端口进程的路由信息,并将路由信息发送给客户端以使客户端根据路由信息建立与目标服务器的数据通信,可以实现均衡客户端与多个服务器间数据通信的负载,本发明由于随时都可以执行客户端发出的数据通信请求,故具有请求灵活的特点,由于TCP连接为TCP长连接,故具有可靠性高的特点,由于可应用于X86平台,故具有成本低的特点。
图3是本发明实施例中又一种路由方法的流程示意图,可以包括以下所描述的步骤S301至S312。
S301,客户端向负载均衡的装置发出数据通信请求。
所述数据通信请求是客户端在需要与服务器建立数据通信时发出的请求。例如:用户向客户端提交一份交易订单,客户端需要将这份交易订单的数据信息传送给位于后台的服务器,即与服务器建立数据通信,此时客户端便会向负载均衡的装置发出数据通信请求。
S302,负载均衡的装置向多个服务器索要各个服务器的工作状态信息。
具体的,负载均衡的装置在接收到客户端发出的数据通信请求后,向多个服务器索要各个服务器的工作状态信息。需要指出的是,所述工作状态信息至少包括服务器的负载信息。
可选的,所述负载信息包括服务器的CPU负载值、服务器的响应时间和服务器已建立的TCP连接数。其中,CPU负载值表示CPU当前的使用率,如5%;响应时间表示当前响应数据通信所需的时间,如1ms;已建立的TCP连接数表示与客户端间所建立的TCP连接的个数。
S303,多个服务器向所述负载均衡的装置上传所述工作状态信息。
具体的,在负责均衡的装置索要工作状态信息时,各个服务器分别将各自的工作状态信息上传至负载均衡的装置。
S304,负载均衡的装置根据预设的算法计算出所述各个服务器的工作状态信息中的负载信息的参考值,所述负载信息包括CPU负载值、响应时间和已建立的TCP连接数。
具体的,负载均衡的装置可根据公式Wt=S×(kLoad×j1+kRe×j2+kTCP×j3)计算出各个服务器的负载信息的参考值。其中,Wt表示负载信息的参考值,S表示服务器的在线状态,S=1表示服务器在线,S=+∞表示服务器离线,kLoad表示服务器的CPU负载值,j1表示预设的CPU负载值对应的权重值,kRe表示服务器的响应时间,j2表示预设的响应时间对应的权重值,kTCP表示服务器的已建立的TCP连接数,j3表示预设的已建立的TCP连接数对应的权重值。需要指出的是,j1、j2和j3可根据经验预先设定,例如CPU的负载值kLoad的大小最能明显反映服务器的负载信息的参考值,故j1设为100,而响应时间kRe和已建立的TCP连接数kTCP反映较小,故j2和j3可分别设为2和1。
作为一个可选的示例,假设各权重值分别为j1=100,j2=2,j3=1,又假设服务器1、服务器2和服务器3的负载信息如表1所示。
表1
在线状态 | CPU负载值 | 响应时间 | 已建立的TCP连接数 | |
服务器1 | 1 | 10% | 1ms | 1 |
服务器2 | 1 | 5% | 1ms | 2 |
服务器3 | 1 | 7% | 2ms | 2 |
设Wt1、Wt2和Wt3分别表示服务器1、服务器2和服务器3的负载信息的参考值,那么可计算得:Wt1=1×(10%×100+1×2+1×1)=13;Wt2=1×(5%×100+1×2+2×1)=9;Wt3=1×(7%×100+2×2+2×1)=13。
可见Wt1=Wt3>Wt2,Wt2最小。另外,若某服务器处于离线状态,S=+∞,则Wt=+∞,在存在其它服务器处于非离线状态时,该服务器的负载信息的参考值显然不会最小。
S305,负载均衡的装置获取在所述多个服务器中所述负载信息的参考值最小的服务器作为所述目标服务器。
具体的,负载均衡的装置将多个服务器中负载信息的参考值最小的服务器作为目标服务器。根据S202的预设算法不难得知,负载信息的参考值越小,服务器的工作量越小,越相对空闲,若以相对空闲的服务器作为客户端与之建立数据通信的目标服务器,将解决客户端与服务器间数据通信负载不均衡的问题,提高数据交互性能。
S306,负载均衡的装置询问所述客户端是否正在通过所述工作状态信息的TCP连接信息中的所有的TCP连接向所述目标服务器传送数据。
其中,客户端与目标服务器间可能存在多个TCP连接,例如,请参阅图10,客户端与各个服务器间分别存在两个TCP连接。所述TCP连接也称为Socket,各个Socket用Socket ID来区别,例如Socket 1、Socket 2等。需要指出的是,在本发明实施例中,所述TCP连接可以是TCP长连接,TCP长连接降低了TCP短连接带来的数据传输延迟和减少了反复重新连接的消耗,并且增强了数据通信的可靠性。
可选的,服务器的工作状态信息还包括TCP连接信息,所述TCP连接信息包括客户端与服务器间存在的TCP连接。具体的,负载均衡的装置通过查询目标服务器的工作状态信息中的TCP连接信息,判断客户端与目标服务器间是否存在至少一个空闲的TCP连接,若是,则进入S307,否则进入S308。
具体实现过程中,负载均衡的装置可通过以下方法来判断TCP连接信息中的TCP连接是否处于空闲:询问客户端是否正在通过目标服务器的TCP连接信息中的所有的TCP连接向目标服务器传送数据,若否,则判定客户端与目标服务器间存在至少一个空闲的TCP连接,若是,则判定客户端与目标服务器间不存在空闲的TCP连接。
作为一个可选的示例:负载均衡的装置查询目标服务器的TCP连接信息可知,客户端与目标服务器间存在Socket 1、Socket 2和Socket 3三个TCP连接,假设询问客户后发现客户端正在通过Socket 1、Socket 2和Socket 3向目标服务器的Region 3传送数据,则可认为Socket 1、Socket 2和Socket 3均不处于空闲状态,进入S308。
S307,负载均衡的装置获取任意一个空闲的TCP连接作为目标TCP连接。
S308,负载均衡的装置新建一个TCP连接作为目标TCP连接。
S309,负载均衡的装置通过查询所述目标服务器的工作状态信息中的端口进程信息,选取所述目标服务器的空闲的目标端口进程。
其中,服务器需通过创建的端口进程来与客户端进行数据通信,而每个服务器可创建多个端口进程,例如,请参阅图10,服务器1就创建有2个端口进程。所述服务器的端口进程也称为Region,各个Region用Region ID来区别,例如Region 1、Region 2等。
可选的,服务器的工作状态信息还包括端口进程信息,端口进程信息包括服务器已创建的端口进程和各个端口进程当前的TPS(Transaction Per Second,每秒钟处理完成的数据量),当某端口进程的TPS低于预设的阈值,则可认为该端口进程处于空闲状态。具体的,负载均衡的装置通过查询目标服务器的端口进程信息,选取目标服务器的空闲的目标端口进程。
作为一个可选的示例,负载均衡的装置查询目标服务器的端口进程信息可知,目标服务器创建了Region 1、Region 2和Region 3三个端口进程,对应的TPS分别为30、20和3,假设预设的阈值是5,则可认为Region 3处于空闲状态,负载均衡的装置获取Region 3作为目标端口进程。另外,若负载均衡的装置查询得知目标服务器存在多个空闲的端口进程,则任选其一作为目标端口进程或选取TPS最小的空闲端口进程作为目标端口进程。
S310,负载均衡的装置生成从所述客户端通过中间件经所述目标TCP连接到所述目标服务器的所述目标端口进程的路由信息。
作为一个可选的示例,假设目标服务器的目标TCP连接是Socket 4,假设目标服务器的目标端口进程是Region 3,则生成的路由信息如表3所示。
表3
S311,负载均衡的装置将所述路由信息发送给所述客户端。
S312,负载均衡的装置根据所述路由信息建立与所述目标服务器的数据通信。
可选的,负载均衡的装置在确定客户端根据路由信息建立与目标服务器的数据通信后,更新本地的端口进程信息和TCP连接信息。例如,假设客户端通过Socket 4与目标服务器的Region 3建立数据通信,则负载均衡的装置在本地的TCP连接信息中增加Socket 4,在端口进程中增加Region 3。需要指出的是,通过更新本地的端口进程信息和TCP信息,当客户端发出下一个数据通信请求后,负载均衡的装置只需获取多个服务器的部分工作状态信息,增高了负载均衡的装置的工作效率。
由上可见,本发明实施例中的负载均衡的装置在接收到客户端发出的数据通信请求后,获取包括负载信息、TCP连接信息和端口进程信息的多个服务器的工作状态信息,进而通过比较多个服务器的负载信息选取目标服务器,通过查询目标服务器的TCP连接信息选取客户端与所述目标服务器间的空闲的目标TCP连接,通过查询目标服务器的端口进程信息选取目标服务器的空闲的目标端口进程,再生成从客户端经目标TCP连接到目标服务器的目标端口进程的路由信息,并将路由信息发送给客户端以使客户端根据路由信息建立与目标服务器的数据通信,可以实现均衡客户端与多个服务器间数据通信的负载,本发明由于随时都可以执行客户端发出的数据通信请求,故具有请求灵活的特点,由于TCP连接为TCP长连接,故具有可靠性高的特点,由于可应用于X86平台,故具有成本低的特点。
图4是本发明实施例中一种负载均衡的装置的结构示意图。如图所示本发明实施例中的负载均衡的装置至少可以包括状态信息获取模块410、服务器选取模块420、路由信息生成模块430以及路由信息发送模块440。
状态信息获取模块410,用于在接收到客户端发出的数据通信请求后,获取多个服务器的工作状态信息,所述工作状态信息包括负载信息。
所述数据通信请求是客户端在需要与服务器建立数据通信时发出的请求。例如:用户向客户端提交一份交易订单,客户端需要将这份交易订单的数据信息传送给位于后台的服务器,即与服务器建立数据通信,此时客户端便会向本发明装置发出数据通信请求。
具体的,状态信息获取模块410在接收到客户端发出的数据通信请求后,获取位于后台的多个服务器的工作状态信息。需要指出的是,所述工作状态信息至少包括服务器的负载信息。
可选的,所述负载信息包括服务器的CPU负载值、服务器的响应时间和服务器已建立的TCP连接数。其中,CPU负载值表示CPU当前的使用率,如5%;响应时间表示当前响应数据通信所需的时间,如1ms;已建立的TCP连接数表示与客户端间所建立的TCP连接的个数。
服务器选取模块420,用于通过比较所述多个服务器的所述负载信息,选取目标服务器。具体实现中,所述服务器选取模块420可以如图5所示进一步包括参考值计算单元421和服务器选取单元422。
参考值计算单元421,用于根据预设的算法计算出各个所述服务器的所述负载信息的参考值,所述负载信息包括CPU负载值、响应时间和已建立的TCP连接数。
具体的,参考值计算单元421可根据公式Wt=S×(kLoad×j1+kRe×j2+kTCP×j3)计算出各个服务器的负载信息的参考值。其中,Wt表示负载信息的参考值,S表示服务器的在线状态,S=1表示服务器在线,S=+∞表示服务器离线,kLoad表示服务器的CPU负载值,j1表示预设的CPU负载值对应的权重值,kRe表示服务器的响应时间,j2表示预设的响应时间对应的权重值,kTCP表示服务器的已建立的TCP连接数,j3表示预设的已建立的TCP连接数对应的权重值。需要指出的是,j1、j2和j3可根据经验预先设定,例如CPU的负载值kLoad的大小最能明显反映服务器的负载信息的参考值,故j1设为100,而响应时间kRe和已建立的TCP连接数kTCP反映较小,故j2和j3可分别设为2和1。
作为一个可选的示例,假设各权重值分别为j1=100,j2=2,j3=1,又假设服务器1、服务器2和服务器3的负载信息如表1所示。
表1
在线状态 | CPU负载值 | 响应时间 | 已建立的TCP连接数 | |
服务器1 | 1 | 10% | 1ms | 1 |
服务器2 | 1 | 5% | 1ms | 2 |
服务器3 | 1 | 7% | 2ms | 2 |
设Wt1、Wt2和Wt3分别表示服务器1、服务器2和服务器3的负载信息的参考值,那么可计算得:Wt1=1×(10%×100+1×2+1×1)=13;Wt2=1×(5%×100+1×2+2×1)=9;Wt3=1×(7%×100+2×2+2×1)=13。
可见Wt1=Wt3>Wt2,Wt2最小。另外,若某服务器处于离线状态,S=+∞,则Wt=+∞,在存在其它服务器处于非离线状态时,该服务器的负载信息的参考值显然不会最小。
服务器选取单元422,用于获取在所述多个服务器中所述负载信息的参考值最小的服务器作为所述目标服务器。
具体的,服务器选取单元422将多个服务器中负载信息的参考值最小的服务器作为目标服务器。根据上述预设算法不难得知,负载信息的参考值越小,服务器的工作量越小,越相对空闲,若以相对空闲的服务器作为客户端与之建立数据通信的目标服务器,将解决客户端与服务器间数据通信负载不均衡的问题,提高数据交互性能。
路由信息生成模块430,用于生成从所述客户端通过中间件到所述目标服务器的路由信息。具体实现中,所述路由信息生成模块430可以如图6所示进一步包括TCP连接选取单元431、端口进程选取单元432以及路由信息生成单元433。
端口进程选取单元431,用于通过查询所述目标服务器的端口进程信息,选取所述目标服务器的空闲的目标端口进程。
其中,服务器需通过创建的端口进程来与客户端进行数据通信,而每个服务器可创建多个端口进程,例如,请参阅图10,服务器1就创建有2个端口进程。所述服务器的端口进程也称为Region,各个Region用Region ID来区别,例如Region 1、Region 2等。
可选的,服务器的工作状态信息还包括端口进程信息,端口进程信息包括服务器已创建的端口进程和各个端口进程当前的TPS(Transaction Per Second,每秒钟处理完成的数据量),当某端口进程的TPS低于预设的阈值,则可认为该端口进程处于空闲状态。具体的,端口进程选取单元431通过查询目标服务器的端口进程信息,选取目标服务器的空闲的目标端口进程。
作为一个可选的示例,端口进程选取单元431查询目标服务器的端口进程信息可知,目标服务器创建了Region 1、Region 2和Region 3三个端口进程,对应的TPS分别为30、20和3,假设预设的阈值是5,则可认为Region 3处于空闲状态,本发明装置获取Region 3作为目标端口进程。另外,若端口进程选取单元431查询得知目标服务器存在多个空闲的端口进程,则任选其一作为目标端口进程或选取TPS最小的空闲端口进程作为目标端口进程。
路由信息生成单元432,用于生成从所述客户端通过中间件到所述目标服务器的所述目标端口进程的路由信息。
作为一个可选的示例,假设目标服务器的目标端口进程是Region 3,则生成的路由信息如表2所示。
表2
可选的,请参阅图6,如图所示路由信息生成模块430还可以包括TCP连接选取单元433,用于通过查询所述目标服务器的TCP连接信息,选取所述客户端与所述目标服务器间的空闲的目标TCP连接。具体实现中,所述TCP连接选取单元433可以如图7所示进一步包括空闲连接判断子单元433a和TCP连接获取子单元433b。
空闲连接判断子单元433a,用于通过查询所述目标服务器的TCP连接信息,判断所述客户端与所述目标服务器间是否存在至少一个空闲的TCP连接。
其中,客户端与目标服务器间可能存在多个TCP连接,例如,请参阅图10,客户端与各个服务器间分别存在两个TCP连接。所述TCP连接也称为Socket,各个Socket用Socket ID来区别,例如Socket 1、Socket 2等。需要指出的是,在本发明实施例中,所述TCP连接可以是TCP长连接,TCP长连接降低了TCP短连接带来的数据传输延迟和减少了反复重新连接的消耗,并且增强了数据通信的可靠性。
可选的,服务器的工作状态信息还包括TCP连接信息,所述TCP连接信息包括客户端与服务器间存在的TCP连接。具体的,空闲连接判断子单元433a通过查询目标服务器的工作状态信息中的TCP连接信息,判断客户端与目标服务器间是否存在至少一个空闲的TCP连接。
具体实现过程中,空闲连接判断子单元433a可通过以下方法来判断TCP连接信息中的TCP连接是否处于空闲:询问客户端是否正在通过目标服务器的TCP连接信息中的所有的TCP连接向目标服务器传送数据,若否,则判定客户端与目标服务器间存在至少一个空闲的TCP连接,若是,则判定客户端与目标服务器间不存在空闲的TCP连接。
作为一个可选的示例:空闲连接判断子单元433a查询目标服务器的TCP连接信息可知,客户端与目标服务器间存在Socket 1、Socket 2和Socket 3三个TCP连接,假设询问客户后发现客户端正在通过Socket 1、Socket 2和Socket 3向目标服务器的Region 3传送数据,则可认为Socket 1、Socket 2和Socket 3均不处于空闲状态。
TCP连接获取子单元433b,用于若存在至少一个空闲的TCP连接,则获取任意一个所述空闲的TCP连接作为所述目标TCP连接;若不存在空闲的TCP连接,则新建一个TCP连接作为所述目标TCP连接。
相应的,所述路由信息生成单元432,具体用于生成从所述客户端通过中间件经所述目标TCP连接到所述目标服务器的所述目标端口进程的路由信息。
作为一个可选的示例,假设目标服务器的目标TCP连接是Socket 4,假设目标服务器的目标端口进程是Region 3,则生成的路由信息如表3所示。
表3
路由信息发送模块440,用于将所述路由信息发送给所述客户端,所述路由信息用于建立所述客户端通过所述中间件到所述目标服务器的数据通信。
由上可见,本发明实施例中的状态信息获取模块410在接收到客户端发出的数据通信请求后,获取包括负载信息、TCP连接信息和端口进程信息的多个服务器的工作状态信息,进而服务器选取模块420通过比较多个服务器的负载信息选取目标服务器,路由信息生成模块430通过查询目标服务器的TCP连接信息选取客户端与所述目标服务器间的空闲的目标TCP连接,路由信息生成模块430通过查询目标服务器的端口进程信息选取目标服务器的空闲的目标端口进程,再生成从客户端经目标TCP连接到目标服务器的目标端口进程的路由信息,路由信息发送模块440将路由信息发送给客户端以使客户端根据路由信息建立与目标服务器的数据通信,可以实现均衡客户端与多个服务器间数据通信的负载,本发明由于随时都可以执行客户端发出的数据通信请求,故具有请求灵活的特点,由于TCP连接为TCP长连接,故具有可靠性高的特点,由于可应用于X86平台,故具有成本低的特点。
图8是本发明实施例提供的一种数据通信系统的结构示意图。如图所示本发明实施例的负载均衡的数据通信系统至少包括客户端51、多个服务器52以及负载均衡的装置53。
所述客户端51在需要与所述服务器52建立数据通信时,向所述负载均衡的装置53发出数据通信请求。
所述负载均衡的装置53在接收到客户端51发出的数据通信请求后,向所述多个服务器52索要各个服务器52的工作状态信息。
所述多个服务器52向所述负载均衡的装置53上传所述工作状态信息,所述工作状态信息包括负载信息。
所述负载均衡的装置53获取所述多个服务器52上传的工作状态信息;通过比较所述多个服务器52的所述负载信息,选取负载满足条件的服务器作为目标服务器;生成从所述客户端通过所述中间件到所述目标服务器的路由信息;将所述路由信息发送给所述客户端51。
所述客户端51根据所述路由信息建立通过所述中间件到所述目标服务器的数据通信。
图9是本发明另一实施例中的另一种负载均衡的装置的结构示意图的结构示意图,如图9所示,该负载均衡的装置可以包括:至少一个处理器601,例如CPU,至少一个网络接口603,存储器604,至少一个通信总线602。其中,通信总线602用于实现这些组件之间的连接通信。其中,本发明实施例中的网络接口603可以为无线接口或有线接口,例如WiFi装置或网线端口,用于与客户端和服务器进行数据通信。存储器604可以是高速RAM存储器,也可以是非易失的存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器604还可以是至少一个位于远离前述处理器601的存储装置。存储器604中存储一组程序代码,且处理器601用于调用存储器中存储的程序代码,用于执行以下操作:在接收到所述客户端发出的数据通信请求后,获取所述多个服务器的工作状态信息,所述工作状态信息包括负载信息;通过比较所述多个服务器的所述负载信息,选取负载满足条件的服务器作为目标服务器;生成从所述客户端通过所述中间件到所述目标服务器的路由信息;将所述路由信息发送给所述客户端,所述路由信息用于建立所述客户端通过所述中间件到所述目标服务器的数据通信。
可选的,所述服务器的工作状态信息还包括端口进程信息,因而处理器601生成从所述客户端通过所述中间件到所述目标服务器的路由信息的具体操作为:通过查询所述目标服务器的端口进程信息,选取所述目标服务器的空闲的目标端口进程;生成从所述客户端通过所述中间件到所述目标服务器的所述目标端口进程的路由信息。
进一步可选的,所述服务器的工作状态信息还包括TCP连接信息,因而处理器601通过查询所述目标服务器的端口进程信息,选取所述目标服务器的空闲的目标端口进程之前,还将执行:通过查询所述目标服务器的TCP连接信息,选取所述客户端与所述目标服务器间的空闲的目标TCP连接。
相应的,处理器601将生成从所述客户端通过所述中间件经所述目标TCP连接到所述目标服务器的所述目标端口进程的路由信息。
可选的,处理器601通过比较所述多个服务器的所述负载信息,选取负载满足条件的服务器作为目标服务器的具体操作还可以为:根据预设的算法计算出各个所述服务器的所述负载信息的参考值,所述负载信息包括CPU负载值、响应时间和已建立的TCP连接数;获取在所述多个服务器中所述负载信息的参考值最小的服务器作为所述目标服务器。
进一步可选的,处理器601根据预设的算法计算出各个所述服务器的负载信息的参考值的具体操作为:根据公式Wt=S×(kLoad×j1+kRe×j2+kTCP×j3)计算出各个所述服务器的负载信息的参考值,其中,所述Wt表示所述负载信息的参考值,所述S表示服务器的在线状态,所述S=1表示服务器在线,所述S=+∞表示服务器离线,所述kLoad表示服务器的所述CPU负载值,所述j1表示预设的所述CPU负载值对应的权重值,kRe表示服务器的所述响应时间,所述j2表示预设的所述响应时间对应的权重值,所述kTCP表示服务器的所述已建立的TCP连接数,所述j3表示预设的所述已建立的TCP连接数对应的权重值。
又可选的,处理器601通过查询所述目标服务器的TCP连接信息,选取客户端与所述目标服务器间的空闲的目标TCP连接的具体操作可以为:通过查询所述目标服务器的TCP连接信息,判断所述客户端与所述目标服务器间是否存在至少一个空闲的TCP连接;若存在至少一个空闲的TCP连接,则获取任意一个所述空闲的TCP连接作为所述目标TCP连接;若不存在空闲的TCP连接,则新建一个TCP连接作为所述目标TCP连接。
进一步可选的,处理器601通过查询所述目标服务器的TCP连接信息,判断所述客户端与所述目标服务器间是否存在至少一个空闲的TCP连接的具体操作为:询问所述客户端是否正在通过所述TCP连接信息中的所有的TCP连接向所述目标服务器传送数据,若否,则判定所述客户端与所述目标服务器间存在至少一个空闲的TCP连接,若是,则判定所述客户端与所述目标服务器间不存在空闲的TCP连接。
又可选的,处理器601将所述路由信息发送给所述客户端之后,还可以执行:在确定所述客户端根据所述路由信息建立与所述目标服务器的数据通信后,更新本地的所述端口进程信息和所述TCP连接信息。
本发明实施例还提出了一种计算机存储介质,所述计算机存储介质存储有程序,所述程序执行时包括本发明实施例结合图1~图3所描述的一种路由方法中的部分或全部的步骤。
本发明实施例中的负载均衡的装置在接收到客户端发出的数据通信请求后,获取包括负载信息、TCP连接信息和端口进程信息的多个服务器的工作状态信息,进而通过比较多个服务器的负载信息选取目标服务器,通过查询目标服务器的TCP连接信息选取客户端与所述目标服务器间的空闲的目标TCP连接,通过查询目标服务器的端口进程信息选取目标服务器的空闲的目标端口进程,再生成从客户端经目标TCP连接到目标服务器的目标端口进程的路由信息,并将路由信息发送给客户端以使客户端根据路由信息建立与目标服务器的数据通信,可以实现均衡客户端与多个服务器间数据通信的负载,本发明由于随时都可以执行客户端发出的数据通信请求,故具有请求灵活的特点,由于TCP连接为TCP长连接,故具有可靠性高的特点,由于可应用于X86平台,故具有成本低的特点。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
Claims (15)
1.一种路由方法,其特征在于,所述路由方法应用于负载均衡的装置,所述负载均衡的装置分别与客户端和多个服务器相连,所述客户端通过中间件与所述多个服务器相连,所述路由方法包括:
在接收到所述客户端发出的数据通信请求后,获取所述多个服务器的工作状态信息,所述工作状态信息包括负载信息;
通过比较所述多个服务器的所述负载信息,选取负载满足条件的服务器作为目标服务器;
生成从所述客户端通过所述中间件到所述目标服务器的路由信息,其中,所述中间件是介于客户端和服务器间的分布式设备,用于实现客户端中的应用程序和服务器中的数据库间的数据通信;
将所述路由信息发送给所述客户端,所述路由信息用于建立所述客户端通过所述中间件到所述目标服务器的数据通信。
2.如权利要求1所述的方法,其特征在于,所述服务器的工作状态信息还包括端口进程信息;
所述生成从所述客户端通过所述中间件到所述目标服务器的路由信息,包括:
通过查询所述目标服务器的端口进程信息,选取所述目标服务器的空闲的目标端口进程;
生成从所述客户端通过所述中间件到所述目标服务器的所述目标端口进程的路由信息。
3.如权利要求2所述的方法,其特征在于,所述服务器的工作状态信息还包括TCP连接信息;
所述通过查询所述目标服务器的端口进程信息,选取所述目标服务器的空闲的目标端口进程之前,还包括:
通过查询所述目标服务器的TCP连接信息,选取所述客户端与所述目标服务器间的空闲的目标TCP连接;
所述生成从所述客户端通过所述中间件到所述目标服务器的所述目标端口进程的路由信息,包括:
生成从所述客户端通过所述中间件经所述目标TCP连接到所述目标服务器的所述目标端口进程的路由信息。
4.如权利要求1所述的方法,其特征在于,所述通过比较所述多个服务器的所述负载信息,选取负载满足条件的服务器作为目标服务器,包括:
根据预设的算法计算出各个所述服务器的所述负载信息的参考值,所述负载信息包括CPU负载值、响应时间和已建立的TCP连接数;
获取在所述多个服务器中所述负载信息的参考值最小的服务器作为所述目标服务器。
5.如权利要求4所述的方法,其特征在于,所述根据预设的算法计算出各个所述服务器的负载信息的参考值,包括:
根据公式Wt=S×(kLoad×j1+kRe×j2+kTCP×j3)计算出各个所述服务器的负载信息的参考值,
其中,所述Wt表示所述负载信息的参考值,所述S表示服务器的在线状态,所述S=1表示服务器在线,所述S=+∞表示服务器离线,所述kLoad表示服务器的所述CPU负载值,所述j1表示预设的所述CPU负载值对应的权重值,kRe表示服务器的所述响应时间,所述j2表示预设的所述响应时间对应的权重值,所述kTCP表示服务器的所述已建立的TCP连接数,所述j3表示预设的所述已建立的TCP连接数对应的权重值。
6.如权利要求3所述的方法,其特征在于,所述通过查询所述目标服务器的TCP连接信息,选取客户端与所述目标服务器间的空闲的目标TCP连接,包括:
通过查询所述目标服务器的TCP连接信息,判断所述客户端与所述目标服务器间是否存在至少一个空闲的TCP连接;
若存在至少一个空闲的TCP连接,则获取任意一个所述空闲的TCP连接作为所述目标TCP连接;
若不存在空闲的TCP连接,则新建一个TCP连接作为所述目标TCP连接。
7.如权利要求3-6任一项所述的方法,其特征在于,所述TCP连接是TCP长连接。
8.一种负载均衡的装置,其特征在于,所述装置分别与客户端和多个服务器相连,所述客户端通过中间件与所述多个服务器相连,所述装置包括:
状态信息获取模块,用于在接收到所述客户端发出的数据通信请求后,获取所述多个服务器的工作状态信息,所述工作状态信息包括负载信息;
服务器选取模块,用于通过比较所述多个服务器的所述负载信息,选取负载满足条件的服务器作为目标服务器;
路由信息生成模块,用于生成从所述客户端通过所述中间件到所述目标服务器的路由信息,其中,所述中间件是介于客户端和服务器间的分布式设备,用于实现客户端中的应用程序和服务器中的数据库间的数据通信;
路由信息发送模块,用于将所述路由信息发送给所述客户端,所述路由信息用于建立所述客户端通过所述中间件到所述目标服务器的数据通信。
9.如权利要求8所述的装置,其特征在于,所述服务器的工作状态信息还包括端口进程信息;
所述路由信息生成模块,包括:
端口进程选取单元,用于通过查询所述目标服务器的端口进程信息,选取所述目标服务器的空闲的目标端口进程;
路由信息生成单元,用于生成从所述客户端通过所述中间件到所述目标服务器的所述目标端口进程的路由信息。
10.如权利要求9所述的装置,其特征在于,所述服务器的工作状态信息还包括TCP连接信息;
所述路由信息生成模块,还包括:
TCP连接选取单元,用于通过查询所述目标服务器的TCP连接信息,选取所述客户端与所述目标服务器间的空闲的目标TCP连接;
所述路由信息生成单元,具体用于生成从所述客户端通过所述中间件经所述目标TCP连接到所述目标服务器的所述目标端口进程的路由信息。
11.如权利要求8所述的装置,其特征在于,所述服务器选取模块包括:
参考值计算单元,用于根据预设的算法计算出各个所述服务器的所述负载信息的参考值,所述负载信息包括CPU负载值、响应时间和已建立的TCP连接数;
服务器选取单元,用于获取在所述多个服务器中所述负载信息的参考值最小的服务器作为所述目标服务器。
12.如权利要求11所述的装置,其特征在于,所述参考值计算单元,具体用于根据公式Wt=S×(kLoad×j1+kRe×j2+kTCP×j3)计算出各个所述服务器的负载信息的参考值,
其中,所述Wt表示所述负载信息的参考值,所述S表示服务器的在线状态,所述S=1表示服务器在线,所述S=+∞表示服务器离线,所述kLoad表示服务器的所述CPU负载值,所述j1表示预设的所述CPU负载值对应的权重值,kRe表示服务器的所述响应时间,所述j2表示预设的所述响应时间对应的权重值,所述kTCP表示服务器的所述已建立的TCP连接数,所述j3表示预设的所述已建立的TCP连接数对应的权重值。
13.如权利要求10所述的装置,其特征在于,所述TCP连接选取单元包括:
空闲连接判断子单元,用于通过查询所述目标服务器的TCP连接信息,判断所述客户端与所述目标服务器间是否存在至少一个空闲的TCP连接;
TCP连接获取子单元,用于若存在至少一个空闲的TCP连接,则获取任意一个所述空闲的TCP连接作为所述目标TCP连接;若不存在空闲的TCP连接,则新建一个TCP连接作为所述目标TCP连接。
14.如权利要求10-13任一项所述的装置,其特征在于,所述TCP连接是TCP长连接。
15.一种数据通信系统,其特征在于,所述数据通信系统包括客户端、多个服务器以及如权利要求8-14任一项所述的负载均衡的装置,所述负载均衡的装置分别与所述客户端和所述多个服务器相连,所述客户端通过中间件与所述多个服务器相连,其中:
所述客户端在需要与所述服务器建立数据通信时,向所述负载均衡的装置发出数据通信请求;
所述负载均衡的装置在接收到客户端发出的数据通信请求后,向所述多个服务器索要各个服务器的工作状态信息;
所述多个服务器向所述负载均衡的装置上传所述工作状态信息,所述工作状态信息包括负载信息;
所述负载均衡的装置获取所述多个服务器上传的工作状态信息;通过比较所述多个服务器的所述负载信息,选取负载满足条件的服务器作为目标服务器;生成从所述客户端通过所述中间件到所述目标服务器的路由信息;将所述路由信息发送给所述客户端;
所述客户端根据所述路由信息建立通过所述中间件到所述目标服务器的数据通信,所述中间件是介于客户端和服务器间的分布式设备,用于实现客户端中的应用程序和服务器中的数据库间的数据通信。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410466148.4A CN105471760B (zh) | 2014-09-12 | 2014-09-12 | 一种路由方法、负载均衡的装置及数据通信系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410466148.4A CN105471760B (zh) | 2014-09-12 | 2014-09-12 | 一种路由方法、负载均衡的装置及数据通信系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105471760A CN105471760A (zh) | 2016-04-06 |
CN105471760B true CN105471760B (zh) | 2019-04-05 |
Family
ID=55609051
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410466148.4A Active CN105471760B (zh) | 2014-09-12 | 2014-09-12 | 一种路由方法、负载均衡的装置及数据通信系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105471760B (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105933429A (zh) * | 2016-05-30 | 2016-09-07 | 新奥特(北京)视频技术有限公司 | 一种服务器负载控制方法和装置 |
CN108023921A (zh) * | 2016-11-03 | 2018-05-11 | 平安科技(深圳)有限公司 | 一种第三方平台的接入方法和装置 |
CN106789732B (zh) * | 2016-11-21 | 2019-08-06 | 华胜信泰信息产业发展有限公司 | 基于消息队列的路由建立方法及系统 |
CN107682398B (zh) * | 2017-08-28 | 2019-06-21 | 平安科技(深圳)有限公司 | 数据发送对象的选择方法、装置、计算机设备及存储介质 |
CN108600354B (zh) * | 2018-04-13 | 2020-01-07 | 中国民航信息网络股份有限公司 | 系统响应时间波动抑制方法和系统 |
CN109145053B (zh) * | 2018-08-01 | 2021-03-23 | 创新先进技术有限公司 | 数据处理方法和装置、客户端、服务器 |
CN109104377B (zh) * | 2018-09-21 | 2022-07-15 | 深圳前海微众银行股份有限公司 | 长连接负载均衡方法、设备、系统及计算机可读存储介质 |
CN109815204B (zh) * | 2018-12-10 | 2021-03-02 | 清华大学 | 一种基于拥塞感知的元数据请求分发方法及设备 |
CN110535959B (zh) * | 2019-08-30 | 2023-02-24 | 北京云中融信网络科技有限公司 | 一种传输数据的方法、装置和计算机可读存储介质 |
CN111176843A (zh) * | 2019-12-23 | 2020-05-19 | 中国平安财产保险股份有限公司 | 基于多维度的负载均衡方法、装置及相关设备 |
CN114079670B (zh) * | 2020-07-30 | 2023-07-11 | 华为技术有限公司 | 传输路由信息的方法、装置和通信系统 |
CN113259428A (zh) * | 2021-05-11 | 2021-08-13 | 鸬鹚科技(深圳)有限公司 | 数据访问请求的处理方法、装置、计算机设备及介质 |
CN113242301B (zh) * | 2021-05-11 | 2024-03-26 | 鸬鹚科技(深圳)有限公司 | 真实服务器的选定方法、装置、计算机设备及存储介质 |
CN113810304A (zh) * | 2021-09-30 | 2021-12-17 | 深圳前海微众银行股份有限公司 | 一种负载均衡方法、装置、设备和计算机存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101207550A (zh) * | 2007-03-16 | 2008-06-25 | 中国科学技术大学 | 负载均衡系统及多种业务实现负载均衡的方法 |
CN102088457A (zh) * | 2010-12-17 | 2011-06-08 | 天津曙光计算机产业有限公司 | 一种基于保证连接均衡性的报文分流方法 |
CN103067293A (zh) * | 2012-12-31 | 2013-04-24 | 北京京东世纪贸易有限公司 | 负载均衡设备的连接管理和复用的方法和系统 |
CN103457956A (zh) * | 2013-09-17 | 2013-12-18 | 网宿科技股份有限公司 | 基于多条tcp连接的http流媒体直播方法和系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4324975B2 (ja) * | 2006-09-27 | 2009-09-02 | 日本電気株式会社 | 負荷低減システム、計算機、及び負荷低減方法 |
CN101217558A (zh) * | 2007-12-26 | 2008-07-09 | 中国移动通信集团湖北有限公司 | 一种业务中间件服务负载均衡方法 |
-
2014
- 2014-09-12 CN CN201410466148.4A patent/CN105471760B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101207550A (zh) * | 2007-03-16 | 2008-06-25 | 中国科学技术大学 | 负载均衡系统及多种业务实现负载均衡的方法 |
CN102088457A (zh) * | 2010-12-17 | 2011-06-08 | 天津曙光计算机产业有限公司 | 一种基于保证连接均衡性的报文分流方法 |
CN103067293A (zh) * | 2012-12-31 | 2013-04-24 | 北京京东世纪贸易有限公司 | 负载均衡设备的连接管理和复用的方法和系统 |
CN103457956A (zh) * | 2013-09-17 | 2013-12-18 | 网宿科技股份有限公司 | 基于多条tcp连接的http流媒体直播方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN105471760A (zh) | 2016-04-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105471760B (zh) | 一种路由方法、负载均衡的装置及数据通信系统 | |
CN105939335B (zh) | 发布-订阅数据处理环境中管理通道所有权的方法和系统 | |
CN103270492B (zh) | 用于网络使能应用的硬件加速图形的方法和系统 | |
CN104753817B (zh) | 一种云计算消息队列服务本地模拟方法和系统 | |
EP3375141A1 (en) | Systems and methods for distributed network-aware service placement | |
CN103916311B (zh) | 一种信息传输控制方法,装置及系统 | |
US20140280805A1 (en) | Two-Sided Declarative Configuration for Cloud Deployment | |
Liu et al. | Task scheduling in fog enabled Internet of Things for smart cities | |
CN103973741A (zh) | 用于在云系统中进行远程调试的方法和装置 | |
Qu et al. | ChainFL: A simulation platform for joint federated learning and blockchain in edge/cloud computing environments | |
US7548843B2 (en) | Simulation of distributed networks | |
US20110060821A1 (en) | System and method for determining affinity groups and co-locating the affinity groups in a distributing network | |
CN104461716B (zh) | 一种多核异构系统的访问方法及多核异构系统 | |
CN105939240B (zh) | 负载均衡方法及装置 | |
CN109933405A (zh) | 虚拟机创建方法及装置、电子设备、存储介质 | |
CN113014611B (zh) | 一种负载均衡方法及相关设备 | |
CN110058937B (zh) | 用于调度专用处理资源的方法、设备和介质 | |
CN110289999A (zh) | 一种数据处理方法、系统及装置 | |
CN108563697A (zh) | 一种数据处理方法、装置和存储介质 | |
JP2023545985A (ja) | エッジ・コンピューティング環境におけるタスク・フローの管理 | |
JP5479710B2 (ja) | データを処理するためのプロセッサ‐サーバ・ハイブリッド・システムおよび方法 | |
CN111431730B (zh) | 一种业务处理方法、系统、计算机设备及可读介质 | |
CN106874371A (zh) | 一种数据处理方法及装置 | |
CN107508787A (zh) | 一种任务执行方法、装置及系统 | |
CN107493254A (zh) | Tcp报文转发的方法、装置和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |