服务端程序和数据库的升级方法、装置和设备与流程

文档序号:13943862阅读:192来源:国知局

本申请涉及数据库技术,尤其涉及一种服务端程序和数据库的升级方法、装置和设备。



背景技术:

服务端程序是一种采用客户端/服务端(c/s)结构、且运行在服务端并向用户提供业务服务的程序。服务端程序自上线提供服务后,通常都需要不断更新迭代。一般的,服务端程序在升级时,通常需要将服务端程序暂停服务后进行离线升级,待升级完成后,再次启动该升级后的服务端程序对外提供服务,这种升级方式往往造成用户在一段时间内的无法使用该服务端程序。因此,为了保证服务端程序持续对外提供服务,现有技术采用了轮转升级的方法对服务端程序进行升级,但是,该轮转升级的方法仅适用于不涉及数据库的服务端程序,而对于涉及数据库的服务端程序,该服务端程序的升级往往涉及到数据库表结构、数据内容的更新,而上述轮转升级的方法容易造成面向新旧服务端程序的数据库不一致,从而引发不兼容的问题。

因此,为了避免上述问题,现有技术采用热备份的方式对数据库和服务端程序进行升级。具体为:首先对数据库进行热备份,获得两个数据库(正在提供服务的数据库a1和为升级准备的数据库为a2),两个数据库进行同步;然后在t1时刻,停止当前数据库的热备,对数据库a2执行数据库变更操作,并在数据库a2数据变更期间,升级前的服务端程序仍然读写数据库a1,待数据库a2变更完成后,启动升级后的服务端程序,并停止升级前的服务端程序,将访问请求引导到升级后的服务端程序进行处理;最后,将数据库a1在t1时刻之后的所有操作数据通过预先准备的订正语句导入上述变更后的数据库a2中,然后释放数据库a1,指示更新后的服务端程序指向最终的数据库a2。

但是,现有技术的这种升级服务端程序和数据库的方法,对于大容量的数据库,备份时间长,资源浪费严重,并且当升级后的服务端程序已经采用变更后的数据库a2对外提供服务时,升级前的服务端程序对数据库的更改所产生的增量数据正在向变更后的数据库a2中迁移,数据不一致风险较大。



技术实现要素:

本申请提供一种服务端程序和数据库的升级方法、装置和设备,以解决现有技术采用热备的方法升级服务端程序和数据库时,所导致的备份时间长,资源浪费严重的技术问题,并且解决现有技术中当升级后的服务端程序已经采用变更后的数据库对外提供服务时,升级前的服务端程序对数据库的更改所产生的增量数据正在向变更后的数据库中迁移,引发数据不一致的技术问题。

一个方面,本申请提供一种服务端程序和数据库的升级方法,所述服务端程序包括第一程序实体和第二程序实体;所述方法包括:

禁用所述第二程序实体,随后更新所述第二程序实体;

在更新所述第二程序实体之后,对当前对外提供服务的所述第一程序实体所使用的数据库进行兼容更新处理,获得第一数据库;

控制更新后的第二程序实体接收访问请求并缓存所述访问请求;

控制所述第一程序实体停止接收访问请求并更新所述第一程序实体,以及,对所述第一数据库进行非兼容更新处理,获得第二数据库。

上述所提供的服务端程序和数据库的升级方法,通过在更新当前被禁用的第二程序实体之后,对当前对外提供服务的第一程序实体所使用的数据库进行兼容更新处理得到第一数据库,然后在服务端设备在控制第一程序实体停止接收访问请求后,控制更新后的第二程序实体接收并缓存访问请求,并更新上述第一程序实体以及对第一数据库进行非兼容更新处理,获得第二数据库。本申请实施例中,通过兼容更新处理所得到第一数据库,使得当前对外提供服务的第一程序实体针对同一个访问请求,在访问升级前的数据库所得到的结果和访问兼容更新处理后的数据库(即第一数据库)所得到的结果相同,确保当前对外提供服务的第一程序实体访问升级前后的数据库时访问数据一致,避免访问结果出错;同时,通过服务端设备在第一程序实体停止接收访问请求时,控制更新后的第二程序实体接收并缓存访问请求,从而对于外部设备来讲,服务器端设备当前仍然在接收访问请求,服务端程序对外提供的业务并没有中断,保证了外部设备通过服务端程序访问数据库时的连续性;另外,服务端设备通过控制上述对升级前的数据库进行兼容更新处理和非兼容更新处理的顺序,从而使得升级前的数据库得到完整的升级操作,并且不会带来升级前后的服务端程序访问升级前的数据库和访问升级后的数据库时出现访问错误的问题,也无需对升级前的数据库进行热备,大大的节省了热备资源,并且,也不存在升级前后的数据库之间的增量数据迁移,避免出现升级前后服务端程序访问数据不一致的问题。

作为一种可实现的方式,所述控制所述第一程序实体停止接收访问请求并更新所述第一程序实体,具体包括:

控制所述第一程序实体停止接收访问请求,并在所述第一程序实体上的访问任务返回执行结果且在获得所述第二数据库之后,更新所述第一程序实体。

作为一种可实现的方式,所述控制所述第一程序实体停止接收访问请求并更新所述第一程序实体,具体包括:

控制所述第一程序实体停止接收访问请求,并在所述第一程序实体上的访问任务返回执行结果且在控制所述更新后的第二程序实体使用所述第二数据库对外提供业务服务之后,更新所述第一程序实体。

