首页> 中国专利> 一种适用于集群网络服务的基于内容的通用调度系统

一种适用于集群网络服务的基于内容的通用调度系统

摘要

本发明为一种适用于集群网络服务的基于内容的通用调度系统。整个系统的核心分为两个部分:一是安装在前端机的基于内容的调度器CADS;二是安装在节点机的CANS模块。本系统的工作流程和方法中运用了伪服务器技术、捎带技术、截获和伪装三次握手技术、通用调度技术。本系统与现有的调度系统相比,具有支持更多的并发用户、提高内存缓存命中率的同时提高集群存储设备的利用率、通用性好、可扩展性好、系统吞吐率高等优点。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2008-09-10

    专利权的终止(未缴年费专利权终止)

    专利权的终止(未缴年费专利权终止)

  • 2004-05-26

    授权

    授权

  • 2003-04-16

    实质审查的生效

    实质审查的生效

  • 2003-01-22

    公开

    公开

  • 2002-10-30

    实质审查的生效

    实质审查的生效

说明书

技术领域

本发明属于集群网络服务器技术领域,为一种适用于集群网络服务的基于内容的通用调度系统。

背景技术

随着国际互联网迅猛发展,网络已经成了人们日常学习、工作不可或缺的一种有效的工具。不管是现有的门户网站还是建立在Web Service架构之上的企业电子交易平台,都离不开功能强大的Web服务器的支持。而web服务器集群以价格低、可靠性好、吞吐率高、系统资源丰富等优点越来越受到人们的青睐。因此,为了更好的发挥集群的丰富资源和可扩展性等优点,平衡请求分布的集群网络服务调度系统成为集群系统性能好坏的关键所在。

所谓集群网络服务调度系统,实际上是由多个物理服务器共同完成对用户的服务请求:当一个客户请求到达集群网络服务器后,由一个分派器把该请求定向到一台真实的物理服务器上,这样既提供了对单一系统映象的支持,又增强了系统的可扩展性。

在现有的集群网络服务调度系统中,分派器在向后端节点机转发报文时没有考虑到请求报文的内容,这样,在一个服务请求到达分派器后,除了负载考虑外,所有的后端节点机被一视同仁,导致了集群系统存储设备利用率不高、集群系统的主存资源没有充分利用、某些需要内容调度策略支持的网络服务不能满足和多副本等问题。针对现有集群网络服务调度系统的不足,基于内容的调度系统成为研究热点。现有的基于内容的调度系统有ArrowPoint的web交换机、Apache、Squid和KTCPVS等。前三种均在用户空间实现,处理开销很大。KTCPVS是在操作系统的内核实现,避免了用户空间和内核空间的切换和内存复制的开销(见2001年《计算机工程与科学》杂志第23卷第3期)。但它是基于网络地址转换(NAT)结构,其示意图如图1所示。前端机将客户发来的请求按照其内容不同转发给不同节点机,再由节点机服务该请求并做出响应,把响应包发回给前端机,由前端机负责把响应包返回给客户端。该结构消除了上述现有调度系统存在的一些弱点(例如:集群系统的主存资源没有充分利用、集群系统存储设备利用率不高、某些需要内容调度策略支持的网络服务不能满足、多副本)。但是在该结构中,前端机既要负责调度,又要负责转发响应包给客户,前端机负载很重。随着节点机日益增加,前端机负载将日趋繁重,成为整个集群系统的瓶颈,降低了系统的可扩展性,减少了并发客户数;另外,它只支持http服务,没有通用性。

发明内容

本发明的目的是针对现有的调度系统的不足,提出了一种适用于集群网络服务的基于内容的通用调度系统,该系统可直接发响应包给客户而不需经过前端机,大大的减少了前端机的负载,增加了并发客户数;同时,本系统支持多种服务,而不仅仅是http服务,并且可以很方便的支持更多的服务,具有很好的通用性。

为实现上述发明目的,适用于集群网络服务的基于内容的通用调度系统,包括前端机和子网,其特征在于:所述前端机配置有策略定制模块、伪服务器和负载调度器,所述子网由配置有TCP协议栈改造模块和服务例程的多个节点机构成,由多个子网形成服务器池;

