CN105653328A - 大内存服务的多版本程序的并存方法和装置 - Google Patents
大内存服务的多版本程序的并存方法和装置 Download PDFInfo
- Publication number
- CN105653328A CN105653328A CN201511020949.9A CN201511020949A CN105653328A CN 105653328 A CN105653328 A CN 105653328A CN 201511020949 A CN201511020949 A CN 201511020949A CN 105653328 A CN105653328 A CN 105653328A
- Authority
- CN
- China
- Prior art keywords
- program
- version
- edition
- request
- server
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44536—Selecting among different versions
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
- Stored Programmes (AREA)
Abstract
本发明提出一种大内存服务的多版本程序的并存方法和装置,包括:部署第一副本的服务器接收客户端发送的第一请求,所述第一请求中携带由第一版本的程序处理所述第一请求的标记;将所述第一请求转发给第一版本的程序进行处理,确定所述第一版本的程序发生异常;向所述客户端发送通知,以使所述客户端向部署第二副本的服务器发送第二请求,所述第二请求中携带由第二版本的程序处理所述第二请求的标记,由部署第二副本的服务器将所述第二请求转发给第二版本的程序进行处理,所述第一版本为所述第二版本的更新版本。对于需要使用多版本来进行发布或实验的大内存服务,本发明可以在不增加机器成本情况下有效提高服务可用性。
Description
技术领域
本发明涉及互联网技术领域,尤其涉及一种大内存服务的多版本程序的并存方法和装置。
背景技术
在要求高可用的大内存服务上,多版本程序并存的稳定性,会受到硬件和软件异常,以及升级变更等多方面因素的影响。硬件异常,包括单机网卡或磁盘故障,网络交换机故障等;软件异常,包括新增代码未捕获异常,或者非法访问内存等。升级变更影响,包括服务重新启动造成的计划性停机等。特别地,对于大内存服务,在服务器(内存)资源受限的情况下,无法通过部署更多副本提供可用性;故障恢复时间,也会因异常后内存转储,服务重启初始化等环节而延长。通常,网络服务程序,都会通过配置客户端请求重试提高可用性,但是当重试的请求仍由有相同问题的版本处理时,反而会导致故障传播,以致减少系统中可用的副本数量,降低服务可用性。
发明内容
本发明的目的旨在至少在一定程度上解决相关技术中的技术问题之一。
为此,本发明的第一个目的在于提出一种大内存服务的多版本程序的并存方法。对于需要使用多版本来进行发布或实验的大内存服务,该方法可以在不增加机器成本情况下有效提高服务可用性。
本发明的第二个目的在于提出一种大内存服务的多版本程序的并存装置。
为了实现上述目的,本发明第一方面实施例的大内存服务的多版本程序的并存方法,包括:部署第一副本的服务器接收客户端发送的第一请求,所述第一请求中携带由第一版本的程序处理所述第一请求的标记;将所述第一请求转发给第一版本的程序进行处理,确定所述第一版本的程序发生异常;向所述客户端发送通知,以通知所述客户端所述第一版本的程序发生异常,以使所述客户端向部署第二副本的服务器发送第二请求,所述第二请求中携带由第二版本的程序处理所述第二请求的标记,由部署第二副本的服务器将所述第二请求转发给第二版本的程序进行处理,所述第一版本为所述第二版本的更新版本。
本发明实施例的大内存服务的多版本程序的并存方法中,部署第一副本的服务器接收客户端发送的第一请求之后,将上述第一请求转发给第一版本的程序进行处理,确定上述第一版本的程序发生异常,然后向上述客户端发送通知,以通知上述客户端所述第一版本的程序发生异常,以使上述客户端向部署第二副本的服务器发送第二请求,由部署第二副本的服务器将上述第二请求转发给第二版本的程序进行处理,上述第一版本为上述第二版本的更新版本,从而可以将多版本程序等比例的部署到所有副本服务器,通过集群规模避免了故障迁移时小集群的单点问题,对于需要使用多版本来进行发布或实验的大内存服务,可以在不增加机器成本情况下有效提高服务可用性。
为了实现上述目的,本发明第二方面实施例的大内存服务的多版本程序的并存方法,包括:客户端向部署第一副本的服务器发送第一请求,所述第一请求中携带由第一版本的程序处理所述第一请求的标记;接收部署第一副本的服务器发送的通知,所述通知是部署第一副本的服务器在将所述第一请求转发给第一版本的程序进行处理,确定所述第一版本的程序发生异常之后发送的,用于通知所述客户端所述第一版本的程序发生异常;向部署第二副本的服务器发送第二请求,所述第二请求中携带由第二版本的程序处理所述第二请求的标记,以使部署第二副本的服务器将所述第二请求转发给第二版本的程序进行处理,所述第一版本为所述第二版本的更新版本。
本发明实施例的大内存服务的多版本程序的并存方法中,客户端向部署第一副本的服务器发送第一请求之后,接收部署第一副本的服务器发送的通知,上述通知是部署第一副本的服务器在将第一请求转发给第一版本的程序进行处理,确定上述第一版本的程序发生异常之后发送的,用于通知上述客户端上述第一版本的程序发生异常,然后客户端向部署第二副本的服务器发送第二请求,以使部署第二副本的服务器将上述第二请求转发给第二版本的程序进行处理,上述第一版本为上述第二版本的更新版本,从而可以将多版本程序等比例的部署到所有副本服务器,通过集群规模避免了故障迁移时小集群的单点问题,对于需要使用多版本来进行发布或实验的大内存服务,可以在不增加机器成本情况下有效提高服务可用性。
为了实现上述目的,本发明第三方面实施例的大内存服务的多版本程序的并存装置,设置在部署第一副本的服务器中,所述大内存服务的多版本程序的并存装置包括:接收模块,用于接收客户端发送的第一请求,所述第一请求中携带由第一版本的程序处理所述第一请求的标记;转发模块,用于将所述接收模块接收的第一请求转发给第一版本的程序进行处理;确定模块,用于确定所述第一版本的程序发生异常;发送模块,用于向所述客户端发送通知,以通知所述客户端所述第一版本的程序发生异常,以使所述客户端向部署第二副本的服务器发送第二请求,所述第二请求中携带由第二版本的程序处理所述第二请求的标记,由部署第二副本的服务器将所述第二请求转发给第二版本的程序进行处理,所述第一版本为所述第二版本的更新版本。
本发明实施例的大内存服务的多版本程序的并存装置中,接收模块接收客户端发送的第一请求之后,转发模块将上述第一请求转发给第一版本的程序进行处理,确定模块确定上述第一版本的程序发生异常,然后发送模块向上述客户端发送通知,以通知上述客户端所述第一版本的程序发生异常,以使上述客户端向部署第二副本的服务器发送第二请求,由部署第二副本的服务器将上述第二请求转发给第二版本的程序进行处理,上述第一版本为上述第二版本的更新版本,从而可以将多版本程序等比例的部署到所有副本服务器,通过集群规模避免了故障迁移时小集群的单点问题,对于需要使用多版本来进行发布或实验的大内存服务,可以在不增加机器成本情况下有效提高服务可用性。
为了实现上述目的,本发明第四方面实施例的大内存服务的多版本程序的并存装置,包括:发送模块,用于向部署第一副本的服务器发送第一请求,所述第一请求中携带由第一版本的程序处理所述第一请求的标记;接收模块,用于接收部署第一副本的服务器发送的通知,所述通知是部署第一副本的服务器在将所述第一请求转发给第一版本的程序进行处理,确定所述第一版本的程序发生异常之后发送的,用于通知所述客户端所述第一版本的程序发生异常;所述发送模块,还用于向部署第二副本的服务器发送第二请求,所述第二请求中携带由第二版本的程序处理所述第二请求的标记,以使部署第二副本的服务器将所述第二请求转发给第二版本的程序进行处理,所述第一版本为所述第二版本的更新版本。
本发明实施例的大内存服务的多版本程序的并存装置中,发送模块向部署第一副本的服务器发送第一请求之后,接收模块接收部署第一副本的服务器发送的通知,上述通知是部署第一副本的服务器在将第一请求转发给第一版本的程序进行处理,确定上述第一版本的程序发生异常之后发送的,用于通知上述客户端上述第一版本的程序发生异常,然后发送模块向部署第二副本的服务器发送第二请求,以使部署第二副本的服务器将上述第二请求转发给第二版本的程序进行处理,上述第一版本为上述第二版本的更新版本,从而可以将多版本程序等比例的部署到所有副本服务器,通过集群规模避免了故障迁移时小集群的单点问题,对于需要使用多版本来进行发布或实验的大内存服务,可以在不增加机器成本情况下有效提高服务可用性。
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为本发明大内存服务的多版本程序的并存方法一个实施例的流程图;
图2为本发明大内存服务的多版本程序的并存方法中不同版本的计算代码共享数据进程一个实施例的示意图;
图3为本发明大内存服务的多版本程序的并存方法中多版本部署升级一个实施例的示意图;
图4为本发明大内存服务的多版本程序的并存方法另一个实施例的流程图;
图5为本发明大内存服务的多版本程序的并存装置一个实施例的结构示意图;
图6为本发明大内存服务的多版本程序的并存装置另一个实施例的结构示意图;
图7为本发明大内存服务的多版本程序的并存装置再一个实施例的结构示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。相反,本发明的实施例包括落入所附加权利要求书的精神和内涵范围内的所有变化、修改和等同物。
图1为本发明大内存服务的多版本程序的并存方法一个实施例的流程图,如图1所示,上述大内存服务的多版本程序的并存方法可以包括:
步骤101,部署第一副本的服务器接收客户端发送的第一请求,上述第一请求中携带由第一版本的程序处理上述第一请求的标记。
步骤102,将上述第一请求转发给第一版本的程序进行处理,确定上述第一版本的程序发生异常。
步骤103,向上述客户端发送通知,以通知上述客户端第一版本的程序发生异常,以使上述客户端向部署第二副本的服务器发送第二请求,上述第二请求中携带由第二版本的程序处理上述第二请求的标记,由部署第二副本的服务器将上述第二请求转发给第二版本的程序进行处理,上述第一版本为上述第二版本的更新版本。
本实施例中,部署第一副本的服务器和部署第二副本的服务器中均部署第一版本的程序和第二版本的程序。其中,第二版本的程序为稳定版本的程序,第一版本为第二版本的更新版本。
本实施例中,部署第一副本的服务器确定第一版本的程序发生异常之后,部署第一副本的服务器中的转发进程可以通过断开连接将第一版本的程序发生异常的事件通知客户端。
客户端获知第一版本的程序发生异常之后,向部署第二副本的服务器发送第二请求,上述第二请求中携带由第二版本的程序处理上述第二请求的标记,由于第二版本的程序为稳定版本的程序,因此可以通过客户端在重试时指定稳定版本的程序,阻止故障通过重试传导到更大范围,并且可以通过将所有需要并存的版本一起部署,由集群规模保证故障迁移避免了小集群的单点问题。
进一步地,上述部署第一副本的服务器将上述第一版本的程序和上述第二版本的程序所需的数据取并集,并将上述第一版本的程序和上述第二版本的程序所需数据的并集加载到数据进程中。
并且,部署第一副本的服务器中部署的第一版本或第二版本的程序在运行时,根据各自的配置使用上述数据进程中加载的数据。
也就是说,本实施例中,不同版本的计算代码独立成单独进程运行,同时共享数据。不同版本的计算代码共享数据进程,如图2所示,图2为本发明大内存服务的多版本程序的并存方法中不同版本的计算代码共享数据进程一个实施例的示意图;
图2中以第一版本为版本y,第二版本为版本x为例进行说明。
参见图2,首先将版本x的程序和版本y的程序所需的数据取并集,然后将版本x的程序和版本y的程序所需数据的并集加载到单独的数据进程中。通常情况下,计算部分的代码改动频繁,执行导致异常会导致进程退出,初始化速度较快,而数据部分的代码相对稳定,但重新初始化速度较慢。本实施例将计算和数据独立成不同进程后,当计算进程出现故障时,数据进程不需要重新初始化,从而可以使不可服务时间大大缩短。
在版本x的程序和版本y的程序分别启动独立进程之后,可以分别根据自身配置使用数据进程中加载的数据。这样,可以实现将不同版本程序的计算逻辑隔离在不同的进程空间里,当更新版本的不稳定代码发生异常时,不会导致稳定版本的程序也不可服务,在客户端重试时,稳定版本就可以保证足够的可用副本来处理请求,从而可以实现版本运行异常时,通过隔离和共享技术,减少故障影响范围,提高恢复速度,保证服务可用性。
本实施例中,部署第一副本的服务器中第一版本的程序和第二版本的程序分别在不同的槽位上启动,上述槽位为部署第一副本的服务器中的版本容器。
其中,上述第二版本的程序可以在第一槽位上启动,上述第一版本的程序可以在第二槽位上启动;进一步地,上述大内存服务的多版本程序的并存方法还可以包括:
当上述第一版本的程序升级到第三版本时,部署第一副本的服务器将上述第二版本的程序和上述第三版本的程序加载到运行环境中;在上述第一槽位上启动上述第二版本的程序新的运行进程,确定上述第二版本的程序新的运行进程运行正常之后,将标记由第二版本的程序处理的请求转发到第二版本的程序新的运行进程,并停止第二版本的程序旧的运行进程;以及在上述第二槽位上启动第三版本的程序新的运行进程,确定第三版本的程序新的运行进程运行正常之后,将标记由第三版本的程序处理的请求转发到第三版本的程序新的运行进程,并停止第三版本的程序旧的运行进程。
需要说明的是,上述第二版本的程序新的运行进程与上述第二版本的程序旧的运行进程使用不同的服务端口,同样,上述第三版本的程序新的运行进程与上述第三版本的程序旧的运行进程使用不同的服务端口。
本实施例中,热升级要求部署新版本过程中服务不中断,通过上述共享技术可以解决内存对并行服务的限制,同时需要对端口进行管理避免端口冲突。本实施例使用全流量发布方式进行多版本服务的部署。
参见图3,图3为本发明大内存服务的多版本程序的并存方法中多版本部署升级一个实施例的示意图,图3以第一版本为版本y,第二版本为版本x,第三版本为版本y1,第一槽位为槽位0,第二槽位为槽位1为例进行说明。
如图3所示,在槽位0启动版本x,槽位1启动版本y;版本x和版本y,不直接对客户端提供服务,通过转发进程进行代理。
当槽位1上启动的版本y升级到版本y1时,通过发布平台,将版本x和版本y1合并成一个部署包,分发到各个单机上执行升级命令。
于是部署第一副本的服务器可以先将版本x和版本y1加载到运行环境中,然后在槽位0上启动版本x的新的运行进程a1,确定新的运行进程a1可正常服务之后,将透明代理上访问版本x的请求转发到a1中,并停止版本x的旧的运行进程a。
在槽位1上启动版本y1的新的运行进程b1,确定新的运行进程b1可正常服务之后,将透明代理上访问版本y1的请求转发到b1中,并停止旧的运行进程b。
上述过程中,新旧运行进程需要使用不同的服务端口,避免同时服务期间本地端口冲突。
本实施例对客户端屏蔽新旧版本更新时的端口变化,通过并行服务保障切换过程,使得服务不中断,可以保持高可用性。另外,通过透明代理和热升级管理,客户端不会感知到旧版本停止和新版本启动的过程。
上述大内存服务的多版本程序的并存方法中,部署第一副本的服务器接收客户端发送的第一请求之后,将上述第一请求转发给第一版本的程序进行处理,确定上述第一版本的程序发生异常,然后向上述客户端发送通知,以通知上述客户端所述第一版本的程序发生异常,以使上述客户端向部署第二副本的服务器发送第二请求,由部署第二副本的服务器将上述第二请求转发给第二版本的程序进行处理,上述第一版本为上述第二版本的更新版本,从而可以将多版本程序等比例的部署到所有副本服务器,通过集群规模避免了故障迁移时小集群的单点问题;在版本运行异常时,通过隔离和共享技术,可以减少故障影响范围,提高恢复速度,保证服务可用性;在版本升级过程中,通过透明代理和热升级管理技术,保证服务可用性。综上所述,对于需要使用多版本来进行发布或实验的大内存服务,上述大内存服务的多版本程序的并存方法可以在不增加机器成本情况下有效提高服务可用性。
图4为本发明大内存服务的多版本程序的并存方法另一个实施例的流程图,如图4所示,上述大内存服务的多版本程序的并存方法可以包括:
步骤401,客户端向部署第一副本的服务器发送第一请求,上述第一请求中携带由第一版本的程序处理上述第一请求的标记。
步骤402,接收部署第一副本的服务器发送的通知,上述通知是部署第一副本的服务器在将上述第一请求转发给第一版本的程序进行处理,确定上述第一版本的程序发生异常之后发送的,用于通知上述客户端上述第一版本的程序发生异常。
本实施例中,部署第一副本的服务器确定第一版本的程序发生异常之后,部署第一副本的服务器中的转发进程可以通过断开连接将第一版本的程序发生异常的事件通知客户端。
步骤403,向部署第二副本的服务器发送第二请求,上述第二请求中携带由第二版本的程序处理第二请求的标记,以使部署第二副本的服务器将上述第二请求转发给第二版本的程序进行处理,上述第一版本为上述第二版本的更新版本。
本实施例中,客户端获知第一版本的程序发生异常之后,可以向部署第二副本的服务器发送第二请求,上述第二请求中携带由第二版本的程序处理上述第二请求的标记,由于第二版本的程序为稳定版本的程序,因此可以通过客户端在重试时指定稳定版本的程序,阻止故障通过重试传导到更大范围,并且可以通过将所有需要并存的版本一起部署,由集群规模保证故障迁移避免了小集群的单点问题。
本实施例中,部署第一副本的服务器和部署第二副本的服务器中均部署第一版本的程序和第二版本的程序。其中,第二版本的程序为稳定版本的程序,第一版本为第二版本的更新版本。
上述大内存服务的多版本程序的并存方法中,客户端向部署第一副本的服务器发送第一请求之后,接收部署第一副本的服务器发送的通知,上述通知是部署第一副本的服务器在将第一请求转发给第一版本的程序进行处理,确定上述第一版本的程序发生异常之后发送的,用于通知上述客户端上述第一版本的程序发生异常,然后客户端向部署第二副本的服务器发送第二请求,以使部署第二副本的服务器将上述第二请求转发给第二版本的程序进行处理,上述第一版本为上述第二版本的更新版本,从而可以将多版本程序等比例的部署到所有副本服务器,通过集群规模避免了故障迁移时小集群的单点问题,对于需要使用多版本来进行发布或实验的大内存服务,可以在不增加机器成本情况下有效提高服务可用性。
图5为本发明大内存服务的多版本程序的并存装置一个实施例的结构示意图,上述大内存服务的多版本程序的并存装置设置在部署第一副本的服务器中,可以实现本发明图1所示实施例的流程。
如图5所示,上述大内存服务的多版本程序的并存装置可以包括:接收模块51、转发模块52、确定模块53和发送模块54;
其中,接收模块51,用于接收客户端发送的第一请求,上述第一请求中携带由第一版本的程序处理上述第一请求的标记;
转发模块52,用于将接收模块51接收的第一请求转发给第一版本的程序进行处理;
确定模块53,用于确定上述第一版本的程序发生异常;
发送模块54,用于向上述客户端发送通知,以通知上述客户端上述第一版本的程序发生异常,以使上述客户端向部署第二副本的服务器发送第二请求,上述第二请求中携带由第二版本的程序处理所述第二请求的标记,由部署第二副本的服务器将上述第二请求转发给第二版本的程序进行处理,上述第一版本为上述第二版本的更新版本。
本实施例中,部署第一副本的服务器和部署第二副本的服务器中均部署第一版本的程序和第二版本的程序。其中,第二版本的程序为稳定版本的程序,第一版本为第二版本的更新版本。
本实施例中,确定模块53确定第一版本的程序发生异常之后,部署第一副本的服务器中的转发进程可以通过断开连接将第一版本的程序发生异常的事件通知客户端。
客户端获知第一版本的程序发生异常之后,向部署第二副本的服务器发送第二请求,上述第二请求中携带由第二版本的程序处理上述第二请求的标记,由于第二版本的程序为稳定版本的程序,因此可以通过客户端在重试时指定稳定版本的程序,阻止故障通过重试传导到更大范围,并且可以通过将所有需要并存的版本一起部署,由集群规模保证故障迁移避免了小集群的单点问题。
图6为本发明大内存服务的多版本程序的并存装置另一个实施例的结构示意图,与图5所示的大内存服务的多版本程序的并存装置相比,不同之处在于,图6所示的大内存服务的多版本程序的并存装置还可以包括:加载模块55;
加载模块55,用于将上述第一版本的程序和上述第二版本的程序所需的数据取并集,并将上述第一版本的程序和上述第二版本的程序所需数据的并集加载到数据进程中。
并且,部署第一副本的服务器中部署的第一版本或第二版本的程序在运行时,根据各自的配置使用上述数据进程中加载的数据。
也就是说,本实施例中,不同版本的计算代码独立成单独进程运行,同时共享数据。不同版本的计算代码共享数据进程,如图2所示。
图2中以第一版本为版本y,第二版本为版本x为例进行说明。
参见图2,首先,加载模块55将版本x的程序和版本y的程序所需的数据取并集,然后将版本x的程序和版本y的程序所需数据的并集加载到单独的数据进程中。通常情况下,计算部分的代码改动频繁,执行导致异常会导致进程退出,初始化速度较快,而数据部分的代码相对稳定,但重新初始化速度较慢。本实施例将计算和数据独立成不同进程后,当计算进程出现故障时,数据进程不需要重新初始化,从而可以使不可服务时间大大缩短。
在版本x的程序和版本y的程序分别启动独立进程之后,可以分别根据自身配置使用数据进程中加载的数据。这样,可以实现将不同版本程序的计算逻辑隔离在不同的进程空间里,当更新版本的不稳定代码发生异常时,不会导致稳定版本的程序也不可服务,在客户端重试时,稳定版本就可以保证足够的可用副本来处理请求,从而可以实现版本运行异常时,通过隔离和共享技术,减少故障影响范围,提高恢复速度,保证服务可用性。
本实施例中,部署第一副本的服务器中第一版本的程序和第二版本的程序分别在不同的槽位上启动,上述槽位为部署第一副本的服务器中的版本容器。
其中,上述第二版本的程序可以在第一槽位上启动,上述第一版本的程序可以在第二槽位上启动;
进一步地,上述大内存服务的多版本程序的并存装置还可以包括:加载模块55、启动模块56和停止模块57;
加载模块55,用于当第一版本的程序升级到第三版本时,将第二版本的程序和第三版本的程序加载到运行环境中;
启动模块56,用于在第一槽位上启动第二版本的程序新的运行进程;以及在第二槽位上启动第三版本的程序新的运行进程;
转发模块52,用于在确定模块53确定第二版本的程序新的运行进程运行正常之后,将标记由上述第二版本的程序处理的请求转发到第二版本的程序新的运行进程;以及在确定模块53确定上述第三版本的程序新的运行进程运行正常之后,将标记由第三版本的程序处理的请求转发到上述第三版本的程序新的运行进程;
停止模块57,用于停止上述第二版本的程序旧的运行进程;以及停止上述第三版本的程序旧的运行进程。
需要说明的是,上述第二版本的程序新的运行进程与上述第二版本的程序旧的运行进程使用不同的服务端口,同样,上述第三版本的程序新的运行进程与上述第三版本的程序旧的运行进程使用不同的服务端口。
本实施例中,热升级要求部署新版本过程中服务不中断,通过上述共享技术可以解决内存对并行服务的限制,同时需要对端口进行管理避免端口冲突。本实施例使用全流量发布方式进行多版本服务的部署。
参见图3,图3以第一版本为版本y,第二版本为版本x,第三版本为版本y1,第一槽位为槽位0,第二槽位为槽位1为例进行说明。
如图3所示,启动模块56在槽位0启动版本x,槽位1启动版本y;版本x和版本y,不直接对客户端提供服务,通过转发进程进行代理。
当槽位1上启动的版本y升级到版本y1时,通过发布平台,将版本x和版本y1合并成一个部署包,分发到各个单机上执行升级命令。
于是加载模块55可以先将版本x和版本y1加载到运行环境中,然后启动模块56在槽位0上启动版本x的新的运行进程a1,确定模块53确定新的运行进程a1可正常服务之后,转发模块52将透明代理上访问版本x的请求转发到a1中,并由停止模块57停止版本x的旧的运行进程a。
启动模块56在槽位1上启动版本y1的新的运行进程b1,确定模块53确定新的运行进程b1可正常服务之后,转发模块52将透明代理上访问版本y1的请求转发到b1中,并由停止模块57停止旧的运行进程b。
上述过程中,新旧运行进程需要使用不同的服务端口,避免同时服务期间本地端口冲突。
本实施例对客户端屏蔽新旧版本更新时的端口变化,通过并行服务保障切换过程,使得服务不中断,可以保持高可用性。另外,通过透明代理和热升级管理,客户端不会感知到旧版本停止和新版本启动的过程。
上述大内存服务的多版本程序的并存装置中,接收模块51接收客户端发送的第一请求之后,转发模块52将上述第一请求转发给第一版本的程序进行处理,确定模块53确定上述第一版本的程序发生异常,然后发送模块54向上述客户端发送通知,以通知上述客户端所述第一版本的程序发生异常,以使上述客户端向部署第二副本的服务器发送第二请求,由部署第二副本的服务器将上述第二请求转发给第二版本的程序进行处理,上述第一版本为上述第二版本的更新版本,从而可以将多版本程序等比例的部署到所有副本服务器,通过集群规模避免了故障迁移时小集群的单点问题;在版本运行异常时,通过隔离和共享技术,可以减少故障影响范围,提高恢复速度,保证服务可用性;在版本升级过程中,通过透明代理和热升级管理技术,保证服务可用性。综上所述,对于需要使用多版本来进行发布或实验的大内存服务,上述大内存服务的多版本程序的并存方法可以在不增加机器成本情况下有效提高服务可用性。
图7为本发明大内存服务的多版本程序的并存装置再一个实施例的结构示意图,本实施例中的大内存服务的多版本程序的并存装置可以作为客户端,实现本发明图4所示实施例的流程,如图7所示,上述大内存服务的多版本程序的并存装置可以包括:发送模块71和接收模块72;
其中,发送模块71,用于向部署第一副本的服务器发送第一请求,上述第一请求中携带由第一版本的程序处理上述第一请求的标记;
接收模块72,用于接收部署第一副本的服务器发送的通知,上述通知是部署第一副本的服务器在将第一请求转发给第一版本的程序进行处理,确定上述第一版本的程序发生异常之后发送的,用于通知所述客户端上述第一版本的程序发生异常;本实施例中,部署第一副本的服务器确定第一版本的程序发生异常之后,部署第一副本的服务器中的转发进程可以通过断开连接将第一版本的程序发生异常的事件通知客户端。
发送模块71,还用于向部署第二副本的服务器发送第二请求,上述第二请求中携带由第二版本的程序处理所述第二请求的标记,以使部署第二副本的服务器将上述第二请求转发给第二版本的程序进行处理,上述第一版本为上述第二版本的更新版本。
本实施例中,客户端获知第一版本的程序发生异常之后,发送模块71可以向部署第二副本的服务器发送第二请求,上述第二请求中携带由第二版本的程序处理上述第二请求的标记,由于第二版本的程序为稳定版本的程序,因此可以通过客户端在重试时指定稳定版本的程序,阻止故障通过重试传导到更大范围,并且可以通过将所有需要并存的版本一起部署,由集群规模保证故障迁移避免了小集群的单点问题。
本实施例中,部署第一副本的服务器和部署第二副本的服务器中均部署第一版本的程序和第二版本的程序。其中,第二版本的程序为稳定版本的程序,第一版本为第二版本的更新版本。
上述大内存服务的多版本程序的并存装置中,发送模块71向部署第一副本的服务器发送第一请求之后,接收模块72接收部署第一副本的服务器发送的通知,上述通知是部署第一副本的服务器在将第一请求转发给第一版本的程序进行处理,确定上述第一版本的程序发生异常之后发送的,用于通知上述客户端上述第一版本的程序发生异常,然后发送模块71向部署第二副本的服务器发送第二请求,以使部署第二副本的服务器将上述第二请求转发给第二版本的程序进行处理,上述第一版本为上述第二版本的更新版本,从而可以将多版本程序等比例的部署到所有副本服务器,通过集群规模避免了故障迁移时小集群的单点问题,对于需要使用多版本来进行发布或实验的大内存服务,可以在不增加机器成本情况下有效提高服务可用性。
需要说明的是,在本发明的描述中,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(ProgrammableGateArray;以下简称:PGA),现场可编程门阵列(FieldProgrammableGateArray;以下简称:FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
Claims (18)
1.一种大内存服务的多版本程序的并存方法,其特征在于,包括:
部署第一副本的服务器接收客户端发送的第一请求,所述第一请求中携带由第一版本的程序处理所述第一请求的标记;
将所述第一请求转发给第一版本的程序进行处理,确定所述第一版本的程序发生异常;
向所述客户端发送通知,以通知所述客户端所述第一版本的程序发生异常,以使所述客户端向部署第二副本的服务器发送第二请求,所述第二请求中携带由第二版本的程序处理所述第二请求的标记,由部署第二副本的服务器将所述第二请求转发给第二版本的程序进行处理,所述第一版本为所述第二版本的更新版本。
2.根据权利要求1所述的方法,其特征在于,部署第一副本的服务器和部署第二副本的服务器中均部署第一版本的程序和第二版本的程序。
3.根据权利要求2所述的方法,其特征在于,还包括:
所述部署第一副本的服务器将所述第一版本的程序和所述第二版本的程序所需的数据取并集,并将所述第一版本的程序和所述第二版本的程序所需数据的并集加载到数据进程中。
4.根据权利要求3所述的方法,其特征在于,所述部署第一副本的服务器中部署的第一版本或第二版本的程序在运行时,根据各自的配置使用所述数据进程中加载的数据。
5.根据权利要求2-4任意一项所述的方法,其特征在于,所述部署第一副本的服务器中所述第一版本的程序和所述第二版本的程序分别在不同的槽位上启动,所述槽位为所述部署第一副本的服务器中的版本容器。
6.根据权利要求5所述的方法,其特征在于,所述第二版本的程序在第一槽位上启动,所述第一版本的程序在第二槽位上启动;
所述方法还包括:
当所述第一版本的程序升级到第三版本时,所述部署第一副本的服务器将所述第二版本的程序和所述第三版本的程序加载到运行环境中;
在所述第一槽位上启动所述第二版本的程序新的运行进程,确定所述第二版本的程序新的运行进程运行正常之后,将标记由所述第二版本的程序处理的请求转发到所述第二版本的程序新的运行进程,并停止所述第二版本的程序旧的运行进程;
在所述第二槽位上启动所述第三版本的程序新的运行进程,确定所述第三版本的程序新的运行进程运行正常之后,将标记由所述第三版本的程序处理的请求转发到所述第三版本的程序新的运行进程,并停止所述第三版本的程序旧的运行进程。
7.根据权利要求6所述的方法,其特征在于,所述第二版本的程序新的运行进程与所述第二版本的程序旧的运行进程使用不同的服务端口;所述第三版本的程序新的运行进程与所述第三版本的程序旧的运行进程使用不同的服务端口。
8.一种大内存服务的多版本程序的并存方法,其特征在于,包括:
客户端向部署第一副本的服务器发送第一请求,所述第一请求中携带由第一版本的程序处理所述第一请求的标记;
接收部署第一副本的服务器发送的通知,所述通知是部署第一副本的服务器在将所述第一请求转发给第一版本的程序进行处理,确定所述第一版本的程序发生异常之后发送的,用于通知所述客户端所述第一版本的程序发生异常;
向部署第二副本的服务器发送第二请求,所述第二请求中携带由第二版本的程序处理所述第二请求的标记,以使部署第二副本的服务器将所述第二请求转发给第二版本的程序进行处理,所述第一版本为所述第二版本的更新版本。
9.根据权利要求8所述的方法,其特征在于,部署第一副本的服务器和部署第二副本的服务器中均部署第一版本的程序和第二版本的程序。
10.一种大内存服务的多版本程序的并存装置,设置在部署第一副本的服务器中,其特征在于,所述大内存服务的多版本程序的并存装置包括:
接收模块,用于接收客户端发送的第一请求,所述第一请求中携带由第一版本的程序处理所述第一请求的标记;
转发模块,用于将所述接收模块接收的第一请求转发给第一版本的程序进行处理;
确定模块,用于确定所述第一版本的程序发生异常;
发送模块,用于向所述客户端发送通知,以通知所述客户端所述第一版本的程序发生异常,以使所述客户端向部署第二副本的服务器发送第二请求,所述第二请求中携带由第二版本的程序处理所述第二请求的标记,由部署第二副本的服务器将所述第二请求转发给第二版本的程序进行处理,所述第一版本为所述第二版本的更新版本。
11.根据权利要求10所述的装置,其特征在于,部署第一副本的服务器和部署第二副本的服务器中均部署第一版本的程序和第二版本的程序。
12.根据权利要求11所述的装置,其特征在于,还包括:
加载模块,用于将所述第一版本的程序和所述第二版本的程序所需的数据取并集,并将所述第一版本的程序和所述第二版本的程序所需数据的并集加载到数据进程中。
13.根据权利要求12所述的装置,其特征在于,所述部署第一副本的服务器中部署的第一版本或第二版本的程序在运行时,根据各自的配置使用所述数据进程中加载的数据。
14.根据权利要求11-13任意一项所述的装置,其特征在于,所述部署第一副本的服务器中所述第一版本的程序和所述第二版本的程序分别在不同的槽位上启动,所述槽位为所述部署第一副本的服务器中的版本容器。
15.根据权利要求14所述的装置,其特征在于,所述第二版本的程序在第一槽位上启动,所述第一版本的程序在第二槽位上启动;
所述装置还包括:加载模块、启动模块和停止模块;
所述加载模块,用于当所述第一版本的程序升级到第三版本时,将所述第二版本的程序和所述第三版本的程序加载到运行环境中;
所述启动模块,用于在所述第一槽位上启动所述第二版本的程序新的运行进程;以及在所述第二槽位上启动所述第三版本的程序新的运行进程;
所述转发模块,用于在所述确定模块确定所述第二版本的程序新的运行进程运行正常之后,将标记由所述第二版本的程序处理的请求转发到所述第二版本的程序新的运行进程;以及在所述确定模块确定所述第三版本的程序新的运行进程运行正常之后,将标记由所述第三版本的程序处理的请求转发到所述第三版本的程序新的运行进程;
所述停止模块,用于停止所述第二版本的程序旧的运行进程;以及停止所述第三版本的程序旧的运行进程。
16.根据权利要求15所述的装置,其特征在于,所述第二版本的程序新的运行进程与所述第二版本的程序旧的运行进程使用不同的服务端口;所述第三版本的程序新的运行进程与所述第三版本的程序旧的运行进程使用不同的服务端口。
17.一种大内存服务的多版本程序的并存装置,其特征在于,包括:
发送模块,用于向部署第一副本的服务器发送第一请求,所述第一请求中携带由第一版本的程序处理所述第一请求的标记;
接收模块,用于接收部署第一副本的服务器发送的通知,所述通知是部署第一副本的服务器在将所述第一请求转发给第一版本的程序进行处理,确定所述第一版本的程序发生异常之后发送的,用于通知所述客户端所述第一版本的程序发生异常;
所述发送模块,还用于向部署第二副本的服务器发送第二请求,所述第二请求中携带由第二版本的程序处理所述第二请求的标记,以使部署第二副本的服务器将所述第二请求转发给第二版本的程序进行处理,所述第一版本为所述第二版本的更新版本。
18.根据权利要求17所述的装置,其特征在于,部署第一副本的服务器和部署第二副本的服务器中均部署第一版本的程序和第二版本的程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201511020949.9A CN105653328B (zh) | 2015-12-29 | 2015-12-29 | 大内存服务的多版本程序的并存方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201511020949.9A CN105653328B (zh) | 2015-12-29 | 2015-12-29 | 大内存服务的多版本程序的并存方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105653328A true CN105653328A (zh) | 2016-06-08 |
CN105653328B CN105653328B (zh) | 2019-01-25 |
Family
ID=56489962
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201511020949.9A Active CN105653328B (zh) | 2015-12-29 | 2015-12-29 | 大内存服务的多版本程序的并存方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105653328B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106789250A (zh) * | 2016-12-22 | 2017-05-31 | 焦点科技股份有限公司 | 一种基于容器的服务多版本共存实现方法 |
CN107147712A (zh) * | 2017-05-05 | 2017-09-08 | 腾讯科技(深圳)有限公司 | 更新网络应用程序的方法及装置 |
CN107809445A (zh) * | 2016-08-31 | 2018-03-16 | 阿里巴巴集团控股有限公司 | 服务请求处理系统、方法和装置 |
CN109542488A (zh) * | 2018-11-30 | 2019-03-29 | 深圳市元征科技股份有限公司 | 一种软件版本配置方法及相关装置、系统 |
CN109933465A (zh) * | 2019-03-12 | 2019-06-25 | 北京同城必应科技有限公司 | 异常处理方法、装置、服务器和存储介质 |
CN110442392A (zh) * | 2019-07-16 | 2019-11-12 | 新华三大数据技术有限公司 | 一种包隔离方法、装置、电子设备和存储介质 |
CN110716730A (zh) * | 2019-10-14 | 2020-01-21 | 网易(杭州)网络有限公司 | 灰度发布方法、装置、设备及计算机可读存储介质 |
CN113076264A (zh) * | 2020-01-03 | 2021-07-06 | 阿里巴巴集团控股有限公司 | 一种内存管理方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1346086A (zh) * | 2000-09-26 | 2002-04-24 | 开碁数位科技股份有限公司 | 一种可更新一执行中的程序执行文件的系统及其方法 |
CN1797327A (zh) * | 2004-12-20 | 2006-07-05 | 上海贝尔阿尔卡特股份有限公司 | 用于选择多版本软件的方法和选择设备 |
CN102684913A (zh) * | 2012-04-23 | 2012-09-19 | 华为技术有限公司 | 业务处理方法和相关装置及相关系统 |
CN103856559A (zh) * | 2014-02-13 | 2014-06-11 | 北京东方通科技股份有限公司 | 多版本并存的web服务工作方法和系统 |
-
2015
- 2015-12-29 CN CN201511020949.9A patent/CN105653328B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1346086A (zh) * | 2000-09-26 | 2002-04-24 | 开碁数位科技股份有限公司 | 一种可更新一执行中的程序执行文件的系统及其方法 |
CN1797327A (zh) * | 2004-12-20 | 2006-07-05 | 上海贝尔阿尔卡特股份有限公司 | 用于选择多版本软件的方法和选择设备 |
CN102684913A (zh) * | 2012-04-23 | 2012-09-19 | 华为技术有限公司 | 业务处理方法和相关装置及相关系统 |
CN103856559A (zh) * | 2014-02-13 | 2014-06-11 | 北京东方通科技股份有限公司 | 多版本并存的web服务工作方法和系统 |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107809445A (zh) * | 2016-08-31 | 2018-03-16 | 阿里巴巴集团控股有限公司 | 服务请求处理系统、方法和装置 |
CN106789250A (zh) * | 2016-12-22 | 2017-05-31 | 焦点科技股份有限公司 | 一种基于容器的服务多版本共存实现方法 |
CN106789250B (zh) * | 2016-12-22 | 2018-09-18 | 焦点科技股份有限公司 | 一种基于容器的服务多版本共存实现方法 |
CN107147712A (zh) * | 2017-05-05 | 2017-09-08 | 腾讯科技(深圳)有限公司 | 更新网络应用程序的方法及装置 |
CN109542488A (zh) * | 2018-11-30 | 2019-03-29 | 深圳市元征科技股份有限公司 | 一种软件版本配置方法及相关装置、系统 |
CN109933465A (zh) * | 2019-03-12 | 2019-06-25 | 北京同城必应科技有限公司 | 异常处理方法、装置、服务器和存储介质 |
CN109933465B (zh) * | 2019-03-12 | 2021-12-10 | 北京同城必应科技有限公司 | 异常处理方法、装置、服务器和存储介质 |
CN110442392A (zh) * | 2019-07-16 | 2019-11-12 | 新华三大数据技术有限公司 | 一种包隔离方法、装置、电子设备和存储介质 |
CN110442392B (zh) * | 2019-07-16 | 2022-08-09 | 新华三大数据技术有限公司 | 一种包隔离方法、装置、电子设备和存储介质 |
CN110716730A (zh) * | 2019-10-14 | 2020-01-21 | 网易(杭州)网络有限公司 | 灰度发布方法、装置、设备及计算机可读存储介质 |
CN110716730B (zh) * | 2019-10-14 | 2023-09-26 | 网易(杭州)网络有限公司 | 灰度发布方法、装置、设备及计算机可读存储介质 |
CN113076264A (zh) * | 2020-01-03 | 2021-07-06 | 阿里巴巴集团控股有限公司 | 一种内存管理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN105653328B (zh) | 2019-01-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105653328A (zh) | 大内存服务的多版本程序的并存方法和装置 | |
CN112099918B (zh) | 容器化环境中的集群的实时迁移 | |
US9116862B1 (en) | System and method for data replication using a single master failover protocol | |
US8930312B1 (en) | System and method for splitting a replicated data partition | |
US9652469B2 (en) | Clustered file service | |
CN100524219C (zh) | 执行不同版本软件的冗余处理器的配置同步的方法和装置 | |
US7934018B1 (en) | Methods and apparatus for synchronizing configuration data | |
US11544052B2 (en) | Tenant declarative deployments with release staggering | |
CN104951308B (zh) | Docker Registry的管理优化方式及装置 | |
CN113032085A (zh) | 云操作系统的管理方法、装置、服务器、管理系统及介质 | |
CN102025550A (zh) | 一种分布式集群中数据管理的系统和方法 | |
CN102158540A (zh) | 分布式数据库实现系统及方法 | |
WO2012054160A2 (en) | High availability of machines during patching | |
CN102523101A (zh) | 机器管理器服务结构 | |
CN109799998B (zh) | OpenStack集群配置及批量部署方法及系统 | |
CN101751415A (zh) | 元数据服务系统、元数据同步方法与写服务器更新方法 | |
CN113760901A (zh) | 数据处理方法、装置、设备及存储介质 | |
CN112434008A (zh) | 分布式数据库升级方法、设备及介质 | |
CN113127023B (zh) | 业务升级的方法、装置和系统 | |
US20090044186A1 (en) | System and method for implementation of java ais api | |
US20120036496A1 (en) | Plug-in based high availability application management framework (amf) | |
CN111459403A (zh) | 一种存储硬件管理方法及装置 | |
CN109582459A (zh) | 应用的托管进程进行迁移的方法及装置 | |
CN101877655A (zh) | 网络管理系统、网管服务器和方法 | |
US20040210888A1 (en) | Upgrading software on blade servers |
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 |