作为一种可实现的方式,所述禁用所述第二程序实体,随后更新所述第二程序实体,具体包括:

控制所述第二程序实体停止接收访问请求,以禁用所述第二程序实体;

在所述第二程序实体上的访问任务返回执行结果后,更新当前被禁用的第二程序实体。

作为一种可实现的方式,所述控制所述第二程序实体停止接收访问请求,具体包括:

配置所述第二程序实体中的请求接收器的工作状态为不使能disabled状态,以控制所述第二程序实体停止接收访问请求。

作为一种可实现的方式,所述控制更新后的第二程序实体接收访问请求并缓存所述访问请求,具体包括:

配置所述更新后的第二程序实体中的请求接收器的工作状态为延缓请求hold模式,以控制所述更新后的第二程序实体接收访问请求并将所述访问请求进行缓存。

作为一种可实现的方式,所述将所述访问请求进行缓存,具体包括:

将所述访问请求缓存在所述更新后的第二程序实体的每个接收线程的堆栈中;

或者,

将所述访问请求缓存在所述更新后的第二程序实体的消息队列中;

或者,

将所述访问请求缓存在所述第一数据库中。

作为一种可实现的方式,所述控制所述第一程序实体停止接收访问请求,具体包括:

配置所述第一程序实体中的请求接收器的工作状态为不使能disabled状态,以控制所述第一程序实体停止接收访问请求。

作为一种可实现的方式,所述第二数据库操作集合还包括至少一个兼容所述第一程序实体的第二数据库操作。

作为一种可实现的方式,所述兼容更新处理对应第一数据库操作集合,所述非兼容更新处理对应第二数据库操作集合;

所述第一数据库操作集合至少包括:空操作、在所述数据库中增加新的数据库表的操作、在所述数据库中增加带有默认值的数据列的操作、在所述数据库中插入预设的数据行的操作;

所述第二数据库操作集合至少包括:更改所述数据库中已有的数据库表或者数据库表中的列内容的操作、删除所述第一程序实体运行时所需的数据行的操作。

作为一种可实现的方式,所述方法还包括:

控制更新后的第一程序实体和更新后的第二程序实体采用所述第二数据库对外提供服务。

上述几种可选的实现方式,通过简单的配置第一程序实体和第二程序实体的工作状态,以及控制不同的数据库操作集合处理升级前的数据库的顺序,简化了服务端程序和数据库的升级过程,大大提供了服务端程序和数据库的升级效率。

另一方面,本申请提供一种服务端程序和数据库的升级装置,所述服务端程序包括第一程序实体和第二程序实体;所述装置包括:第一控制更新模块、第一数据库更新模块、缓存控制模块、第二控制更新模块和第二数据库更新模块;

第一控制更新模块,用于禁用所述第二程序实体,随后更新所述第二程序实体;

第一数据库更新模块,用于在所述第一控制更新模块更新所述第二程序实体之后,对当前对外提供服务的所述第一程序实体所使用的数据库进行兼容更新处理,获得第一数据库;

缓存控制模块,用于控制更新后的第二程序实体接收访问请求并缓存所述访问请求;

第二控制更新模块,用于控制所述第一程序实体停止接收访问请求并更新所述第一程序实体;

第二数据库更新模块,用于对所述第一数据库进行非兼容更新处理,获得第二数据库。

上述所提供的服务端程序和数据库的升级装置,其有益效果可以参照上述各可实现方式中的服务端程序和数据库的升级方法所带来的有益效果,在此不再赘述。

另一方面,本申请提供一种服务端程序和数据库的升级设备,所述服务端程序包括第一程序实体和第二程序实体;所述设备包括:

输入设备,耦合至处理器,用于接收第一控制指令;

处理器,用于根据所述第一控制指令禁用所述第二程序实体,随后更新所述第二程序实体,并在更新所述第二程序实体之后,对当前对外提供服务的所述第一程序实体所使用的数据库进行兼容更新处理,获得第一数据库;

所述输入设备,还用于接收第二控制指令;

所述处理器,还用于根据所述第二控制指令控制更新后的第二程序实体接收访问请求并缓存所述访问请求,并控制所述第一程序实体停止接收访问请求并更新所述第一程序实体,以及,对所述第一数据库进行非兼容更新处理,获得第二数据库。

上述所提供的服务端程序和数据库的升级设备,其有益效果可以参照上述各可实现方式中的服务端程序和数据库的升级方法所带来的有益效果,在此不再赘述。

在本申请中,通过在更新当前被禁用的第二程序实体之后,对当前对外提供服务的第一程序实体所使用的数据库进行兼容更新处理得到第一数据库,然后在服务端设备在控制第一程序实体停止接收访问请求后,控制更新后的第二程序实体接收并缓存访问请求,并更新上述第一程序实体以及对第一数据库进行非兼容更新处理,获得第二数据库。本申请实施例中,通过兼容更新处理所得到第一数据库,使得当前对外提供服务的第一程序实体针对同一个访问请求,在访问升级前的数据库所得到的结果和访问兼容更新处理后的数据库(即第一数据库)所得到的结果相同,确保当前对外提供服务的第一程序实体访问升级前后的数据库时访问数据一致,避免访问结果出错;同时,通过服务端设备在第一程序实体停止接收访问请求时,控制更新后的第二程序实体接收并缓存访问请求,从而对于外部设备来讲,服务器端设备当前仍然在接收访问请求,服务端程序对外提供的业务并没有中断,保证了外部设备通过服务端程序访问数据库时的连续性;另外,服务端设备通过控制上述对升级前的数据库进行兼容更新处理和非兼容更新处理的顺序,从而使得升级前的数据库得到完整的升级操作,并且不会带来升级前后的服务端程序访问升级前的数据库和访问升级后的数据库时出现访问错误的问题,也无需对升级前的数据库进行热备,大大的节省了热备资源,并且,也不存在升级前后的数据库之间的增量数据迁移,避免出现升级前后服务端程序访问数据不一致的问题。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本申请的一种可选的服务端系统的示意图;