所述策略定制模块用于用户定制其策略,并将该策略传送到所述负载调度器;

所述伪服务器用于同发起请求的客户机进行三次握手通信,并将信息传送给所述负载调度器;

所述负载调度器用于将客户发来的请求包按其内容的不同,分别调度到不同子网的不同节点机上;以及将伪服务器中已截获的握手信息转发给节点机;

所述TCP协议栈改造模块用于截获负载调度器发来的网络包,截取其握手信息,恢复原报文,实现与客户端之间的伪连接,并将响应报文通过伪连接发送给客户端。

所述的适用于集群网络服务的基于内容的通用调度系统,其进一步的特征在于:所述负载调度器包括报文接收模块(1)、通用调度器(3)、事件接收模块(4)、策略库(5)、报文捎带模块(6)、调度表(7)和转发模块(9); 

报文接收模块(1)用于接收网络包,并判断该网络包的IP是否为虚拟IP,如果不是,则交由原TCP/IP协议栈自行处理,否则,进入通用调度器(3);

通用调度器(3)包括协议识别模块(24)、多种服务例程(25-1,25-2,…,25-n)和通用调度模块(26);协议识别模块(24)用于对报文接收模块(1)接收的网络包的内容进行分析,得到客户所需要的服务类型和相应的端口号,并判断客户所需要的服务,调用相应的服务例程进行处理;通用调度模块(26)用于对所有类型的服务统一处理,使得系统更方便的支持更多类型的服务;它把服务例程处理得到的内容通过混合调度算法进行调度,得到调度信息后,交由报文捎带模块(6)进行处理;

事件接收模块(4)用于接收来自发送内核模块(23)的策略信息并把其保存在策略库(5)中;

策略库(5)用于保存策略信息如服务类型和其可用节点机信息;

调度表(7)用于保存报文请求内容和被调度的目的节点机信息;

报文捎带模块(6)从通用调度模块(26)传来的调度信息中取出报文请求内容和捎带握手信息表(10)中的握手信息一同传给转发模块(9);

转发模块(9)用于将报文捎带模块(6)传来的包经过内部高速网络转发给指定节点机。

所述的适用于集群网络服务的基于内容的通用调度系统,其进一步的特征还在于:所述负载调度器还包括定时器(8),用于定时给调度表(7)失效模块发触发信号,以删除过时的调度信息。

所述的适用于集群网络服务的基于内容的通用调度系统,其进一步的特征在于:所述策略定制模块包括策略定义用户界面(20)、策略校验模块(21)、策略库(22)和发送内核模块(23);

策略定义用户界面(20)用于用户定制集群系统所允许的策略,并把用户定制的策略交由策略校验模块(21)统一校验;

策略库(22)用于存放策略规则,以便策略校验模块(21)对用户定制的规则进行匹配校验;

策略校验模块(21)将策略定义用户界面(20)传来的策略与策略库(22)进行匹配,判断是否符合;若不符合,则进行出错处理,将出错信息报告给用户,否则,交由发送内核模块(23)处理;

发送内核模块(23)将通过策略校验模块(21)校验的策略通过系统调用传到负载调度器处理。

所述的适用于集群网络服务的基于内容的通用调度系统,其进一步的特征在于:所述伪服务器包括初始化模块(11)、监听端口服务模块(12)、服务类型库(13)、保存握手信息模块(14)和握手信息表(10);

初始化模块(11)用于初始化网络服务链表并从服务类型库(13)中取出要监听的服务类型和端口号交由监听端口服务模块(12)进行监听往这些端口发来的网络包;

监听端口服务模块(12)接收从初始化模块(11)传来的服务类型和端口号,并在这些端口监听网络包;当三次握手信号完成后,进入保存握手信号模块(14)来保存握手信息;

服务类型库(13)用于存放集群系统所支持的服务类型和相应服务的端口号;

