一种网络服务器池系统及其构建网络服务器池的池化器的制造方法

文档序号:7999051阅读:261来源:国知局
一种网络服务器池系统及其构建网络服务器池的池化器的制造方法
【专利摘要】本发明一种网络服务器池系统及其构建网络服务器池的池化器,其包括所述服务器池系统包括:服务器池、池化器、客户端和数据传输结构,所述池化器是服务器池的管理设备,负责将多台服务器组成一个虚拟的服务器池,并对各台服务器的运行状态进行实时监控和采集;同时提供池名解析功能,以便能让用户方便地访问服务器。与现有技术相比,本发明结构简单、处理效率高,并且最大限度地提高服务器资源的使用率,并消除因为服务器故障而带来的不利影响。
【专利说明】一种网络服务器池系统及其构建网络服务器池的池化器

【技术领域】
[0001] 本发明是关于计算机网络服务器领域,特别是关于一种网络服务器池系统及其构 建网络服务器池的池化器。

【背景技术】
[0002] 在典型的服务器-客户机模式下,服务器是由DNS域名确定其位置的,客户端应用 系统在访问服务器之前必须通过使用DNS服务对其域名进行解析,从而得到该服务器的IP 地址。在客户机和服务器建立连接后,就可以进行信息交换;假如这一服务器发生故障,客 户机应用系统有两种可能的选择:1.中断通信;2.选择另一个服务器继续。在这种模式下, 客户端应用系统必须通过以下方式检测出服务器是否中断:
[0003] (1)服务器没有响应(time out);
[0004] (2)服务器回应错误信息;
[0005] (3)收到传输层错误信息;
[0006] 为了让客户应用程序能够在检测出服务器发生故障后,有选择其它服务器的可 能,必须在其应用程序中明确提供一个服务器列表,指明:第一服务器、第二服务器、第 三......等。当第一个服务器中断,则尝试和第二个服务器建立连接,再则第三,依此类 推。
[0007] 再者,在拥有大量的并发访问的应用系统中,单台服务器的处理能力已经无法承 担,为了提高服务器的处理量,通常采用一组提供相同服务的服务器构成一个服务器集群 来共同分担整体的用户访问量,而在这一组服务器的前端需要部署一台称之为负载均衡器 的设备,负载均衡器设备接受全部用户的访问请求,然后按照相应的均衡策略,将不同用户 的请求分别发布给不同的服务器,服务器处理后结果将返回给负载均衡器,然后负载均衡 器再将结果返回给用户,这样用户的访问量就被负载均衡器分配给多台服务器同时处理 了,从而大幅提高系统的处理能力。在这种负载均衡系统中,用户流量全部穿透负载均衡器 设备,由于通常负载均衡器采用专用硬件实现,其处理能力较强。但随着用户访问量激增, 性能再强的单一设备同样要面临自身的性能瓶颈所带来的问题。


【发明内容】

