主从式网络计算机服务器群自组织方法

文档序号:6517194阅读:171来源:国知局
专利名称:主从式网络计算机服务器群自组织方法
技术领域
本发明涉及一种在网络计算机系统中,多个网络计算机服务器的组织方法,尤其是能自动组织成多个以一服务器为主和多个服务器为辅的主从式服务器群,并为位于同一网络上的多个具有本地计算能力的客户端提供启动、以及按需定制、下载应用程序服务的方法。
二、技术背景网络计算机(Network Computer或NC)最早由Oracle公司在1995年提出,是网络计算阶段具代表性的一种计算机形态。1996年5月Oracle公司联合其它四家公司共同制定了网络计算机标准1(Network Computer Reference Profile 1)。作为客户端的NC采取了简化计算机硬件的做法,本地无硬盘,采用低功耗CPU,主板设置有大容量的非易失性存储装置,通常是只读存储器ROM或快闪存储器(Flash ROM)。在软件上,传统NC在本地的非易失性存储装置中,存储了嵌入式的操作系统或终端协议代码。其工作原理是通过WWW/Applet技术,X-terminal或其他终端技术(如RDP,ICA等)访问远程服务器上的应用程序和数据,本地不进行计算,只负责接收用户输入和进行图形界面显示工作。传统NC的计算主要发生在服务器上,因此对服务器的依赖性很大,尤其在应用于多媒体应用场景的时候,对服务器的要求很高,因此普通服务器能同时支持的NC数目非常有限。并且,由于操作系统固化在NC的ROM或Flash ROM中,因此升级困难,可扩展性差。
为了解决传统NC对服务器依赖过重,对多媒体应用支持不足,软件升级困难,可扩展性差的问题。清华大学网络互连实验室研制了一种本地无操作系统的NC-可管理多媒体网络计算机MMNC(参见本申请人的相关专利ZL03122022.3,ZL01142033.2),它是一种具有本地计算能力的NC,如图1,服务器端101上存储并管理客户端所需要的操作系统和应用程序,并不负责应用的计算,具有成本低、负载轻的特点。服务器和客户端102通过硬化的驱动程序和通信协议进行通信,应用的计算在NC客户端发生,能极大减轻以往NC的计算对服务器依赖过重的问题,且客户端本地无操作系统、无硬盘、成本低。MMNC能大大增强NC应用的灵活性并具有很强的扩展能力,能支持丰富的桌面应用,这种NC在服务器上放置了NC操作系统内核镜像以及应用程序,并配置了动态主机配置协议(Dynamic Host ConfigurationProtocol,DHCP)服务,简单文件传输协议(Trivial File Transfer Protocol,TFTP)服务以及远程执行环境(Preboot Execution Enviroment,PXE)服务。如图2,NC客户端203(简称NC或客户端)和NC服务器202(简称服务器)位于一个计算机网络201上,服务器同时为多个客户端提供操作系统和应用程序资源,服务器和客户端之间形成星形的逻辑关系。MMNC的启动过程如图3所示,客户端203被加电301后开始NC的启动过程,之后执行非易失存储器中的引导代码302,通过DHCP消息广播同服务器进行联系,服务器收到DHCP客户端广播消息后,向客户端应答并为客户端分配一网络地址,即一IP地址303。获得网络地址之后,客户端向服务器发出下载操作系统内核镜像和包括初始应用程序的根文件系统镜像的文件下载请求,服务器接收到文件下载请求后向客户端传输操作系统内核镜像以及根文件系统镜像,客户端接收服务器的传输304,NC客户端接收完毕后加载服务器端传输的操作系统内核镜像和根文件系统镜像305,就完成了NC的启动过程306。
为了提高MMNC的启动性能,尤其是减缓客户端在启动时对于服务器的依赖,我们进一步提出了一种网络计算机的协作式启动方法(参见本申请人的专利申请200410009789.3),如图4,其中服务器402和所有NC403和位于一计算机网络401上,服务器上存储了所有NC启动所需的操作系统和应用程序,但在启动时,服务器和客户端之间的请求/服务关系不是星形的逻辑关系,即可以不仅由服务器对NC的启动请求提供服务,在NC间也可以协作式地提供服务、互助完成启动一台客户端启动时的初始应用程序可以由服务器独立提供,或由若干台其他客户端共同提供,或由服务器和若干台客户端共同提供。采用这种启动方法不仅保留了原MMNC易管理、应用扩展性好、对多媒体应用支持丰富的特点,并且能降低启动时服务器的负载,提高NC的平均启动速度和网络利用率,整个系统具有较好的鲁棒性。
上述NC能提供很好的多媒体支持,具有高的可管理性,但目前的系统基本上基于一单服务器的系统结构,即由一个服务器为同网络上的多个NC客户端同时服务,不仅系统的鲁棒性受制于该系统结构,更重要的是系统的扩展性成为一个瓶颈。虽然一方面,服务器可以采用类似镜像的技术提高整个系统的鲁棒性和容错性,避免由服务器故障造成整个系统无法使用的情况;另一方面,也可以通过提高服务器硬件性能或改进服务器的运行算法来提高服务器整体性能和负载能力,但是却无法从根本上突破系统的负载数量受单服务器结构限制的这个不足。事实上,我们发现在实际的应用中,一台普通配置的PC服务器所能支持的客户端极难超过百台的限制,但在对NC可能的应用场合进行需求分析后发现,许多NC的大中型应用对于客户端的需求数量都要远高于这个限制。尽管我们可以采用静态划分客户端所属关系的方法,使用多个服务器来分别为各自所属部分客户端提供服务,但由于这种方法缺乏一个完整统一的架构,如何合理地进行这种静态划分,在需求发生变化时如何调整划分等由静态划分所带来的一系列问题都将成为棘手、却不得不解决的问题。另一方法是,采用高配置的高级专用服务器来满足大负载数需求,这种方法将使得整个系统的造价将大幅提高,性价比大大降低。因此若能采用一个完整、统一的多服务器的NC体系结构,使得多个普通PC服务器以群的方式动态、透明地为客户端提供服务,则能在保留现有MMNC成本低、易管理、支持应用丰富等特点的情况下,提供与服务器节点成正比的负载能力,同时具有高的可用性和更好的系统扩展性及鲁棒性。