图2为本申请一实施例提供的服务端程序和数据库的升级方法的流程示意图;

图3为本申请一实施例提供的服务端程序和数据库的升级方法的信令流程图;

图4为本申请一实施例提供的服务端程序和数据库的升级装置结构示意图;

图5为本申请一实施例提供的服务端程序和数据库的升级装置结构示意图;

图6为本申请一实施例提供的服务端程序和数据库的升级设备硬件结构示意图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。

为了清楚起见,首先说明本发明使用的特定词或短语的定义。

服务端程序:使用客户端/服务端(c/s)结构的程序中,运行于服务端并对用户提供业务服务的程序,该服务端可以为服务器或者具有全局控制处理功能的设备。可选的,对于系统程序来说,一般可以分为面向用户的客户端程序和面向服务端的服务端程序,因此,对于app类的应用程序来说,该服务端程序可以为网络服务器侧所运行的程序,数据库为网络服务器的数据库。

热升级:在不停止服务的情况下完成系统的升级与运行参数的修改。

数据库的热备份:对数据库(例如主数据库a1)进行备份,得到正在提供服务的数据库a1和为升级准备的数据库为a2,两个数据库的内容保持同步。

本申请实施例涉及的服务端程序和数据库的升级方法,可以适用于图1所示的服务端系统,该服务端系统包括请求分发器、请求接收器、请求执行器和数据库,该服务端系统可以通过软件、或者软硬结合的方式实现,上述请求分发器、请求接收器、请求执行器均属于服务端程序,其分别为具有相应功能的程序代码。在进行升级操作时,对于请求分发器,由于其仅涉及到请求转发,不涉及业务逻辑,一般情况下,不需要对其进行升级。可选的,可以使用轮转升级的方式对请求分发器进行热升级,具体参见现有技术,在此不再赘述。

针对上述请求分发器,位于服务端系统入口处,为了达到负载均衡或热备份的目的而设置,用于将该服务端系统收到的请求分发给后端各请求接收器。通常,为了保证性能容量的水平扩展,在一个对外暴露接口(例如,应用程序编程接口api)后面,都会部署多个独立且功能相同的程序实体,每个程序实体包括一个请求接收器和一个请求执行器,多个独立的程序实体组成一个整体的服务端程序对外提供服务(也就是说,一个服务端程序可以包括多个功能相同的程序实体,每个程序实体包括一个请求接收器和一个请求执行器)。上述请求分发器的实现方式包括但不限于软件/硬件负载均衡、域名系统(domainnamesystem,简称dns)负载均衡、消息队列分发等。

针对上述请求接收器,其位于每个独立的程序实体中,作为每个请求执行器的唯一指令来源。该请求接收器抽象了请求执行器的所有访问入口,所有外部请求均需要经过请求接收器。请求接收器与请求分发器的交互方式包括但不限于:请求内容推送、请求内容拉取等。对于以超文本传输(hypertexttransferprotocol,简称http)协议暴露的api接口,通常使用请求内容推送方式与请求分发器进行交互;对于消息队列方式,通常使用请求内容拉取方式与请求分发器进行交互,但本申请实施例对请求接收器和请求分发器之间的交互方式不限于此。

针对上述请求执行器,该请求执行器处理由请求接收器收到的指令,完成业务的控制逻辑及数据逻辑处理,处理完成后,返回相应结果。另外,请求执行器可以读取或者存储数据库的相关内容。该请求执行器和请求接收器可以构成一个独立的程序实体。

针对上述数据库,该数据库为存放或者读取数据的功能实体,实现对数据的相关操作。

本申请实施例涉及的服务端程序和数据库的升级方法,可以适用于任一使用数据库的服务端程序的升级场景,其主要涉及在用户无感知、服务端程序持续为用户提供业务服务的情况下,对服务端程序及其所使用的数据库进行升级,完成产品功能的更新迭代的过程,从而解决现有技术采用热备的方法升级服务端程序和数据库时,所导致的备份时间长,资源浪费严重的技术问题,并且解决现有技术中当升级后的服务端程序已经采用变更后的数据库对外提供服务时,升级前的服务端程序对数据库的更改所产生的增量数据正在向变更后的数据库中迁移,引发数据不一致的技术问题。

可选的,本申请实施例的执行主体可以是服务端设备,还可以是集成在服务端设备上的升级装置,该升级装置可以通过软件、硬件或者软硬结合的方式实现,下述实施例以执行主体为服务端设备为例。

下面以具体地实施例对本申请的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。