保存握手信息模块(14)用于在三次握手完成后保存握手信息到握手信息表(10)中,由报文捎带模块(6)从握手信息表(10)中获取握手信息;

握手信息表(10)用于存放三次握手信息。

所述的适用于集群网络服务的基于内容的通用调度系统,其进一步的特征还在于:所述TCP协议栈改造模块包括报文过滤模块(16)、报文恢复模块(17)、伪装三次握手模块(18)和发送响应包模块(19);报文过滤模块(16)用于接收所有网络包,如果包的协议字段不为CA_TCP,表明该包不为本系统所要的包,交由原TCP/IP协议栈处理;否则,表明接收到来自转发模块(9)发送过来的包,并交由报文恢复模块(17);报文恢复模块(17)从网络包中截取握手信号,恢复原报文,将握手信号和原报文一同传给伪装三次握手模块(18);伪装三次握手模块(18)将报文恢复模块(17)传来的握手信息进行TCP层的伪装,然后用伪装后的TCP层传送原报文给上层网络服务程序,网络服务程序服务该请求并把响应包传给发送响应包模块(19);发送响应包模块(19)将伪装后的TCP层将响应包发送给客户端。

本系统综合运用了伪服务器技术、捎带技术、截获和伪装三次握手技术、通用调度技术,采用直接路由结构即节点机直接发响应包给客户而不需经过前端机,明显的减少了前端机的负载,增加了并发客户数。同时,本系统支持多种服务,而不仅仅是http服务,并且可以很方便的支持更多的服务,具有很好的通用性。本发明与现有的调度系统相比,具有支持更多的并发用户、提高内存缓存命中率的同时提高集群存储设备的利用率、通用性好、可扩展性好、系统吞吐率高等优点。具体而言,本发明具有以下特点。1)动态可扩展性

本系统采用直接路由转发响应包给客户,而不像网络地址转换把响应包传回给前端机,使得前端机负载减轻,提高了整个系统的吞吐量,增加了更多的并发用户,提高了系统的动态可扩展性。2)支持动态页面请求和静态页面请求

本系统采用基于内容的混合调度,对包括动态页面请求和静态页面请求在内的混合请求提供支持,更好的利用节点机的主存Cache,取得更大的处理能力。3)支持持续服务

本系统根据本机维护的连接记录在IP层把报文直接转发到目的节点机,保证了服务的完整性,从而支持一次连接的多次服务。4)支持任意的基于TCP协议的服务

本系统采用通用调度器,支持多种类型的网络服务,而且可以很方便的增加更多的服务解析器以支持更多类型的服务。本系统可以支持任意的基于TCP协议的服务。对于不同类型的服务,该系统调度到不同的子网中,方便用户管理和扩展集群。

附图说明

图1为现有技术中基于网络地址转换的内容调度系统的结构示意图;

图2为本发明适用于集群网络服务的基于内容的通用调度系统的结构示意图;

图3为策略定制模块的结构示意图;

图4为伪服务器的结构示意图;

图5为前端机中负载调度器(CADS)的结构示意图;

图6为图5中通用调度器的结构示意图;

图7为节点机上TCP协议栈改造模块(CANS)的结构示意图;

图8为本发明系统的工作流程示意图。

具体实施方式

下面结合附图对本发明作进一步详细的说明。

从工作原理划分,本系统的核心分为两大部分,一是安装在前端机的基于内容的调度器CADS;二是安装在节点机的CANS模块。如图2所示,适用于集群网络服务的基于内容的通用调度系统(以下简称CAVS(Content AwareVirtual Server))的体系结构分为两层:第一层为前端机,采用基于内容的调度系统(以下简称CADS(Content Aware Dispatcher System))和伪服务器;第二层为服务器池,它由许多子网组成,每个子网提供特定的服务如http服务、代理服务等。内容调度系统在节点机上的实现部分(以下简称CANS(Content Aware Node server System))也在该层中。集群中各节点机是通过高速网络相连接的。