发明内容
针对现有的基于单服务器的NC系统结构扩展性、鲁棒性不佳,负载能力有限的问题,本发明提出了一种多个NC服务器的自组织方法,其中NC和服务器任意分布于计算机网络上,服务器上存储了NC启动和运行所需的操作系统和应用程序,位于同一广播可达网络上的所有服务器属于同一个服务器群,一个服务器群包括一个主NC服务器MNCS和若干个SNCS服务器,NC只能由属于群中的服务器为其提供服务,尚未加入群的服务器按照以下步骤自组织成服务器群启动一进程,该进程负责侦听其他服务器发送的信息;如果在Td的时间内没有收到心跳信息,则服务器认定自己是群中MNCS,开始以固定的心跳时长向网络广播心跳信息,其中Td是数倍于心跳时长的时间段,并开始侦听NC的服务请求;否则认定自己是SNCS,开始侦听NC的服务请求。一SNCS在收到MNCS的心跳信号时向MNCS回复一个反射信号;MNCS在收到一SNCS的首次反射信号时将其加入群;MNCS根据各SNCS反射信号中的状态信息,动态维护服务器群的状态信息。若所述的MNCS在所述Td的时间内没有收到一SNCS的反射信号,则尝试向该SNCS通信,若一定次数的尝试通信后依然无回应,则将该SNCS从群中去除。
若一SNCS在Td时间内没有收到心跳信号,则执行如下处理步骤1发出一个竞职信号;步骤2假如在等待的Td时间内收到一MNCS发来的心跳信号,则结束处理;步骤3否则,假如没有收到其他SNCS发来的竞职信号,则自己升级为MNCS,用自身保持的绑定NC状态信息初始化群状态信息,并开始广播心跳信息,结束处理;步骤4否则,假如收到其他SNCS发来的竞职信号,则延迟一段时间,若延迟期间收到心跳信息,则认定自己为SNCS,结束处理;否则转到步骤1处理;若所述MNCS收到其他MNCS发出的心跳信号,则向该MNCS发送一冲突指示信号,其中包括了其所属群的状态信息。若一MNCS A收到另一MNCS B发出的冲突指示信号,则比较双方群中所属的服务器数量,若前者大于后者,则A将B所属群的状态信息合并至自己所属群的状态信息中,其中将B作为一SNCS插入到A所属群的状态中,并向B发送一冲突回复信号。若一MNCS收到一冲突回复信号,则认定自己为SNCS,停止发送心跳信号,并更新相关状态信息。
采用本发明的网络计算机的服务器群自组织方法,使得在保留现有的MMNC体系结构成本低、易管理、支持应用丰富等特点的同时,提供了更好的负载能力、动态扩展性和鲁棒性,并可兼容现有的NC客户端。


