一种实现高可用性的方法、系统及设备的制作方法

文档序号:7926011阅读:233来源:国知局

专利名称::一种实现高可用性的方法、系统及设备的制作方法
技术领域
:本发明属于计算机领域,尤其涉及一种实现高可用性的方法、系统及设备。
背景技术
:随着计算机技术的不断发展,软件系统所服务的用户规模越来越大,企业的经营活动对软件系统的可用性要求也越来越高。可用性是指系统在任一随机时刻需要和开始执行任务时,处于可工作或者可使用状态的程度,可靠性和可维护性共同决定了可用性。其中可靠性用平均无故障时间(一个设备可以连续运行而不出现故障的时间)来度量。可维护性用系统出现故障后恢复正常状态所需的时间来度量。现有的双机热备、集群等技术均是为实现高可用性而发展起来的成熟技术。其中双机热备技术是通过物理服务器的冗余来实现高可用性的,简述如下设置至少两台物理服务器,其中一台物理服务器处于活动状态(称为主机),另外一台物理服务器处于非活动状态(称为备机),当主机发生故障时,备机在较短的时间内启动应用软件并接管主机的服务。这种通过物理服务器的冗余来实现高可用性的方法难以满足单台物理服务器环境下的高可用性需求,且增力口了成本。请参阅图1,是现有的集群技术实现高可用性的示意图。通过在后端设置多台运行服务程序的主机组成一服务器集群(ServerCluster),该服务器集群可以横向扩展。负载均衡器(LoadBalancer)接收客户端的服务请求,并根据一定的均衡算法将接收的服务请求转发或者路由到后端的服务器集群中的某个服务器实例处理。当负载均衡器检测到后端的服务器实例失效时,将该服务器实例从服务器列表中删除,直到失效的服务器恢复。负载均^f器则通过备份的主机来保证高可用性,当一台主机失效后,备用主机通常以一种对客户端透明的方式自动接管主机的职责。集群技术也是通过物理服务器的冗余来实现高可用性的,从而难以满足单服务器环境下的高可用性需求,且增加了成本。
发明内容本发明的目的在于提供一种实现高可用性的方法,旨在解决现有的实现高可用性的方法成本较高、难以满足单服务器环境下的高可用性需求的问题。本发明是这样实现的,一种实现高可用性的方法,所述方法包括下述步骤在启动一为消费者提供服务的活动进程的同时,启动一热备进程;-险测所述活动进程的状态;当所述活动进程的状态处于停止状态时,所述热备进程开始为消费者提供服务。本发明的另一目的在于提供一种实现高可用性的系统,所述系统包括进程启动单元,用于在启动一为消费者提供服务的活动进程的同时,启动一热备进程,所述热备进程在所述活动进程处于停止状态时,为消费者提供服务;代理进程启动单元,用于启动一用于检测所述活动进程的状态的代理进程。本发明的另一目的在于提供一种包括所述实现高可用性的系统的实现高可用性的设备。在本发明实施例中,通过在启动活动进程的同时启动热备进程,从而当活动进程发生故障时,可以及时的将服务请求转至热备进程,由热备进程提供服务,从而减少了故障恢复时间,提高了系统整体的可用性。同时本发明实施例可以满足单服务器和多服务器环境下的高可用性需求。图l是现有技术提供的采用集群技术实现高可用性的结构示意图;图2是本发明实施例提供的实现高可用性的方法的实现流程图;图3是本发明实施例提供的实现高可用性的基本原理图;图4是本发明另一实施例提供的实现高可用性的原理图;图5是本发明实施例提供的活动进程停止时实现高可用性的示意图;图6是本发明另一实施例提供的实现高可用性的原理图;图7是本发明另一实施例提供的活动进程停止时实现高可用性的示意图;图8是本发明另一实施例提供的实现高可用性的原理图;图9是本发明另一实施例提供的实现高可用性的原理图;图10、11、12是本发明实施例提供的实现高可用性的方法在EAS系统中的应用示意图13是本发明实施例提供的实现高可用性的系统的结构示意图。具体实施例方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一歩详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。在本发明实施例中,在启动一活动进程处理服务请求的同时,启动一热备分硬件资源,在检测到活动进程停止时,将活动进程未处理的服务请求以及后续的服务请求转至热备进程处理,从而实现系统的高可用性。在本发明实施例中,活动进程是指正在为消费者提供服务的进程。热备进程是指能够提供活动进程所能提供的全部或者部分服务,但却处于不提供服务的待命状态或者处于等待某些关键资源释放的阻塞状态的进程。当等待的资源被释放后,可以在短时间内获得这些资源并进入待命状态。其中消费者是指任何需要得到活动进程服务的软件或者设备。服务是指接收来自进程外部的消息并返回响应消息的4亍为。图2示出了本发明实施例損_供的实现高可用性的方法的实现流程,详述如下在步骤S201中,在启动一为消费者提供服务的活动进程的同时,启动一热备进程。在本发明实施例中,启动活动进程和启动热备进程的方式可以釆用现有技术提供的任意一种进程启动方式。请参阅图3,是本发明实施例提供的实现高可用性的基本原理图,在启动一活动进程为消费者提供服务的同时,启动一热备进程,且热备进程和活动进程的运行环境为热备进程可以通过直接或者间接的方式使用活动进程运行期间所使用的全部或者部分石更件资源,如CPU计算资源等。其中热备进程和活动进程的运行环境具体可以如下热备进程和活动进程运行在同一个操作系统中,从而使热备进程可以直接使用活动进程运行期间所使用的全部或者部分CPU计算资源等硬件资源。热备进程和活动进程的运行环境也可以如下所述采用虚拟化技术将一台物理服务器虚拟成多台逻辑服务器,并为每台逻辑服务器分配对应的硬件资源,每台虚拟的逻辑服务器上均可以安装并运行操作系统,从而每台虛拟的逻辑服务器上可以安装并运行应用软件,同时在为消费者提供服务的过程中,可以通过虚拟化技术任意的对分S己给每台逻辑服务器的硬件资源进行重新分配。请参阅图4,是本发明另一实施例提供的实现高可用性的原理图。虚拟层采用虛拟化技术将一台物理服务器虚拟成两台逻辑服务器,并为第一逻辑服务器分配9/10的CPU计算资源等硬件资源,为第二逻辑服务器分配1/10的CPU计算资源等硬件资源。通过在第一逻辑服务器中安装第一操作系统,在第二逻辑服务器中安装第二操作系统,从而可以在第一操作系统中启动一为消费者提供服务的活动进程时,在第二操作系统中启动一热备进程,且在^消费者提供服务的过程中,在某种条件的触发下,如第一操作系统中的活动进程发生故障时,虚拟层可以采用虚拟化技术将一台物理服务器的CPU计算资源等硬件资源重新分配给虚拟的第一逻辑服务器和第二逻辑服务器,如将1/10的CPU计算资源等硬件资源分配给第一逻辑服务器,将9/10的CPU计算资源等硬件资源分配给第二逻辑服务器,其效果如图5所示。从而使热备进程可以直接使用活动进程运行期间所使用的全部或者部分CPU计算资源等硬件资源。热备进程和活动进程的运行环境还可以如下所述可以通过运行热备进程的服务器与运行活动进程的服务器相互交换硬件资源,来达到热备进程间接的使用活动进程运行期间使用过的硬件资源。其中运行热备进程的服务器和运行活动进程的服务器可以是两台物理服务器,也可以是通过虚拟化技术虚拟出的逻辑服务器。请参阅图6,在第一服务器中运行一活动进程和一热备进程,并在第二服务器中也运行一活动进程和一热备进程,第一服务器中的活动进程对应第二服务器中的热备进程,第二服务器中的活动进程对应第一服务器中的热备进程,当第一服务器中的活动进程停止时,第二服务器中的活动进程也同时停止,此时,第二服务器中的热备进程使用第二服务器中的活动进程使用过的硬件资源,同时第一服务器中的热备进程使用第一服务器中的活动进程使用过的硬件资源,两个服务器通过相互交互硬件资源,从而使热备进程可以间接使用活动进程使用过的硬件资源。在步骤S202中,4企测活动进程的状态,当活动进程的状态处于停止状态时,则执行步骤S203,否则继续检测活动进程的状态。当活动进程或者活动进程所依赖的运行环境发生了故障时,需要停止该活动进程,此时,活动进程的状态即为停止状态;当基于维护的原因,需要停止活动进程时,活动进程的状态即为停止状态,当然导致活动进程的状态为停止状态的原因还可以是现有技术中的其他原因,在此不——例举。检测活动进程的状态的方法可以是消费者主动的检测活动进程的状态,也可以是消费者被动的检测活动进程的状态。消费者可以通过向活动进程发送服务请求,并在预设的时间内未收到活动进程的响应消息时,则主动认为活动进8程处于停止状态。或者通过其他管理进程;险测活动进程的状态,当发现活动进程处于停止状态时,通知消费者,使消费者被动;f企测到活动进程处于停止状态。在步骤S203中,热备进程开始为消费者提供服务。请参阅图7,当消费者主动检测到活动进程处于停止状态,或者消费者被动监测到活动进程处于停止状态时,消费者将未完成的服务请求以及后续的服务请求转至热备进程,热备进程接收并处理消费者的服务请求,开始为消费者提供服务。其中消费者可以通过如下方式将未完成的服务请求以及后续的服务请求转至热备进程消费者通过配置文件得到热备进程的服务端口,然后与其建立通讯,后续的服务请求都通过这个通讯管道交由热备进程完成。如果要重新执行未完成的服务请求,消费者需要事先记录未完成的服务请求,在活动进程停止后,将其交由热备进程重新执行。由于热备进程开始为消费者提供服务,因此热备进程转化成活动进程,此时,为了进一步保证软件系统的可用性,在本发明另一实施例中,该方法还包括下述步骤在步骤S204中,重新启动一热备进程,该热备进程和当前活动进程的运行用的全部或者部分vf更件资源,如CPU计算资源等。当活动进程处于停止状态时,为了简化可用性的实现方法,在本发明另一实施例中,该方法还包括下述步骤启动一用于接收消费者的服务请求,并将接收的服务请求转发至活动进程,同时将活动进程的响应信息返回至消费者的代理进程,其效果如图8所示。在本发明另一实施例中,该代理进程还用于^r测活动进程的状态,并在才企测到活动进程的状态为停止状态时,将接收的服务请求转发至热备进程,使热备进程转化为活动进程。为了避免由于代理进程发生故障而降低软件系统的可用性,在本发明另一实施例中,该方法还包括下述步骤在启动一代理进程的同时,启动一热备代理进程。其效果如图9所示。检测代理进程的状态,当代理进程的状态处于停止状态时,热备代理进程接收消费者的服务请求,并将接收的服务请求转发至活动进程。此时热备代理进程转化成代理进程,为了进一步保证软件系统的可用性,在本发明另一实施例中,该方法还包括下述步骤重新启动一热备代理进程。以下以企业应用套件(EnterpriseApplicationSuite,EAS)为例,对本发明实施例提供的实现高可用性的方法进行详细的说明,其中EAS是一套基于J2EE技术的企业管理软件,采用TCP/IP协议作为通讯协议。请参阅图10,其中EAS客户机相当于消费者,其安装有EAS客户端程序。EAS客户机接收业务操作人员的指令,并将其转换成服务请求,发送给EAS应用服务器,并将EAS应用服务器返回的结果通过某种方式展现出来。EAS客户机和EAS应用服务器之间通过HTTP协议以及RPC协议进行通信。其中RPC协议是一种基于TCP协议的自定义协议。集群控制器(ClusterController,CC)相当于代理进程,其接收EAS客户机的服务请求,并将接收的服务请求转发给后端的某个EAS服务器节点(相当于活动进程)处理,同时将EAS服务器节点返回的结果返回给EAS客户机。集群控制器通过两个监听端口,一个HTTP端口(如80)和一个TCP端口(如11034),与EAS客户机进行通讯。集群控制器通过配置文件得知后端的EAS服务器节点及热备EAS服务器节点的监听端口信息,以便将客户端的服务请求通过正确的端口和后端的EAS服务器节点通讯。同时集群控制器检测EAS服务器节点的状态,当EAS服务器节点处于停止状态(如进程消失等)时,通知EAS进程管理器重启发生故障的EAS服务器节点,并将后续的服务请求转给热备EAS服务器节点(相当于热备进程)处理,此时,热备EAS服务器节点就转化成了活动的EAS服务器节点(相当于活动进程)。热备集群控制器相当于热备进程。为了实现对EAS客户端的透明,热备集群控制器和集群控制器监听同样的两个端口,一个HTTP端口(如80)和一个TCP端口(如11034)。但由于TCP协议本身的约束,热备集群控制器不可能和集群控制器同时监听一样的端口。此时,热备集群控制器建立一个到集群控制器的TCP连接(11034端口),称之为心跳连接,并定期发送检测数据以确定集群控制器仍然存活。一,测到集群控制器已经无法工作,热备集群控制器通知EAS进程管理器停止集群控制器,并立即开始监听80和11034端口,此时,热备集群控制器的状态从阻塞状态(等待80和11034端口释放)变为就绪状态,进而转化为活动状态。EAS服务器节点相当于活动进程,其通过两个监听端口(假定端口号为81和11035)接收并处理来自消费者(消费者为集群控制器或者EAS客户机)的服务请求,并将结果返回给消费者。在EAS服务器节点中,维护有一个健康度指标,用于表示该EAS服务器节点的健康状态,集群控制器定期获取EAS服务器节点的健康状态,如果发现健康状态恶化,集群控制器将通知EAS进程管理器重启EAS服务器节点。热备EAS服务器节点相当于热备进程,热备EAS服务器节点监听两个和EAS服务器节点不一样的端口(假定端口号为82和11036),监听不同端口的目的是让热备EAS服务器节点处于可立即提供服务的就绪状态,而EAS客户机并不需要知道这两个端口号。EAS进程管理器接收来自集群控制器或者热备集群控制器的指令,停止或者启动集群控制器、热备集群控制器、EAS服务器节点、热备EAS服务器节点。当EAS进程管理器检测到两个集群控制器都消失的时候,会主动重新启动一个集群控制器实例。以下详细说明采用本发明实施例提供的实现高可用性的方法在EAS中的应用。在本示例中,在启动集群控制器时,启动热备集群控制器,并在启动EAS服务器节点时,启动热备EAS服务器节点。请参阅图ll,当EAS服务器节点发生故障时,采用本发明实施例提供的实现高可用性的方法如下所述①、EAS服务器节点发生故障。其中发生故障的原因可能是进程消失或者健康状态恶化,如果由于EAS服务器节点健康状态恶化而导致EAS服务器节点发生故障,则集群控制器通知EAS进程管理器停止此进程。②、集群控制器检测到EAS服务器节点发生故障时,中断与EAS客户机连接,以使EAS客户机检测到发生了故障。③集群控制器通知EAS进程管理器重启发生故障的EAS服务器节点。发生故障的EAS服务器节点重启后,自动成为热备EAS服务器节点。④、EAS客户机检测到其与集群控制器之间的通讯被中断。其检测方式可以是集群服务器中断与EAS客户机之间的通讯时,通过通讯协议实现机制通知EAS客户端,从而EAS客户机检测到其与集群控制器之间的通讯被中断,也可以是客户端提交服务请求时,检测到已经无法与集群控制器进行通讯,从而检测到其与集群服务器之间的通讯被中断。、EAS客户机重新连接应用服务器并认证。在EAS客户机重新连接服务器时,包括认证、状态信息重建等操作,如果有被中断的服务请求,则重新提交被中断的服务请求。、集群控制器将EAS客户机的连接转向热备EAS服务器节点,并将后续的所有服务请求转移到热备EAS服务器节点处理。请参阅图12,当集群控制器发生故障时,采用本发明实施例提供的实现高可用性的方法如下所述①、集群控制器发生故障。故障的原因可能是进程消失或者集群控制器的健康状态恶化,当集群控制器的健康状态恶化时,热备集群控制器通知EAS进程管理器停止此进程。②、EAS客户积4企测到故障。EAS客户机检测到故障的方式可以是通讯协议实现机制通知客户机程序连接已经中断,也可以是客户端尝试提交服务请求时,发现已经无法通讯。③、热备集群控制器检测到故障,立即开始监听集群控制器监听的端口(如80端口和11034端口),此时热备集群控制器成为活动进程。④、热备集群控制器通知EAS进程管理器重启一个新的集群控制器实例。⑤、新的集群控制器实例建立心跳连接,进入热备状态,此时,新启动的集群控制器实例则变为热备集群控制器。、EAS客户机尝试重新连接并自动转到热备集群控制器。由于热备控制器接管了集群控制器的相应端口,所以后续服务请求都由热备集群控制器处理。使用本发明实施例提供的实现高可用性的方法后,在单台应用服务器场景下,EAS可用性的提升程度如下表所示<table>tableseeoriginaldocumentpage13</column></row><table>其中单服务器集群可用性比率是在假定单节点所具备的可用性基础上通过理论计算所得。未考虑人为错误、病毒、硬件故障、自然灾害等因素的影响。单节点模式需要人工干预,所以故障恢复时间还要包括人工消耗。而高可用集群模式下,故障是自动检测和恢复的,故障恢复时间=程序启动时间。图13示出了本发明实施例提供的实现高可用性的系统的结构示意,为了便于说明,仅示出了与本发明实施例相关的部分。该实现高可用性的系统可以是内置于实现高可用性的设备中的软件单元、硬件单元或者软硬件相结合的单元,也可以作为独立的挂件集成到实现高可用性的设备中或者运行于实现高可用性的设备的应用系统中,其中进程启动单元131启动一为消费者提供服务的活动进程,同时启动一热备一种进程启动方式。在本发明实施例中,进程启动单元131启动的热备进程可以通过直接或者间接的方式使用活动进程运行期间所使用的全部或者部分硬件资源,如CPU计算资源等。其具体包括活动进程和热备进程运行在同一操作系统中,或者活动进程和热备进程分别运行于由虚拟技术虚拟出的多个逻辑服务器中,且每个逻辑服务器占用的硬件资源可以通过虚拟技术随时任意的再分配给其他的逻辑服务器。代理进程启动单元132启动一用于检测所述活动进程的状态的代理进程。在本发明另一实施例中,该代理进程还用于接收消费者的服务请求,并将接收的服务请求转发至活动进程,同时将活动进程的响应信息返回至消费者,其效果如图8所示。当代理进程检测到活动进程的状态为停止状态时,将接收的服务请求转发至热备进程,使热备进程转化为活动进程。进程控制单元133在代理进程;险测到活动进程的健康状态处于恶化状态时,控制进程启动单元停止活动进程。由于热备进程开始为消费者提供服务,因此热备进程变成了活动进程,此时,为了进一步保证软件系统的可用性,在本发明另一实施例中,进程控制单元133在代理进程检测到活动进程处于停止状态时,控制进程启动单元131重新启动一热备进程。该热备进程与当前活动进程的运行环境如下热备进程可资源,如CPU计算资源等。也可以通过运行热备进程的服务器与运行活动进程的服务器相互交换硬件资源,来达到热备进程间接的使用活动进程运行期间使用过的硬件资源。14为了避免由于代理进程发生故障而P争低软件系统的可用性,在本发明另一实施例中,该代理进程启动单元132在启动代理进程的同时,启动一热备代理进程。当代理进程处于停止状态时,热备代理进程接收消费者的服务请求,并将接收的服务请求转发至活动进程,同时将活动进程的响应信息返回至消费者。同时热备代理进程检测活动进程的状态,并在检测到活动进程的状态为停止状态时,将接收的服务请求转发至热备进程。在本发明另一实施例中,当代理进程的健康状态处于恶化状态时,进程控制单元133控制代理进程启动单元132停止代理进程。在本发明另一实施例中,当代理进程处于停止状态时,进程控制单元133控制代理进程启动单元132重新启动一热备代理进程。在本发明实施例中,通过在启动活动进程的同时启动热备进程,从而当活动进程发生故障时,可以及时的将服务请求转至热备进程,由热备进程提供服务,从而减少了故障恢复时间,提高了系统整体的可用性;由于热备进程直接用了已有资源,降^f氐了成本,同时在单一才喿作系统环境下,实现了高可用性。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。权利要求1、一种实现高可用性的方法,其特征在于,所述方法包括下述步骤在启动一为消费者提供服务的活动进程的同时,启动一热备进程;检测所述活动进程的状态;当所述活动进程的状态处于停止状态时,所述热备进程开始为消费者提供服务。2、如权利要求l所述的方法,其特征在于,在所述当活动进程的状态处于停止状态时,热备进程开始为消费者提供服务的步骤之后,所述方法还包括重新启动一热备进程。3、如权利要求l所述的方法,其特征在于,所述方法还包括启动一用于接收消费者的服务请求,并将接收的服务请求转发至活动进程,同时将活动进程的响应信息返回至消费者的代理进程。4、如权利要求3所述的方法,其特征在于,所述方法还包括检测所述代理进程的状态;当所述代理进程的状态处于停止状态时,所述热备代理进程接收消费者的服务请求,并将接收的服务请求转发至活动进程,同时将活动进程的响应信息返回至消费者。5、如权利要求4所述的方法,其特征在于,在所述当所述代理进程的状态处于停止状态时,所述热备代理进程接收消费者的服务请求,并将接收的服务请求转发至活动进程,同时将活动进程的响应信息返回至消费者的步骤之后,所述方法还包括重新启动一热备代理进程。6、如权利要求1至5任一权利要求所述的方法,其特征在于,所述热备进7、如权利要求6所述的方法,其特征在于,所述热备进程与所述活动进程运行于同一操作系统中。下8、如权利要求6所述的方法,其特征在于,所述热备进程与所述活动进程运行于多个不同的虚拟操作系统中,且在操作系统运行期间,多个不同的操作系统占用的硬件资源可重新分配。9、如权利要求6所述的方法,其特征在于,运行所述热备进程的服务器与运行所述活动进程的服务器相互交换硬件资源。10、一种实现高可用性的系统,其特征在于,所述系统包括进程启动单元,用于在启动一为消费者提供服务的活动进程的同时,启动一热备进程,所述热备进程在所述活动进程处于停止状态时,为消费者提供服务;代理进程启动单元,用于启动一用于;f企测所述活动进程的状态的代理进程。11、如权利要求IO所述的系统,其特征在于,所述代理进程还用于接收消费者的服务请求,将接收的服务请求转发至活动进程,并将活动进程的响应信息返回至消费者,同时所述代理进程在4全测到所述活动进程处于停止状态时,将接收的服务请求转发至热备进程。12、如权利要求IO所述的系统,其特征在于,所述系统还包括进程控制单元,用于在所述代理进程检测到所述活动进程处于停止状态时,控制所述进程启动单元重新启动一热备进程。13、如权利要求IO所述的系统,其特征在于,所述代理进程启动单元还用于在启动一代理进程的同时,启动一热备代理进程,所述热备代理进程在所述代理进程处于停止状态时,接收消费者的服务请求,将接收的服务请求转发至活动进程,并将活动进程的响应信息返回至消费者,同时4企测活动进程的状态。14、如权利要求12所述的系统,其特征在于,在所述代理进程处于停止状态时,所述进程控制单元还用于控制所述代理进程启动单元重新启动一热备代理进程。15、一种包括权利要求10至14任一权利要求所述的实现高可用性的系统的实现高可用性的设备。全文摘要本发明适用于计算机领域,提供了一种实现高可用性的方法、系统及设备,所述方法包括下述步骤在启动一为消费者提供服务的活动进程的同时,启动一热备进程;检测所述活动进程的状态;当所述活动进程的状态处于停止状态时,所述热备进程开始为消费者提供服务。在本发明实施例中,通过在启动活动进程的同时启动热备进程,从而当活动进程发生故障时,可以及时的将服务请求转至热备进程,由热备进程提供服务,从而减少了故障恢复时间,提高了系统整体的可用性。同时本发明实施例可以满足单服务器环境下的高可用性需求。文档编号H04L12/24GK101442437SQ20081021714公开日2009年5月27日申请日期2008年10月31日优先权日2008年10月31日发明者钧陈申请人:金蝶软件(中国)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1