图2为本申请一实施例提供的服务端程序和数据库的升级方法的流程示意图。本实施例涉及的是服务端设备采用不同的数据库操作对当前使用的数据库和服务端程序进行升级的具体过程,无需对数据库进行热备份以节省资源,也避免了现有技术中增量数据的迁移导致的面向新旧服务端程序的数据库数据不一致的问题。本申请实施例主要针对上述请求接收器、请求执行器和数据库进行升级,本实施例中,预先将服务端程序中的多个请求接收器、多个请求执行器划分升级批次,保证在任何时刻都有请求接收器处于工作状态,记第一批升级的请求接收器、请求执行器集合为sa2(该sa2为服务端程序中的第二程序实体,该第二程序实体可以包括至少一个独立的程序实体),在第二程序实体升级过程中,当前对外提供服务的请求接收器、请求执行器集合记为sa1(该sa1为服务端程序中的第一程序实体,即服务端程序中除第二程序实体之外所剩余的程序实体)。为了便于说明,下述将第一批升级的请求接收器、请求执行器集合sa2统称为第二程序实体,将sa1统称为第一程序实体,即本实施例中的服务端程序包括第一程序实体和第二程序实体。

如图1所示,本申请的方法可以包括:

s101:禁用第二程序实体,随后更新该第二程序实体,并在更新第二程序实体之后,对当前对外提供服务的所述第一程序实体所使用的数据库进行兼容更新处理,获得第一数据库。

具体的,服务端设备在对服务端程序进行升级时,首先确认第一程序实体和第二程序实体是否全部对外提供服务。如果第一程序实体和第二程序实体当前全部对外提供服务,则服务端设备禁用该第二程序实体,然后更新该禁用的第二程序实体。在将禁用的第二程序实体更新为目标版本之后,对当前对外提供服务的第一程序实体所使用的数据库进行兼容更新处理,获得第一数据库。

需要说明的是,第一程序实体当前正在对外提供服务,其当前使用的数据库为升级前的数据库,当服务端设备对该数据库进行兼容更新处理后,该兼容更新处理使得所得到的第一数据库不仅兼容上述更新后的第二程序实体的请求执行器,也兼容升级前的第一程序实体和第二程序实体中的请求执行器,即更新前的第一程序实体和第二程序实体中的请求执行器、以及更新后的第二程序实体中的请求执行器均可以基于该第一数据库进行正常的业务处理,不会出现数据访问错误、或者第一程序实体访问升级前的数据库和访问第一数据库时出现数据不一致的问题。也就是说,第一程序实体此时无论是访问升级前的数据库,还是访问第一数据库,所得到的结果均不会出现错误。需要说明的是,上述对数据库进行的兼容更新处理,其不会对数据库中当前已有的数据进行更改或者删除,即第一程序实体针对同一个访问请求,在访问升级前的数据库所得到的结果和访问兼容更新处理后的数据库(即第一数据库)所得到的结果相同,更新前的第二程序实体针对同一访问请求访问升级前的数据库所得到的结果和更新后的第二程序实体针对该访问请求访问升级后的数据库(第一数据库)所得到的结果相同。也就是说,上述兼容更新处理为能够使升级后的数据库兼容第一程序实体、更新前后的第二程序实体的一些操作,例如对升级前的数据库增加新的数据库表的操作、增加带有默认值的数据列的操作等。

s102:控制更新后的第二程序实体接收访问请求并缓存所述访问请求。

具体的,当服务端设备获得第一数据库之后,服务端设备可以控制更新后的第二程序实体接收访问请求,即控制更新后的第二程序实体中的请求接收器接收访问请求,并将所接收到的外部访问请求进行缓存,这样做的目的是为了在下述服务端设备将第一程序实体停止服务后,服务端程序对外仍然能够响应访问请求(这里的响应实际上是接收外部访问请求但延缓处理,但对外部访问设备来说,相当于服务端程序仍然在继续工作),确保服务端程序在升级过程中不中断与外部访问设备的交互。

s103:控制所述第一程序实体停止接收访问请求并更新所述第一程序实体,以及,对所述第一数据库进行非兼容更新处理,获得第二数据库。

具体的,在执行上述s102之后,服务端设备控制当前第一程序实体停止接收访问请求,由上述更新后的第二程序实体对外接收访问请求,如上述所说,这样做的目的是在于当第一程序实体停止接收访问请求后,对外部设备来说,更新后的第二程序实体仍然接收外部设备的访问请求,故这样对于外部设备来讲,服务端程序并没有停止工作。此时,服务端设备在确认第一程序实体上的访问任务全部返回执行结果后,可以将第一程序实体更新或者升级到目标版本(该目标版本与上述更新后的第二程序实体的版本相同),得到更新后的第一程序实体。

另一方面,由于上述更新后的第二程序实体只是接收外部的访问请求,因此,其不涉及对第一数据库的操作,故而,服务端设备可以对该第一数据库进行非兼容更新处理,得到第二数据库。该非兼容更新处理包括对当前第一数据库已有的数据进行更改或删除的处理,这些处理不兼容升级前的第一程序实体和第二程序实体,即更新前的第二程序实体针对一访问请求访问升级前的数据库和更新后的第二程序实体针对该访问请求访问第二数据库所得到的结果会出现不一致的情况,更新前的第一程序实体针对一访问请求访问升级前的数据库和更新后的第一程序实体针对该访问请求访问第二数据库所得到的结果会出现不一致的情况。