[0008] 本发明的目的在于提供一种结构简单、可消除负载均衡系统的流量瓶颈问题的网 络服务器池系统及其构建网络服务器池的池化器。
[0009] 为达成前述目的,本发明一种网络服务器池系统及其构建网络服务器池的池化 器,其中所述服务器池系统包括:
[0010] 服务器池:服务器池是由一组具有相同功能的,并被统一管理起来的服务器组成, 每个服务器池均使用唯一的池名作为标识;
[0011] 池化器:是服务器池的管理设备,负责将多台服务器组成一个虚拟的服务器池,并 对各台服务器的运行状态进行实时监控和采集;同时提供池名解析功能,以便能让用户方 便地访问服务器;
[0012] 客户端:访问服务器池的客户机;
[0013] 所述服务器池系统还包括数据传输结构,所述数据传输结构包括:数据链路层/ 物理层、网络层、传输层、套接字接口以及应用层程序;其长在应用层程序与套接字接口之 间设置有可靠套接字接口,其中所述可靠套接字接口包括构建服务器池登记、服务器故障 识别、服务器接管服务器选择、服务器故障恢复这些故障容错处理过程;
[0014] 所述池化器是服务器池的管理设备,负责将多台服务器组成一个虚拟的服务器 池,并对各台服务器的运行状态进行实时监控和采集;同时提供池名解析功能,以便能让用 户方便地访问服务器;包括:池化器的登记/注销功能模块:服务器在加入服务器池前需要 主动在池化器处进行登记,登记时需提供服务器的相关系统信息,包括:服务器IP地址、月艮 务端口号、服务协议、池名信息;池化器接收到服务器的登记请求后,要对该服务器信息进 行验证,如果验证通过,将该服务器登记在一个服务器列表,并归纳整理,服务器在退出服 务器池之前,需要在池化器处办理注销手续,池化器随即将该服务器信息从服务器列表中 删除;
[0015] 池化器的故障检测与管理功能模块:在服务器池系统内,池化器根据服务器的登 记信息负责对服务器进行周期性的健康状况检查,一旦发现服务器故障,池化器立刻将该 服务器从服务器池中删除掉,以保证服务器池中所有服务器都是有效的、可用的;
[0016] 池化器的信息采集功能模块:池化器周期性对池中所有服务器进行系统信息采 集,包括:CPU、内存、网络使用情况之类的系统相关信息的采集,并对该系统信息进行整理, 为服务器选择策略提供依据;
[0017] 池化器的服务器选择功能模块:根据池化器对各服务器池中服务器的监控、信息 采集等相关信息,按照服务器的选择策略,始终优先选择资源状况最优的服务器,为池名解 析提供依据,以保证在任何时候针对任何用户都能获得到实时最优的服务器资源;
[0018] 池化器的池名解析功能模块:客户端访问服务器池,先在池化器处做池名解析,池 化器根据客户端提交的解析请求,在自己的服务器列表中进行查询,通常每个池名都对应 着多个服务器,池化器安装实现确定好的选择策略,为该用户选择一个最佳的服务器IP,并 将该结果以解析回应消息的形式反馈给客户端;
[0019] 池化器信息同步功能模块:服务器在某台池化器进行登记或注销,该台池化器都 会实时将更新信息通知其他所有池化器;如果某台池化器发现服务器故障,会立刻在自己 所保存的服务器列表中将该服务器删除,同时通过服务器更新消息通知其他所有池化器该 服务器发生故障,其他池化器收到通知后,也立刻将该服务器从其保存的服务器列表中删 除掉;池化器采集到新的服务器系统信息,只要系统信息发生变化,都将实时通知其他池化 器以保证所有池化器信息的一致性。
[0020] 根据本发明的一个实施例,所述可靠套接字接口在客户/服务器模式下,根据传 输控制协议(TCP)使用该可靠套接字接口的工作流程如下:
[0021] 服务器端程序工作流程:
[0022] 创建服务器端通信套接字描述符;
[0023] 将创建的套接字描述符与服务器地址和端口绑定;
[0024] 使套接字描述符做好接收连接请求的准备;
[0025] 给套接字描述符定义池名;
[0026] 接收来自客户端的连接请求;
[0027] 建立好连接后,接收客户端发来的数据,或向客户端发送数据;
[0028] 如果接收到客户端发来的Cookie,说明是进行服务器故障恢复,将本服务器的实 时状态按照Cookie里的内容进行恢复;
[0029] 在服务器处理客户但请求,并与客户端进行交互的过程中,记录服务器实时运行 状态
[0030] 如果客户端关闭,关闭套接字描述符;
[0031] 客户端程序工作流程:
[0032] 创建客户端套接字描述符;
[0033] 进行池名解析,获得服务器IP ;
[0034] 发送连接服务器请求;
[0035] 连接建立后,向服务器发送数据,或从服务器接收数据;
[0036] 关闭连接。
[0037] 根据本发明的一个实施例,在客户/服务器模式下,根据用户数据报协议(UDP)使 用该可靠套接字接口的工作流程如下:
[0038] 服务器端程序工作流程:
[0039] 创建服务器端通信套接字描述符;
[0040] 将创建的套接字描述符与服务器地址和端口绑定;
[0041] 使服务器套接字描述符做好接收连接请求的准备;
[0042] 给套接字描述符定义池名;
[0043] 接收客户端发来的数据,或向客户端发送数据;
[0044] 在服务器处理客户但请求,并与客户端进行交互的过程中,记录服务器实时运行 状态到Cookie中;
[0045] 如果客户端关闭,关闭套接字描述符;
[0046] 客户端程序工作流程:
[0047] 创建客户端套接字描述符
[0048] 进行池名解析,而从获得服务器IP地址
[0049] 连接建立后,向服务器发送数据,或从服务器接收数据
[0050] 关闭连接。
[0051] 本发明的有益效果:本发明针对传统的服务器故障接管模式的不足,提出在服务 器池框架下实现全透明的故障接管模式,用户无需任何干预,只需要在服务器故障发生后 进行一个池名解析就可以获得新的接管服务器,并且可以很大程度上保证获得的接管服务 器是正常有效的,从而提高服务器故障容错处理的效率。
[0052] 池化器在服务器池系统中起到了极为关键的作用,池化器可以快速有效地建立任 意规模的逻辑上服务器池,并通过以上介绍的一系列机制保障了服务器池的正常运行:月艮 务器健康状况检测、服务器故障处理、服务器系统实时采集、根据服务器实时系统信息和服 务器运行状况为用户动态选择和分配最佳资源状况的服务器,保障服务器池的资源达到最 佳的使用状况,最大限度地提高服务器资源的使用率,并消除因为服务器故障而带来的不 利影响。