CADS负责把客户发来的请求包根据其内容的不同,分别将其调度到不同子网的不同节点机上。这样,相同内容的请求由同一节点机提供服务。当一个新的请求到来时,便可按其内容分配到相应的节点机上,直接从缓存中读出请求内容而不必去读硬盘,使得整个系统吞吐率更高、响应时间更快、延迟更短。

CADS还负责将截获的握手信息转发给节点机。节点机通过CANS根据截获到的握手信息进行三次握手的伪装,表明节点机已与客户机建立了伪连接。CANS通过伪连接把响应信息直接传送给客户端,而不需要经过前端机来返回响应信息,减少了前端机的负载,支持更多的并发用户,减少了延迟。

在这种体系结构下,当所有服务器节点机超载时,管理员可以很快地加入新的服务器节点机来处理请求,而无需将Web文档等复制到节点机的本地硬盘上,动态可扩展性好。

下面分别介绍各部分的功能:策略定制模块

该模块用于用户定制自己的策略(当然,该策略必须符合策略库的要求),并把该策略传到内核中的负载调度器,负载调度器根据该策略进行工作,从而达到符合用户要求的效果。

如图3所示,该模块通过策略定义用户界面20定义符合策略库要求的策略,并通过发送内核模块23将用户定制的策略传到内核中的负载调度器,交由其中的事件接收模块4处理。其功能与相互关系描述如下:

1)策略定义用户界面20:用于用户定制集群系统所允许的策略,如本系统虚拟IP,以及系统支持哪些服务,每种服务分配哪些节点机等等。它把用户定制的策略交由策略校验模块21统一校验。

2)策略校验模块21:对策略定义用户界面20传来的策略与策略库22进行匹配,判断是否符合。若不符合,则进行出错处理,将出错信息报告给用户;否则,交由发送内核模块23处理。

3)策略库22:存放策略规则,方便策略校验模块21对用户定制的规则进行匹配校验。

4)发送内核模块23:将通过策略校验模块21校验的策略通过系统调用传给内核,由事件接收模块4处理。伪服务器

伪服务器用于同发起请求的客户机进行三次握手通信。伪服务器的概念是同真实的网络服务程序(如Apache Web服务器)相对应的。

对真正的网络服务程序而言,首先要在一个标准端口接收来自客户的请求,在完成同客户的三次握手之后,接收客户服务请求,并根据客户的请求把相应的内容返回给用户,然后通过改进的三次握手同客户协商以便结束该连接。网络服务程序被精心的设计成可以同时服务多个连接请求,以提高服务能力。

伪服务器在概念和工作原理上与真实的网络服务程序有两方面的不同:

(1)伪服务器的功能仅仅是同客户端进行三次握手的交互,一旦三次握手过程完毕,伪服务器便终止该连接。

(2)伪服务器能够同时支持多种网络服务。由于伪服务器只是监听端口,建立连接,不需对该请求作更多的处理。因此,伪服务器与具体的服务内容、类型无关,这就使得伪服务器能够成为一种通用的机制,同时对多个标准服务端口提供服务。这样,当该集群服务器需要提供多种网络服务时,就不用在分派器上安装多个网络服务程序。

根据以上两点分析,可以看出伪服务器的设计一方面能减小分派器负载和实现的复杂性(不用安装多个服务程序,避免了服务程序的开销);另一方面可以为集群服务器提供通用性。这样,只要在分派器上安装了伪服务器,就可以对多种网络服务提供建立三次握手,获取握手信息的功能。

伪服务器结构示意图如图4所示,首先通过初始化模块11进行初始化,并从服务类型库中取服务类型和端口数据交由监听端口服务模块监听,待完成三次握手之后,由保存握手信号模块保存握手信息进握手信息表中,并将其传给负载调度器中的报文捎带模块6。其功能与相互关系描述如下:

1)初始化模块11:用于初始化网络服务链表,并从服务类型库13中取出要监听的服务类型和端口号,交由监听端口服务模块12监听发往这些端口的网络包。

2)监听端口服务模块12:接受从初始化模块11传来的服务类型和端口号,并在这些端口监听网络包。当三次握手完成后,进入保存握手信号模块14来保存握手信息。