本申请实施例中,之所以在先对更新前第一程序实体所使用的数据库进行兼容更新处理,是因为第二程序实体停止服务后第一程序实体仍然使用升级前的数据库对外提供服务,因此,如果在先对更新前第一程序实体所使用的数据库进行非兼容更新处理,会出现第一程序实体在访问升级前的数据库和访问经非兼容更新处理后的数据库时,数据出错或者数据不一致的问题,但是,如果在先对更新前第一程序实体所使用的数据库进行兼容更新处理就不会出现该问题,具体解释可以参见上述s101的描述。需要说明的是,本实施例中对更新第一程序实体和对第一数据库进行非兼容更新处理的时序关系并不做限定。

故,本实施例中,服务端设备更新禁用的第二第二程序实体之后,在先对当前对外提供服务的第一程序实体所使用的数据库进行兼容更新处理,得到第一数据库,确保第一程序实体访问升级前后的数据库时数据一致;然后服务端设备在控制第一程序实体停止接收访问请求时,控制更新后的第二程序实体接收并缓存访问请求,以在更新后的第二程序实体未使用第一数据库时,对第一数据库进行非兼容更新处理,得到第二数据,从而使得升级前的数据库得到完整的升级操作,并且不会带来升级前后的服务端程序访问升级前的数据库和访问升级后的数据库时出现访问错误的问题,也无需对升级前的数据库进行热备,大大的节省了资源,并且,也不存在升级前后的数据库之间的增量数据迁移,避免出现升级前后服务端程序访问数据不一致的问题。

在得到第二数据库之后,服务端设备就可以控制更新后的第二程序实体和更新后的第一程序实体采用第二数据库对外提供业务服务。

本申请实施例提供的服务端程序和数据库的升级方法,通过在更新当前被禁用的第二程序实体之后,对当前对外提供服务的第一程序实体所使用的数据库进行兼容更新处理得到第一数据库,然后在服务端设备在控制第一程序实体停止接收访问请求后,控制更新后的第二程序实体接收并缓存访问请求,并更新上述第一程序实体以及对第一数据库进行非兼容更新处理,获得第二数据库。本申请实施例中,通过兼容更新处理所得到第一数据库,使得当前对外提供服务的第一程序实体针对同一个访问请求,在访问升级前的数据库所得到的结果和访问兼容更新处理后的数据库(即第一数据库)所得到的结果相同,确保当前对外提供服务的第一程序实体访问升级前后的数据库时访问数据一致,避免访问结果出错;同时,通过服务端设备在第一程序实体停止接收访问请求时,控制更新后的第二程序实体接收并缓存访问请求,从而对于外部设备来讲,服务器端设备当前仍然在接收访问请求,服务端程序对外提供的业务并没有中断,保证了外部设备通过服务端程序访问数据库时的连续性;另外,服务端设备通过控制上述对升级前的数据库进行兼容更新处理和非兼容更新处理的顺序,从而使得升级前的数据库得到完整的升级操作,并且不会带来升级前后的服务端程序访问升级前的数据库和访问升级后的数据库时出现访问错误的问题,也无需对升级前的数据库进行热备,大大的节省了热备资源,并且,也不存在升级前后的数据库之间的增量数据迁移,避免出现升级前后服务端程序访问数据不一致的问题。

可选的,上述对当前对外提供服务的第一程序实体进行的兼容更新处理可以对应第一数据库操作集合,对第一数据库进行的非兼容更新处理可以对应第二数据库操作集合。该第一数据库操作集合至少包括以下兼容更新操作:空操作、在第一程序实体所使用的升级前的数据库中增加新的数据库表的操作、在第一程序实体所使用的升级前的数据库中增加带有默认值的数据列的操作、在第一程序实体所使用的升级前的数据库中插入预设的数据行的操作,该插入预设的数据行的操作为不影响第一程序实体运行的操作。可选的,当第一数据库操作集合仅包括空操作时,相当于第一数据库操作集合为空,则上述s101中所得到的第一数据库与升级前的数据库相同。也就是说,当第一数据库操作集合包括空操作时,第一数据库操作集合不能包含其他的兼容操作,当第一数据库操作集合不包括空操作时,其可以包含其他的兼容操作。

可选的,上述第二数据库操作集合至少包括以下非兼容更新操作:更改第一程序实体所使用的升级前的数据库中已有的数据库表或者数据库表中的列内容的操作、删除所述第一程序实体运行时所需的数据行的操作。可选的,该第二数据库操作集合还可以包括上述第一数据库操作集合中的部分兼容更新操作,需要说明的是,若第二数据库操作集合中包括了上述第一数据库操作集合中的部分兼容更新操作时,该部分兼容更新操作与上述第一数据库操作集合当前所包括的数据库操作不同,例如,假设上述第一数据库操作集合包括在第一程序实体所使用的升级前的数据库中增加新的数据库表的操作,则第二数据库操作集合除了包括上述非兼容更新操作,还包括上述兼容更新操作中的除“增加新的数据库表”的其他兼容更新操作。

可选的,针对上述服务端设备控制所述第一程序实体停止接收访问请求并更新该第一程序实体,一种可选的实施方式具体可以为:服务端设备控制第一程序实体停止接收访问请求,并在第一程序实体上的访问任务返回执行结果且在获得第二数据库之后,更新第一程序实体,即更新第一程序实体的操作可以是在得到第二数据库之后进行。

具体的,这是因为此时更新后的第二程序实体只是接收外部的访问请求,并不需要结合相应的数据库对该访问请求进行处理,因此,服务端设备只要控制第一程序实体停止接收访问请求,并在第一程序实体上的访问任务返回执行结果后,就可以对上述第一数据库进行非兼容更新处理,获得第二数据库,然后再对当前暂停的第一程序实体进行更新,得到更新后的第一程序实体,进而控制更新后的第一程序实体和更新后的第二程序实体采用第二数据库对外提供服务,这样既不会影响更新后的第二程序实体的运行,也不会影响数据库的更新进度,更不会影响升级前后的数据访问的准确性。