图1是MMNC系统结构示意2是现有NC的启动关系示意3现有NC的启动流程4是使用协作式启动方法的NC启动关系示意5是未经组织的NC网络拓扑6是未经组织的NC网络实体示意7是自组织后的的NC网络实体示意8是自组织后的的NC网络拓扑9是MNCS及SNCS中使用到的数据结构五具体实施方式
下面参照图示对本发明进行详细说明。
如图5,是未经组织时的NC系统网络拓扑示意图。多个NC客户端503和NC服务器504、505、506、507物理上分散地分布地在计算机网络501、502的各处,网络501和网络502支持内部广播(如以太网),但不支持相互间的广播通信,因此被认为是不同的连通网络。群是指同一个连通网络上所有NC服务器,NC客户端以及他们之间的相互关系。服务器群指属于一个群的所有NC服务器的集合。初始时服务器均处于关闭状态,服务器不可用,并且没有加入任何群,NC客户端也因为在相同连通网络上不存在可用的服务器而无法使用,服务器和服务器、服务器和客户端之间都不存在任何关系。
自组织是指NC服务器和NC客户端能自发地形成群的关系,并能对群关系进行动态的调整,经过自组织的NC服务器群可以透明地向NC客户端提供如启动服务(包括IP分配、操作系统内核镜像下载等),应用程序的按需定制、下载服务、共享数据的下载等和现有技术MMNC中单服务器所能提供的相同服务,而从客户端的角度,感觉不到群模式的服务器和现有的单服务器模式的区别。
如图6和图7,本发明的自组织方法。可以看作是将初始时处于同一层次601的、语义上无差别的、互不相干的只是物理上相互连通的多个网络实体602(包括NC客户端、NC服务器),按照客户端和服务器间的隶属关系,和服务器间的主从关系,自行组成三层次的、多群的实体间关系。
如图8,是上述网络结构在使用本发明的自组织方法后形成的多服务器NC系统网络拓扑图。在同一连通网络501/502中所有的服务器被组织进一个群(群1/群2),一个群中至少包括一个主NC服务器(Master NC Server,MNCS)504/505,如果有两个以上服务器,则还包括若干个从服务器(Slave NC Server,SNCS)506、507,因此在多个不同连通网络上,会形成多个群,属于该网络上所有的NC客户端503都由相应的服务器群提供服务。在一个群中,客户端在发起启动请求后,将被指定由某一个服务器(MNCS或SNCS)固定提供启动服务和启动后的应用程序等服务,这种从客户端到服务器的单射关系,被称为绑定。
如图9,在MNCS中维护了一个绑定映射关系表BMRT 910来记录群中客户端-服务器,服务器-服务器的映射关系,即记录了一个群中MNCS到SNCS的主从关系,NC到服务器的隶属关系。其中一维表911主要起到索引的作用,每个节点931对应MNCS及从属于它的SNCS,二维表912的每个节点932对应隶属于一个服务器的客户端。MNCS中还维护了一个SNCS列表932,记录了群中SNCS的状态信息,其中每个节点933记录的信息中包括了收到该SNCS报文的时间戳信息。在服务器中还维护了一Subscriber表920,记录了被绑定至该服务器的所属客户端信息921,如标识、优先级、状态、IP地址等信息。
NC服务器的心跳信号是一种基于IP/UDP的报文。心跳信号是一种主动信号,MNCS服务器在运行中会按固定时间长t在网络上广播发出周期性的心跳信号。其中心跳间隔t可根据应用需求设置为5-300s范围内的一数值,或按t=2*网络最大直径*测量得到的单跳间平均延迟(包括传输延迟和节点处理延迟)计算结果的倍数值。
反射信号也是一种基于IP/UDP的报文,反射信号是一种被动信号,SNCS在收到MNCS发出的心跳信号之后向MNCS发送反射信号。心跳信号和反射信号中都包括了发出信号的NC服务器在当时的性能参数值,如当时的NC客户端负载数Wλ,CPU利用率Pλ,内存利用率Mλ,虚存的使用率Gλ,输出带宽/理论带宽P/T,等参数值或关于这些参数的函数值,通过这些参数可以及时了解到群中服务器的载荷情况。
竞职信号是一种基于IP/UDP的报文,用于SNCS尝试升级为MNCS时。
服务器按照下列处理步骤进行自组织形成一服务器群Step1服务器在启动后自动启动一进程,侦听其他服务器发来的包括心跳、反射信号、竞职信号、冲突指示/回复信号等信息,主要用于服务器之间的交互;Step2If如果在2t-5t的时间内没有接收到其他服务器的心跳信息,则认定自己为群中的MNCS,执行将SNCS列表置空,Subscriber表置空,BMRT表中只加入自己一个节点;开始每t时间向网络广播周期性心跳信息;并启动一进程,开始侦听NC的启动和应用程序请求,跳至step4;Step3Else认定自己为SNCS,执行初始化所属的Subscriber表;启动一进程开始侦听NC的启动和应用程序请求,跳至step4;Step 4end对于服务器群的动态调整按照下列步骤进行一方面对于MNCS
MNCS在首次收到某SNCS反射信号时将其加入群将SNCS插入BMRT表和SNCS列表;通过SNCS列表节点中的时间戳参数,若MNCS在T0=2t-5t时间内收不到某SNCS的反射信号,则以Tn=Tn-1*1/Nn的时间间隔以端对端方式向该SNCS重发心跳信号,其中N0=2,Nn=Nn-1+1,Nn<=Nmax,Nmax表示最大尝试次数,可自定义。若Nmax后还无收到SNCS的反射信号,则认定该SNCS在群中不可用,则要更新群关系,具体地,将绑定至该服务器上的所有客户端去绑定,即从BMRT表中删除该SNCS及相关的客户端,并在SNCS列表中将该服务器的状态置为不可用N/A。
另一方面,对于SNCS一旦SNCS收到MNCS广播发出的心跳信号后,将向MNCS回复一发射信号,若SNCS在2t-5t时间内,没有收到MNCS发出的心跳信息,则认定群中无MNCS,跳至P1执行P1发出一个竞职信号;If 2t-5t时间内收到MNCS发来的心跳信号,则跳至P2;Else If没有收到其他SNCS发来的竞职信号,则自己升级为MNCS将SNCS列表置空,BMRT表中只加入自己一个节点,并以当前的Subscriber表来初始化BMRT表,即在BMRT表中加入这些客户端;开始每t时间向网络广播周期性心跳信息;跳至P2。
Else If收到其他SNCS发来的竞职信号,则使用二进制指数回退算法(Binaryexponential backoff algorithm)延迟R*T*2powerN时间,其中R是随机数,T是上次延迟等待的时间(首次延迟为2t-5t),N是算法被调用次数,若延迟期间收到心跳信息,则认定自己为SNCS,goto P2;否则goto P1;P2end此外,若任意时刻一个MNCS收到其他MNCS的心跳信号(可能是由于网络拓扑结构发生改变,导致同一连通网络上出现若干MNCS),这时也需要动态调整群关系收到心跳信号的MNCS采用端对端方式向发出心跳信号的另一MNCS发送冲突指示信号,其中包括了自己的BMRT表和SNCS列表内容;若一MNCS A收到另一MNCS B发来的冲突指示信号,则A比较B的SNCS数,若A的SNCS数大于等于B的SNCS数,则A将B插入自己的SNCS表,并将B的BMRT表和SNCS列表内容无冗余地插入自身的BMRT表和SNCS,其中将B变为一SNCS,并向B发送冲突回复信号。否则A向B发送一冲突指示信号,并在收到B发送的冲突回复信号之后,认定自己为SNCS,停止发送心跳信息,初始化BMRT表和SNCS列表。
客户端可以透明地使用群提供的服务,群对客户端的服务请求处理则与单服务器对客户端的服务请求处理的有所不同。客户端加电启动后将发起启动请求时,群将按下列执行步骤提供服务客户端在网上发送DHCP广播消息;SNCS收到消息后,如果在Subscriber列表中找不到该客户端,则不做处理,忽略收到的请求,否则由该服务器向该客户端提供服务;MNCS收到客户端请求后,如果在BMRT表中找不到该客户端,根据不同的策略(如基于服务器性能参数找载荷最轻的,或基于Round Robin的等),将该客户端绑定到一服务器,并将客户端插入相应的服务器(MNCS或SNCS)的链表。若绑定的服务器是SNCS,则MNCS通知它这次绑定。绑定服务器会将客户端加入到Subscriber表中,并向该客户端提供服务;客户端加载从绑定服务器上下载的操作系统核心镜像和初始应用程序之后,再次在网络上广播,由其绑定服务器进行应答,客户端因此可以获知其绑定的服务器,客户端就完成了启动。
此后的按需定制、下载应用程序等服务,客户端都可向其绑定的服务器发出请求获得。
作为另一种实施方式,客户端可以不必知道其绑定的服务器,而采用广播的方式进行服务请求,服务器判断若收到的服务请求隶属自己,则向其提供服务,否则忽略。
如果因为网络拓扑结构发生了变化,或绑定服务器发生了故障,导致客户端无法从绑定服务器上获得服务,客户端可以手工地或在检测到该情况后自动地重新启动,由于MNCS将在检测到相应SNCS不可用后可自动更新群关系,因此客户端重启后将由群将其重新绑定至另一服务器。
作为另一种实施方式,服务器可在启动后的运行过程中,手工或自动地执行加入群的过程,而不必在启动时执行,这种方式更有利于对服务器的定制和动态扩展群的总负载能力。
以上描述的具体实施方式
只是对本发明进行示例,本领域技术人员在不脱离本发明实质性思想的基础上进行各种修改和改进后得到的技术方案,均视为在本发明的范围之内。本发明适当的范围以权利要求书为准进行确定。
权利要求
1.一种网络计算机NC的服务器群自组织方法,NC和服务器任意分布于计算机网络上,服务器上存储了NC启动和运行所需的操作系统和应用程序,其中位于同一广播可达网络上的所有服务器属于同一个服务器群,一个服务器群包括一个主NC服务器MNCS和若干个从NC服务器SNCS,NC只能由属于群中的服务器为其提供服务,尚未加入群的服务器按照以下步骤自组织成服务器群步骤一启动一进程,该进程负责侦听其他服务器发送的信息;步骤二如果在Td的时间内没有收到心跳信息,则服务器认定自己是群中MNCS,开始以固定的心跳时长向网络广播心跳信息,其中Td是数倍于心跳时长的时间段,并开始侦听NC的服务请求;否则认定自己是SNCS,开始侦听NC的服务请求;一SNCS在收到MNCS的心跳信号时向MNCS回复一个反射信号;步骤三MNCS在收到一SNCS的首次反射信号时将其加入群;MNCS根据各SNCS反射信号中的状态信息,动态维护服务器群的状态信息。
2.如权利要求1所述的网络计算机的服务器群自组织方法,其特征在于若所述的MNCS在所述Td的时间内没有收到一SNCS的反射信号,则尝试向该SNCS通信,若一定次数的尝试通信后依然无回应,则将该SNCS从群中去除;若一SNCS在Td时间内没有收到心跳信号,则执行如下处理步骤1发出一个竞职信号;步骤2假如在等待的Td时间内收到一MNCS发来的心跳信号,则结束处理;步骤3否则,假如没有收到其他SNCS发来的竞职信号,则自己升级为MNCS,用自身保持的绑定NC状态信息初始化群状态信息,并开始广播心跳信息,结束处理;步骤4否则,假如收到其他SNCS发来的竞职信号,则延迟一段时间,若延迟期间收到心跳信息,则认定自己为SNCS,结束处理;否则转到步骤1处理;
3.如权利要求2所述的网络计算机的服务器群自组织方法,其特征在于若所述MNCS收到其他MNCS发出的心跳信号,则向该MNCS发送一冲突指示信号,其中包括了其所属群的状态信息;若一MNCS A收到另一MNCS B发出的冲突指示信号,则比较双方群中所属的服务器数量,若前者大于后者,则A将B所属群的状态信息合并至自己所属群的状态信息中,其中将B作为一SNCS插入到A所属群的状态中,并向B发送一冲突回复信号;若一MNCS收到一冲突回复信号,则认定自己为SNCS,停止发送心跳信号,并更新相关状态信息。
4.如权利要求1-3中任一个所述的网络计算机的服务器群自组织方法,其特征在于按照如下步骤所述NC取得服务器群提供的服务步骤aNC加电后在网络上广播启动请求;步骤b若一SNCS收到请求后,如果发现该NC隶属于本服务器,则提供服务;若所述MNCS收到请求后,如果在保持的群状态信息中发现该NC不隶属于任何服务器,则将该NC绑定至一服务器,并告知该服务器已将该NC绑定到该服务器,由绑定服务器向该NC提供服务;步骤cNC从绑定服务器上下载并加载下载的操作系统核心镜像和初始应用程序后,再次在网络上广播,由其隶属的绑定服务器进行应答后,该NC即完成了启动;步骤dNC启动后,如需获得按需定制、下载应用程序等服务,都可向其绑定服务器发出请求获得;若某一NC在启动运行后无法从其绑定服务器上获得服务,则可手工地或在自行检测到此情况后自动重新启动。
全文摘要
本发明涉及一种主从式网络计算机NC服务器群自组织方法,其中NC和服务器任意分布于计算机网络上,位于同一广播可达网络上的所有服务器属于同一个服务器群,一个服务器群包括一个主NC服务器MNCS和若干个从NC服务器SNCS,服务器按照以下步骤自组织成服务器群启动一进程,该进程负责侦听其它服务器发送的信息;如果在数倍于心跳时长的时间段的时间内没有收到心跳信息,则服务器认定是群中MNCS,开始以固定的心跳时长向网络广播心跳信息,并开始侦听NC的服务请求;否则认定自己是SNCS,开始侦听NC的服务请求。SNCS在收到MNCS的心跳信号时向MNCS回复一个反射信号;MNCS在收到SNCS的首次反射信号时将其加入群;MNCS根据各SNCS反射信号中的状态信息,动态维护服务器群的状态信息。
文档编号G06F15/16GK1641620SQ20051001112
公开日2005年7月20日 申请日期2005年1月7日 优先权日2005年1月7日
发明者张尧学, 徐广斌, 杨华杰, 匡文渊, 田鹏伟 申请人:清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1