3)服务类型库13:用于存放集群系统所支持的服务类型和相应服务的端口号。

4)保存握手信息模块14:用于在三次握手完成后保存握手信息到握手信息表10中,以便报文捎带模块6从握手信息表中获取握手信息。

5)握手信息表10:用于存放三次握手信息如当前IP包的源IP地址、源端口号、目的IP地址、目的端口号等。负载调度器(CADS)

CADS用于把客户发来的请求包和截获的握手信息根据其请求包的内容不同分别将其调度到不同子网的不同节点机上。其结构如图5、图6所示,报文接收模块1接收网络包,并进行过滤得到所需的网络包,交由通用调度器3。通用调度器中的协议识别模块24把传来的网络包进行协议识别,根据不同的服务请求调用不同的服务例程(如http服务例程25-1,corba服务例程25-2,代理服务例程25-n等),得到相应的请求内容后调用通用调度系统26进行统一处理;同时,事件接收模块4从发送内核模块23(见图3)中接收已定制的策略保存在策略库5中。通用调度器3根据报文分析数据、策略库和调度表信息决定调度到某节点机上,并经过报文捎带模块6、转发模块9将报文传给CANS的报文过滤模块16(见图7)。其功能与相互关系描述如下:

1)报文接收模块1:接收到网络包,它判断该网络包的IP是否为虚拟IP。如果不是,则交由原TCP/IP协议栈自行处理;否则,进入通用调度器3中的协议识别模块24。

2)通用调度器3:它查找调度表7信息判断是否已调度过该请求,如果有,则直接从调度表中取出调度信息;否则,根据策略库5中相应的策略和协议识别模块24的处理结果,便可得到调度信息即调度到哪个子网的哪台节点机上等并保存在调度表7中。将调度信息传给报问捎带模块6。

通用调度器是本系统核心模块。它对所有类型的服务统一处理,使得系统更方便的支持更多类型的服务。目前,本系统支持http服务,corba服务,代理服务。如果需要支持其它服务,我们只需在协议识别模块24加入相应的服务的识别,如图中列举的http服务例程25-1、Corba服务例程25-2,直至代理服务例程25-n。并增加相应的服务例程对该服务进行处理,最后便由通用调度模块26进行统一调度,一种服务类型便可以得到支持。其功能与相互关系描述如下:

2.1)协议识别模块24:对报文接收模块1接收的网络包的内容进行分析,得到客户所需要的服务类型和相应的端口号,判断客户所需要的服务,调用相应的服务例程(如http服务例程25-1,corba服务例程25-2,代理服务例程25-n等)进行处理。

2.2)http服务例程25-1:对http请求进行处理。它首先分析http协议头部,得到服务请求的内容,交由通用调度模块26统一调度。

2.3)corba服务例程25-2:对corba请求进行处理。它首先分析iiop协议头部,得到服务请求的内容,交由通用调度模块26统一调度。

2.4)代理服务例程25-n:对代理请求进行处理。它首先分析代理协议头部,得到服务请求的内容,交由通用调度模块26统一调度。

2.5)通用调度模块26:它对所有类型的服务统一处理,使得系统更方便的支持更多类型的服务。它把服务例程处理得到的内容通过混合调度算法进行调度,得到调度信息后,交由报文捎带模块6进行处理。

3)调度表7:保存报文请求内容,被调度的目的节点机信息如IP地址等,端口号,定时器等信息。其中定时器用来维护调度表是否失效。

4)事件接收模块4:接收来自发送内核模块23(见图3)的策略信息并把其保存在策略库5中。

5)策略库5:保存策略信息如服务类型和其可用节点机信息。

6)报文捎带模块6:从调度模块传来的调度信息中取出报文请求内容捎带握手信息表10中的握手信息一同传给转发模块9。

7)转发模块9:将报文捎带模块6传来的包经过内部高速网络转发给指定节点机,由节点机的CANS的报文过滤模块16(见图7)负责接收该包。

8)定时器8:该模块定时给调度表失效模块发触发信号,以便于删除过时的调度信息。TCP协议栈改造模块