可选的,针对上述服务端设备控制所述第一程序实体停止接收访问请求并更新该第一程序实体,另一种可选的实施方式具体可以为:控制所述第一程序实体停止接收访问请求,并在所述第一程序实体上的访问任务返回执行结果且在控制所述更新后的第二程序实体使用所述第二数据库对外提供业务服务之后,更新所述第一程序实体,即更新第一程序实体的操作可以是在更新后的第二程序实体已经采用第二数据库对外提供服务之后进行。

具体的,这是因为此时更新后的第二程序实体只是接收外部的访问请求,并不需要结合相应的数据库对该访问请求进行处理,因此,服务端设备只要控制第一程序实体停止接收访问请求,并在第一程序实体上的访问任务返回执行结果后,就可以对上述第一数据库进行非兼容更新处理,获得第二数据库,然后控制更新后的第二程序实体直接采用第二数据库对外提供服务,之后再对当前暂停的第一程序实体进行更新,得到更新后的第一程序实体,进而控制更新后的第一程序实体采用第二数据库对外提供服务,这样既不会影响更新后的第二程序实体的运行,也不会影响数据库的更新进度,更不会影响升级前后的数据访问的准确性。

进一步地,上述第一程序实体和第二程序实体中均包括请求接收器和请求执行器,因此,下述几种可能的实施方式主要介绍服务端设备如何控制第一程序实体、第二程序实体、更新后的第二程序实体和更新后的第一程序实体的工作状态。

可选的,上述s101中服务端设备更新禁用的第二程序实体,具体可以为:控制第二程序实体停止接收访问请求,以禁用该第二程序实体,并在该第二程序实体上的访问任务返回执行结果后,更新该已被禁用的第二程序实体。

具体的,服务端设备可以通过逻辑配置或者手动配置第二程序实体中请求接收器的状态为不可用状态,来控制第二程序实体停止接收外部访问请求(此时第一程序实体仍然使用当前的数据库对外提供服务)。与此同时,服务端设备查看当前第二程序实体之前所接收到的所有访问请求是否均已执行完毕(即判断第二程序实体上的访问任务是否全部返回执行结果),当服务端设备确定当前第二程序实体上的访问任务全部返回执行结果后,更新当前该已被禁用的第二程序实体。可选的,可以是通过配置第二程序实体中的请求接收器的工作状态为不使能(disabled)状态,来控制第二程序实体停止接收访问请求。

可选的,上述s102中服务端设备控制更新后的第二程序实体接收访问请求并缓存所述访问请求,具体可以是通过配置更新后的第二程序实体中的请求接收器的工作状态为延缓请求(hold)模式,来控制更新后的第二程序实体接收访问请求并将所述访问请求进行缓存。可选的,服务端设备可以将更新后的第二程序实体接收到的访问请求缓存在更新后的第二程序实体的每个接收线程的堆栈中;可选的,服务端设备还可以将更新后的第二程序实体接收到的访问请求缓存在更新后的第二程序实体的消息队列中;可选的,服务端设备还可以将更新后的第二程序实体接收到的访问请求缓存在上述第一数据库中。

可选的,上述s103中服务端设备控制第一程序实体停止接收访问请求,具体可以是通过配置第一程序实体中的请求接收器的工作状态为不使能disabled状态,来控制所述第一程序实体停止接收访问请求。

可选的,在服务端设备得到第二数据库、更新后的第一程序实体和更新后的第二程序实体之后,服务端设备控制更新后的第二程序实体和更新后的第一程序实体使用该第二数据库对外提供业务服务,具体可以是通过配置更新后的第二程序实体中的请求接收器的工作状态为使能enabled状态,来控制更新后的第二程序实体使用第二数据库对外提供业务服务;通过配置更新后的第一程序实体中的请求接收器的工作状态为使能(enabled)状态,来控制更新后的第一程序实体使用该第二数据库对外提供业务服务。

本申请实施例提供的服务端程序和数据库的升级方法,通过简单的配置第一程序实体和第二程序实体的工作状态,以及控制对数据库进行兼容更新处理和非兼容更新处理的先后顺序,简化了服务端程序和数据库的升级过程,大大提高了服务端程序和数据库的升级效率。

图3为本申请一实施例提供的服务端程序和数据库的升级方法的信令流程图。本实施例涉及的是服务端设备升级服务端程序和数据库的完整信令过程。其中,sa1包括第一程序实体中的所有请求接收器和请求执行器,sa2包括第二程序实体中的所有请求接收器和请求执行器,该sa2为第一批升级的程序实体。如图3所示,该方法具体包括:

s201、确定sa1和sa2均对外提供服务。

s202、配置sa2的请求接收器为disabled状态,控制sa2不接收访问请求,以禁用sa2。

s203、在sa2的所有请求执行器返回执行结果后,更新sa2,得到更新后的第二程序实体。

s204、启动更新后的第二程序实体,保持更新后的第二程序实体中的请求接收器为disabled状态。

可选的,这里的启动,表明当前的更新后的第二程序实体具有对外提供服务的能力,只是在disabled状态下,暂时并未对外提供服务。