【专利附图】

【附图说明】
[0053] 图1为本发明的网络服务器池系统的结构示意图;
[0054] 图2为本发明的池化器的结构示意图;
[0055] 图3是本发明在C/S模式下,根据TCP协议,使用本发明的可靠套接字接口的工作 流程图;
[0056] 图4是本发明C/S模式下,根据UDP协议使用本发明的可靠套接字接口的工作流 程图。

【具体实施方式】
[0057] 此处所称的"一个实施例"或"实施例"是指可包含于本发明至少一个实现方式中 的特定特征、结构或特性。在本说明书中不同地方出现的"在一个实施例中"并非均指同一 个实施例,也不是单独的或选择性的与其他实施例互相排斥的实施例。
[0058] 请参阅图1所示,本发明的网络服务器池系统。如图2中所示,本发明的服务器池 系统包括:
[0059] 服务器池:服务器池是由一组具有相同功能的,并被统一管理起来的服务器组成, 每个服务器池均使用唯一的池名作为标识;
[0060] 池化器:是服务器池的管理设备,负责将多台服务器组成一个虚拟的服务器池,并 对各台服务器的运行状态进行实时监控和采集;同时提供池名解析功能,以便能让用户方 便地访问服务器;
[0061] 客户端:访问服务器池的客户机。
[0062] 本发明多台具有相同服务功能的服务器按照池名构成一个逻辑上的服务器池,月艮 务器池由池化器进行管理和监控,用户通过池名访问服务器池,首先在池化器处进行池名 解析,然后根据解析结果,直接访问具体的服务器,无需通过任何中转设备,从而消除了中 转设备可能造成的流量瓶颈。
[0063] 池化器在服务器池系统中充当资源管理者的角色,池化器的管理效率直接影响到 服务器池的整体运行效率。
[0064] 请参阅图2所示,其显示本发明的池化器的结构示意图。如图3所示,本发明的池 化器包括:池化器的登记/注销功能模块:服务器在加入服务器池前需要主动在池化器处 进行登记(registration),登记时需提供服务器的相关系统信息,包括:服务器IP地址、月艮 务端口号、服务协议、池名等信息;池化器接收到服务器的登记请求后,要对该服务器信息 进行验证,如果验证通过,将该服务器登记在一个服务器列表,并归纳整理。服务器在退出 服务器池之前,需要在池化器处办理注销手续(deregistration)。池化器随即将该服务器 信息从服务器列表中删除。
[0065] 池化器的故障检测与管理功能模块:在服务器池系统内,池化器根据服务器的登 记信息负责对服务器进行周期性的健康状况检查,一旦发现服务器故障,池化器立刻将该 服务器从服务器池中删除掉,池化器的这种机制可以保证服务器池中所有服务器都是有效 的、可用的。
[0066] 池化器的信息采集功能模块:池化器周期性对池中所有服务器进行系统信息采 集,包括:CPU、内存、网络使用情况等系统相关信息的采集,并对该系统信息进行整理,为服 务器选择策略提供依据。
[0067] 池化器的服务器选择功能模块:根据池化器对各服务器池中服务器的监控、信息 采集等相关信息,按照服务器的选择策略,始终优先选择资源状况最优的服务器,为池名解 析提供依据,这一功能,保证了在任何时候针对任何用户都能获得到实时最优的服务器资 源。
[0068] 池化器的池名解析功能模块:客户端访问服务器池,先在池化器处做池名解析,池 化器根据客户端提交的解析请求,在自己的服务器列表中进行查询,通常每个池名都对应 着多个服务器,池化器安装实现确定好的选择策略,为该用户选择一个最佳的服务器IP,并 将该结果以解析回应消息的形式反馈给客户端。
[0069] 池化器信息同步功能模块:服务器在某台池化器进行登记或注销,该台池化器都 会实时将更新信息通知其他所有池化器;如果某台池化器发现服务器故障,会立刻在自己 所保存的服务器列表中将该服务器删除,同时通过服务器更新消息(Se rver_Update)通知 其他所有池化器该服务器发生故障,其他池化器收到通知后,也立刻将该服务器从其保存 的服务器列表中删除掉;池化器采集到新的服务器系统信息,只要系统信息发生变化,都将 实时通知其他池化器。这样保证了所有池化器信息的一致性。
[0070] 请参阅图3,其为本发明在C/S模式下,根据TCP协议(Transmission Control Protocol,TCP),使用本发明的可靠套接字接口的工作流程图。其工作流程如下:服务器端 程序工作流程:
[0071] 使用r_socket ()创建服务器端通信套接字描述符;
[0072] 使用r_bind〇将创建的套接字描述符与服务器地址和端口绑定;
[0073] 使用:r_listen()使套接字描述符做好接收连接请求的准备;
[0074] 使用r_setpool ()给套接字描述符定义池名;
[0075] 使用r_accept()接收来自客户端的连接请求;
[0076] 建立好连接后,使用r_recv〇接收客户端发来的数据,或使用;r_send()向客户端 发送数据;
[0077] 如果接收到客户端发来的Cookie,说明是进行服务器故障恢复,使用r_ updateStateO将本服务器的实时状态按照Cookie里的内容进行恢复;
[0078] 在服务器处理客户但请求,并与客户端进行交互的过程中,使用r_Set C〇〇kie() 记录服务器实时运行状态
[0079] 如果客户端关闭,使用r_cl〇Se()关闭套接字描述符。
[0080] 客户端程序工作流程:
[0081] 使用r_socket()创建客户端套接字描述符;
[0082] 使用r_gethostbyname()进行池名解析,获得服务器IP ;
[0083] 使用r_connect ()发送连接服务器请求;
[0084] 连接建立后,使用r_send〇向服务器发送数据,或使用1*_1^(^()从服务器接收数 据;
[0085] 使用r_close ()关闭连接。
[0086] 请参阅图4,其为本发明C/S模式下,根据UDP协议(User Data Protocol,简称 UDP)使用本发明的可靠套接字接口的工作流程图。其工作流程如下:
[0087] 服务器端程序工作流程:
[0088] 使用r_socket ()创建服务器端通信套接字描述符;
[0089] 使用r_bind()将创建的套接字描述符与服务器地址和端口绑定;
[0090] 使用r-listen()使服务器套接字描述符做好接收连接请求的准备;
[0091] 使用r_setpool ()给套接字描述符定义池名;
[0092] 使用r_recvfrom()接收客户端发来的数据,或使用r_sendto()向客户端发送数 据;
[0093] 在服务器处理客户但请求,并与客户端进行交互的过程中,使用r_Set C〇〇kie() 记录服务器实时运行状态
[0094] 如果客户端关闭,使用r_cl〇Se()关闭套接字描述符。
[0095] 客户端程序工作流程:
[0096] 使用:r_socket()创建客户端套接字描述符
[0097] 使用r_gethostbyname ()进行池名解析,而从获得服务器IP地址
[0098] 连接建立后,使用r_sendto ()向服务器发送数据,或使用r_recvfrom ()从服务器 接收数据
[0099] 使用r_close ()关闭连接。
[0100] 在服务器端使用可靠套接字接口的流程上,正常情况下,在完成监听服务器地址 和端口后,需要调用r_Setp〇〇l()给该服务器定义池名,这一步十分重要,因为服务器池 里,每个池名都可以对应多个服务器IP,客户端只通过池名解析才能简单有效的获得服务 器地址;另外在服务器运行过程中,需要周期性的调用r_setC 〇〇kie (),将自身的实时运行 状态记录在cookie中,然后由可靠套接字层全透明地发送到客户端程序。
[0101] 客户端程序在使用可靠套接字接口基本上和使用标准套接字接口一样,服务器端 会通过可靠套接字层周期性发送Cookie到客户端,在客户端的可靠套接字层收到Cookie 后,会自动保存在可靠套接字层里,并不会将此Cookie传递给应用层,因此该cookie对应 用来说也是透明的。
[0102] 当服务器发生故障后,可靠套接字层将从标准套接字层获得错误消息,但并不把 该错误消息传递给应用层,而是立刻使用r_gethostbyname ()进行池名解析,从而获得新 的接管服务器,然后调用r_C〇nneCt ()连接接管服务器,连接成功后,首先把最后保存的 Cookie发送给新的接管服务器,接管服务器收到这个cookie,立刻使用该Cookie的内容对 自己的状态进行重置,由于Cookie保存的是故障服务器发生故障前的状态,因此接管服务 器就将自己恢复到故障服务器的中断前的状态,这样故障恢复过程就完成了,而且这一过 程是在可靠套接字层实现的,完全是透明于应用程序。
[0103] 本发明针对传统的服务器故障接管模式的不足,提出在服务器池框架下实现全透 明的故障接管模式,用户无需任何干预,只需要在服务器故障发生后进行一个池名解析就 可以获得新的接管服务器,并且可以很大程度上保证获得的接管服务器是正常有效的,从 而提高服务器故障容错处理的效率。
[0104] 池化器在服务器池系统中起到了极为关键的作用,池化器可以快速有效地建立任 意规模的逻辑上服务器池,并通过以上介绍的一系列机制保障了服务器池的正常运行:月艮 务器健康状况检测、服务器故障处理、服务器系统实时采集、根据服务器实时系统信息和服 务器运行状况为用户动态选择和分配最佳资源状况的服务器,保障服务器池的资源达到最 佳的使用状况,最大限度地提高服务器资源的使用率,并消除因为服务器故障而带来的不 利影响。
[0105] 上述说明已经充分揭露了本发明的【具体实施方式】。需要指出的是,熟悉该领域的 技术人员对本发明的【具体实施方式】所做的任何改动均不脱离本发明的权利要求书的范围。 相应地,本发明的权利要求的范围也并不仅仅局限于前述【具体实施方式】。
【权利要求】
1. 一种网络服务器池系统及其构建网络服务器池的池化器,其特征在于: 所述服务器池系统包括: 服务器池:服务器池是由一组具有相同功能的,并被统一管理起来的服务器组成,每个 服务器池均使用唯一的池名作为标识; 池化器:是服务器池的管理设备,负责将多台服务器组成一个虚拟的服务器池,并对各 台服务器的运行状态进行实时监控和采集;同时提供池名解析功能,以便能让用户方便地 访问服务器; 客户端:访问服务器池的客户机; 所述服务器池系统还包括数据传输结构,所述数据传输结构包括:数据链路层/物理 层、网络层、传输层、套接字接口以及应用层程序;其长在应用层程序与套接字接口之间设 置有可靠套接字接口,其中所述可靠套接字接口包括构建服务器池登记、服务器故障识别、 服务器接管服务器选择、服务器故障恢复这些故障容错处理过程; 所述池化器是服务器池的管理设备,负责将多台服务器组成一个虚拟的服务器池,并 对各台服务器的运行状态进行实时监控和采集;同时提供池名解析功能,以便能让用户方 便地访问服务器;包括:池化器的登记/注销功能模块:服务器在加入服务器池前需要主 动在池化器处进行登记,登记时需提供服务器的相关系统信息,包括:服务器IP地址、服务 端口号、服务协议、池名信息;池化器接收到服务器的登记请求后,要对该服务器信息进行 验证,如果验证通过,将该服务器登记在一个服务器列表,并归纳整理,服务器在退出服务 器池之前,需要在池化器处办理注销手续,池化器随即将该服务器信息从服务器列表中删 除; 池化器的故障检测与管理功能模块:在服务器池系统内,池化器根据服务器的登记信 息负责对服务器进行周期性的健康状况检查,一旦发现服务器故障,池化器立刻将该服务 器从服务器池中删除掉,以保证服务器池中所有服务器都是有效的、可用的; 池化器的信息采集功能模块:池化器周期性对池中所有服务器进行系统信息采集,包 括:CPU、内存、网络使用情况之类的系统相关信息的采集,并对该系统信息进行整理,为服 务器选择策略提供依据; 池化器的服务器选择功能模块:根据池化器对各服务器池中服务器的监控、信息采集 等相关信息,按照服务器的选择策略,始终优先选择资源状况最优的服务器,为池名解析提 供依据,以保证在任何时候针对任何用户都能获得到实时最优的服务器资源; 池化器的池名解析功能模块:客户端访问服务器池,先在池化器处做池名解析,池化器 根据客户端提交的解析请求,在自己的服务器列表中进行查询,通常每个池名都对应着多 个服务器,池化器安装实现确定好的选择策略,为该用户选择一个最佳的服务器IP,并将该 结果以解析回应消息的形式反馈给客户端; 池化器信息同步功能模块:服务器在某台池化器进行登记或注销,该台池化器都会实 时将更新信息通知其他所有池化器;如果某台池化器发现服务器故障,会立刻在自己所保 存的服务器列表中将该服务器删除,同时通过服务器更新消息通知其他所有池化器该服务 器发生故障,其他池化器收到通知后,也立刻将该服务器从其保存的服务器列表中删除掉; 池化器采集到新的服务器系统信息,只要系统信息发生变化,都将实时通知其他池化器以 保证所有池化器信息的一致性。
2. 根据权利要求1所述的网络服务器池系统及其构建网络服务器池的池化器,其特征 在于:所述可靠套接字接口在客户/服务器模式下,根据传输控制协议(TCP)使用该可靠套 接字接口的工作流程如下: 服务器端程序工作流程: 创建服务器端通信套接字描述符; 将创建的套接字描述符与服务器地址和端口绑定; 使套接字描述符做好接收连接请求的准备; 给套接字描述符定义池名; 接收来自客户端的连接请求; 建立好连接后,接收客户端发来的数据,或向客户端发送数据; 如果接收到客户端发来的Cookie,说明是进行服务器故障恢复,将本服务器的实时状 态按照Cookie里的内容进行恢复; 在服务器处理客户但请求,并与客户端进行交互的过程中,记录服务器实时运行状态 如果客户端关闭,关闭套接字描述符; 客户端程序工作流程: 创建客户端套接字描述符; 进行池名解析,获得服务器IP ; 发送连接服务器请求; 连接建立后,向服务器发送数据,或从服务器接收数据; 关闭连接。
3. 根据权利要求1所述的网络服务器池系统及其构建网络服务器池的池化器,其特征 在于:在客户/服务器模式下,根据用户数据报协议(UDP)使用该可靠套接字接口的工作流 程如下: 服务器端程序工作流程: 创建服务器端通信套接字描述符; 将创建的套接字描述符与服务器地址和端口绑定; 使服务器套接字描述符做好接收连接请求的准备; 给套接字描述符定义池名; 接收客户端发来的数据,或向客户端发送数据; 在服务器处理客户但请求,并与客户端进行交互的过程中,记录服务器实时运行状态 到 Cookie 中; 如果客户端关闭,关闭套接字描述符; 客户端程序工作流程: 创建客户端套接字描述符 进行池名解析,而从获得服务器IP地址 连接建立后,向服务器发送数据,或从服务器接收数据 关闭连接。
【文档编号】H04L12/24GK104144065SQ201310166823
【公开日】2014年11月12日 申请日期:2013年5月9日 优先权日:2013年5月9日
【发明者】张焰 申请人:张焰
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1