该模块用于截获前端机发来的网络包,截取其握手信息,恢复原报文(即无握手信息的报文),实现与客户端进行伪连接,并将响应报文通过伪连接发送给客户端。为了满足这些要求需要修改节点机的TCP协议栈。

如图7所示,该模块由报文过滤模块16接收转发模块9发来的网络包并交由报文恢复模块17截取握手信息,恢复原报文(即无握手信息的报文),再由伪装三次握手模块根据握手信息进行伪装,修改原TCP协议栈得到新的改装后的TCP协议栈,再由发送响应模块19将原报文的响应报文直接发送给客户端。其功能与相互关系描述如下:

1)报文过滤模块16:接收所有网络包。如果包的协议字段不为CA_TCP,表明该包不为本系统所要的包,交由原TCP/IP协议栈处理;否则,表明接收到来自转发模块9发送过来的包,则交由报文恢复模块17处理。

2)报文恢复模块17:从网络包中截取握手信号,恢复原报文(即无握手信息的报文),将握手信号和原报文一同传给伪装三次握手模块18。

3)伪装三次握手模块18:根据报文恢复模块17传来的握手信息进行TCP层的伪装,然后用伪装后的TCP协议传送原报文给上层网络服务程序(如httpserver,cache server等)。网络服务程序服务该请求并将响应包传给发送响应包模块19。

4)发送响应包模块19:根据伪装后的TCP协议将响应包发送给客户端。

图8描述了本发明系统的工作流程:

①当CADS接收到网络包时,它判断是否对虚拟IP的访问。如果不是,则说明不是本系统所需要的网络包,本系统不做任何处理直接交由原TCP/IP协议栈自行处理;否则,初始化三次握手信息表项类型的指针。

②开始查找是否有握手信息。如果没有,则交由伪服务器截获三次握手信息,并将其保存在握手信息表中。如果已有,则表明握手信息刚建立起来,进入协议识别模块。

③协议识别模块首先根据端口进行协议识别,并进入相应的协议处理模块。协议处理模块分析包的内容截取出相关信息,调用通用调度模块进行统一处理。

④通用调度模块根据③中截获的信息采用一定的算法决定调度到哪个子网的哪台节点机上。如果在调度表中已有该调度信息,则直接根据该调度信息把报文捎带握手信息一同转发到被调度的节点机上;否则,采用一定的算法得到调度信息,并把它保存在调度表中,再根据该调度信息把报文捎带握手信息一同转发到被调度的节点机上。

⑤节点机接收到前端机发送过来的报文时,CANS取出握手信息,恢复客户请求报文的原貌,开始进入TCP/IP伪装模块来进行三次握手信号的伪装。它负责完成向上层服务程序伪装三次握手的功能。

⑥最后,由该节点机的网络服务程序完成该服务请求并将结果直接返回给用户。

对于该连接的后续报文,如对一个服务项的多次传输,用改进的三次握手结束该连接等,网络分派器会根据本机维护的连接记录在IP层把报文直接转发到目的节点机,使该服务完整的被完成。

下面举例说明本系统实施过程中的配置情况。

在具有16个节点机上的集群系统构建一个适用于集群网络服务的基于内容的通用调度系统。其基本配置如表1所示。

                         表1  系统的配置例示

CPU  内存  硬盘  网卡操作系统    网络双PIII 866  256M  30G  3C905BLinux 6.2 100M交换机

其中,一台作为前端机,其余的服务节点机按照服务分成若干子网,如:Web服务子网、代理服务子网。具体实施如下:节点机1充当前端机,装载伪服务器模块和前端机内容调度系统(CADS);节点机2至节点机8在Web服务子网中,节点机9至节点机16在代理服务子网中,各节点机上均装载节点机内容服务系统(CANS)和相应的网络服务程序(即节点机2至节点机8均装载http server,节点机9至节点机16均装载cache server)。

对整个系统的配置说明如下:1)服务类型库(13)具有如下字段,如表2所示。

 表2服务类型库的配置例示

  服务类型    端口号    HTTP    80    IIOP    1025

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号