s205、对sa1当前使用的升级前的数据库进行兼容更新处理,得到第一数据库。

s206、设置更新后的第二程序实体中的请求接收器为hold模式,以控制更新后的第二程序实体将接收到的访问请求进行缓存,不会推向请求执行器中。

s207、配置sa1的请求接收器为disabled状态,以控制sa1不接收访问请求。

可选的,服务端设备可以在控制sa1不接收访问请求后,设置更新后的第二程序实体中的请求接收器为hold模式;或者二者可以同时进行。

s208、在sa1的所有请求执行器返回执行结果后,对上述第一数据库进行非兼容更新处理,得到第二数据库。

s209、在sa1的所有请求执行器返回执行结果后,更新sa1,得到更新后的第一程序实体。

该s208和s209之间没有具体的时序限制,只要更新第一程序实体和更新第一数据库在sa1的所有请求执行器返回执行结果后执行即可。

s210、将更新后的第二程序实体的请求接收器的工作状态设置为enabled状态,进入正常服务模式,此时将缓存在接收器中的请求推入更新后的第二程序实体的请求执行器中,同时允许新访问请求通过更新后的第二程序实体的请求接收器进入请求执行器,以使更新后的第二程序实体采用第二数据库对外提供服务。

可选的,上述更新第一程序实体还可以是在将更新后的第二程序实体的请求接收器的工作状态设置为enabled状态之后进行。

s211、启动更新后的第一程序实体,将更新后的第一程序实体的请求接收器的工作状态设置为enabled状态,以使更新后的第一程序实体采用第二数据库对外提供服务。

上述s201至s211的具体描述可以参见上述实施例的描述,在此不再赘述。

以下将详细描述根据本申请的一个或多个实施例的服务端程序和数据库的升级装置。该服务端程序和数据库的升级装置可以被实现在运行服务端程序的设备上,例如,服务端设备、服务器、网络服务器等。本领域技术人员可以理解,该服务端程序和数据库的升级装置均可使用市售的硬件组件通过本方案所教导的步骤进行配置来构成。例如,下述实施例中的涉及控制功能、更新功能的模块可以使用单片机、微控制器、微处理器等组件实现。

下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。

图4为本申请一实施例提供的服务端程序和数据库的升级装置结构示意图,该服务端程序和数据库的升级装置,可以通过软件或者软硬结合的方式实现。本实施例中的服务端程序包括第一程序实体和第二程序实体。如图4所示,该装置可以包括:第一控制更新模块10、第一数据库更新模块11、缓存控制模块12、第二控制更新模块13和第二数据库更新模块14。

其中,第一控制更新模块10,用于禁用所述第二程序实体,随后更新所述第二程序实体;

第一数据库更新模块11,用于在所述第一控制更新模块10更新所述第二程序实体之后,对当前对外提供服务的所述第一程序实体所使用的数据库进行兼容更新处理,获得第一数据库;其中,所述第二程序实体在更新之前被禁用;

缓存控制模块12,用于控制更新后的第二程序实体接收访问请求并缓存所述访问请求;

第二控制更新模块13,用于控制所述第一程序实体停止接收访问请求并更新所述第一程序实体;

第二数据库更新模块14,用于对所述第一数据库进行非兼容更新处理,获得第二数据库。

本申请实施例提供的服务端程序和数据库的升级装置,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。

可选的,上述第二控制更新模块13,具体用于控制所述第一程序实体停止接收访问请求,并在所述第一程序实体上的访问任务返回执行结果且在获得所述第二数据库之后,更新所述第一程序实体。

可选的,上述第二控制更新模块13,具体用于控制所述第一程序实体停止接收访问请求,并在所述第一程序实体上的访问任务返回执行结果且在控制所述更新后的第二程序实体使用所述第二数据库对外提供业务服务之后,更新所述第一程序实体。

进一步地,参见图5所示的实施例中的结构示意图,在上述图4所示实施例的基础上,上述第一控制更新模块10,具体包括:控制单元101和更新单元102。

具体的,控制单元101,用于控制所述第二程序实体停止接收访问请求,以禁用所述第二程序实体;

更新单元102,用于在所述第二程序实体上的访问任务返回执行结果后,更新当前被禁用的第二程序实体。

更具体的,所述控制单元101,具体用于配置所述第二程序实体中的请求接收器的工作状态为不使能disabled状态,以控制所述第二程序实体停止接收访问请求。

上述缓存控制模块12,具体用于配置所述更新后的第二程序实体中的请求接收器的工作状态为延缓请求hold模式,以控制所述更新后的第二程序实体接收访问请求并将所述访问请求进行缓存。进一步地,该缓存控制模块12,具体用于将所述访问请求缓存在所述更新后的第二程序实体的每个接收线程的堆栈中;或者,将所述访问请求缓存在所述更新后的第二程序实体的消息队列中;或者,将所述访问请求缓存在所述第一数据库中。

可选的,上述第二控制更新模块13,用于控制所述第一程序实体停止接收访问请求,具体包括:

所述第二控制更新模块13,具体用于配置所述第一程序实体中的请求接收器的工作状态为不使能disabled状态,以控制所述第一程序实体停止接收访问请求。

可选的,继续参见图5,上述服务端程序和数据库的升级装置还可以包括服务控制模块15,用于控制更新后的第一程序实体和更新后的第二程序实体采用所述第二数据库对外提供服务。

可选的,所述兼容更新处理对应第一数据库操作集合,所述非兼容更新处理对应第二数据库操作集合;

所述第一数据库操作集合至少包括:空操作、在所述数据库中增加新的数据库表的操作、在所述数据库中增加带有默认值的数据列的操作、在所述数据库中插入预设的数据行的操作;

所述第二数据库操作集合至少包括:更改所述数据库中已有的数据库表或者数据库表中的列内容的操作、删除所述第一程序实体运行时所需的数据行的操作。

本申请实施例提供的服务端程序和数据库的升级装置,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。

图6为本申请一实施例提供的服务端程序和数据库的升级设备硬件结构示意图。如图6所示,该服务端程序和数据库的升级设备可以包括输入设备20、处理器21、存储器22和至少一个通信总线23。通信总线23用于实现元件之间的通信连接。存储器22可能包含高速ram存储器,也可能还包括非易失性存储nvm,例如至少一个磁盘存储器,存储器22中可以存储各种程序,用于完成各种处理功能以及实现本实施例的方法步骤。

可选的,上述处理器21例如可以为中央处理器(centralprocessingunit,简称cpu)、应用专用集成电路(asic)、数字信号处理器(dsp)、数字信号处理设备(dspd)、可编程逻辑器件(pld)、现场可编程门阵列(fpga)、控制器、微控制器、微处理器或其他电子元件实现,

可选的,上述输入设备20例如可以是面向用户的接口设备或者软件编程接口,该面向用户的接口设备可以是供用户输入指令的键盘、可以是接收键盘输入的接口设备、还可以是其他供用户输入指令控制服务端程序和数据库升级的设备。可选的,上述输入设备20可以是接收用户输入的显示设备。

在本申请实施例中,输入设备20,耦合至处理器21,用于接收第一控制指令;

处理器21,用于根据所述第一控制指令禁用所述第二程序实体,随后更新所述第二程序实体,并在更新所述第二程序实体之后,对当前对外提供服务的所述第一程序实体所使用的数据库进行兼容更新处理,获得第一数据库;

所述输入设备20,还用于接收第二控制指令;

所述处理器21,还用于根据所述第二控制指令控制更新后的第二程序实体接收访问请求并缓存所述访问请求,并控制所述第一程序实体停止接收访问请求并更新所述第一程序实体,以及,对所述第一数据库进行非兼容更新处理,获得第二数据库。

本申请实施例提供的服务端程序和数据库的升级设备,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。

可选的,所述处理器21,具体用于控制所述第一程序实体停止接收访问请求,并在所述第一程序实体上的访问任务返回执行结果且在获得所述第二数据库之后,更新所述第一程序实体。。

可选的,所述处理器21,具体用于控制所述第一程序实体停止接收访问请求,并在所述第一程序实体上的访问任务返回执行结果且在控制所述更新后的第二程序实体使用所述第二数据库对外提供业务服务之后,更新所述第一程序实体。

可选的,所述处理器21,具体用于控制所述第二程序实体停止接收访问请求,以禁用所述第二程序实体,并在所述第二程序实体上的访问任务返回执行结果后,更新当前被禁用的第二程序实体。可选的,所述处理器21,具体用于根据所述输入设备20接收到的第一控制指令,配置所述第二程序实体中的请求接收器的工作状态为不使能disabled状态,以控制所述第二程序实体停止接收访问请求。

可选的,所述处理器21,具体用于根据所述输入设备20接收到的第二控制指令,配置所述更新后的第二程序实体中的请求接收器的工作状态为延缓请求hold模式,以控制所述更新后的第二程序实体接收访问请求并将所述访问请求进行缓存。可选的,上述存储器,用于将所述访问请求缓存在所述更新后的第二程序实体的每个接收线程的堆栈中;或者,将所述访问请求缓存在所述更新后的第二程序实体的消息队列中;或者,将所述访问请求缓存在所述第一数据库中。

可选的,所述处理器21,具体用于根据所述输入设备20接收到的第二控制指令,配置所述第一程序实体中的请求接收器的工作状态为不使能disabled状态,以控制所述第一程序实体停止接收访问请求。

可选的,所述处理器21,还用于控制更新后的第一程序实体和更新后的第二程序实体采用所述第二数据库对外提供服务。

可选的,所述兼容更新处理对应第一数据库操作集合,所述非兼容更新处理对应第二数据库操作集合;

所述第一数据库操作集合至少包括:空操作、在所述数据库中增加新的数据库表的操作、在所述数据库中增加带有默认值的数据列的操作、在所述数据库中插入预设的数据行的操作;

所述第二数据库操作集合至少包括:更改所述数据库中已有的数据库表或者数据库表中的列内容的操作、删除所述第一程序实体运行时所需的数据行的操作。

本申请实施例提供的服务端程序和数据库的升级设备,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。

一种计算机/处理器可读存储介质,所述存储介质中存储有程序指令,所述程序指令用于使所述计算机/处理器执行(下述所涉及的服务端程序包括第一程序实体和第二程序实体):

禁用所述第二程序实体,随后更新所述第二程序实体;

在更新所述第二程序实体之后,对当前对外提供服务的所述第一程序实体所使用的数据库进行兼容更新处理,获得第一数据库;

控制更新后的第二程序实体接收访问请求并缓存所述访问请求;

控制所述第一程序实体停止接收访问请求并更新所述第一程序实体,以及,对所述第一数据库进行非兼容更新处理,获得第二数据库。

上述可读存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。

最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1