一种云原生环境下的分布式微服务数据库更新方法及系统转让专利

申请号 : CN202211059653.8

文献号 : CN115129740B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 郑伟波刘士军

申请人 : 山东大学

摘要 :

本发明涉及云计算技术领域,公开了一种云原生环境下的分布式微服务数据库更新方法及系统,所述方法包括:当新版本的微服务应用镜像启动时,触发微服务启动事件,向调度协同服务注册当前应用版本;调度协同服务获取微服务当前应用版本对应的数据库变更集,判断与更新前应用版本对应的数据库变更集是否一致;若不一致,触发数据库变更集差异对比事件,获取两个数据库变更集之间的差异信息,所述差异信息包括一个或多个数据库变更操作,根据所述一个或多个数据库变更操作的依赖关系,获取所有需执行的数据库变更操作及相应微服务,执行更新。本发明解决了云原生架构下部署微服务数据库依赖更新的问题,保障了多微服务数据库更新一致性。

权利要求 :

1.一种云原生环境下的分布式微服务数据库更新方法,其特征在于,所述方法包括:当新版本的微服务应用镜像启动时,触发微服务启动事件,向调度协同服务注册当前应用版本;

调度协同服务获取微服务当前应用版本对应的数据库变更集,判断与更新前应用版本对应的数据库变更集是否一致;

若不一致,触发数据库变更集差异对比事件,获取两个数据库变更集之间的差异信息,所述差异信息包括一个或多个数据库变更操作,根据所述一个或多个数据库变更操作的依赖关系,获取所有需执行的数据库变更操作及相应微服务;根据所述数据库变更操作,对相应微服务执行更新。

2.如权利要求1所述的分布式微服务数据库更新方法,其特征在于,所述数据库变更集包括多个数据库变更操作,针对每个数据库变更操作,均记录其与其他数据库变更操作之间的依赖关系,及其他数据库变更操作的来源变更集。

3.如权利要求1所述的分布式微服务数据库更新方法,其特征在于,所述应用版本包括描述信息,所述描述信息包括所述应用的标识、对应的微服务标识和数据库变更集版本。

4.如权利要求3所述的分布式微服务数据库更新方法,其特征在于,所述数据库变更集包括描述信息,所述描述信息包括所述数据库变更集的版本、对应的微服务标识和应用标识。

5.如权利要求3或4所述的分布式微服务数据库更新方法,其特征在于,判断与更新前应用版本对应的数据库变更集是否一致包括:获取所述微服务当前应用版本描述信息中的数据库变更集版本,判断与更新前应用版本描述信息中的数据库变更集版本是否一致。

6.如权利要求1所述的分布式微服务数据库更新方法,其特征在于,若需执行的数据库变更操作对应多个微服务,还根据变更操作之间的依赖关系和微服务之间的依赖关系,确定所述多个微服务的更新顺序,并依次触发各个微服务数据库的变更。

7.如权利要求1所述的分布式微服务数据库更新方法,其特征在于,预先将多个数据库类型相应的数据结构、类型和函数,以及各个微服务对应的数据库信息进行数据库类型无关性的抽象封装,形成知识库;根据数据库变更操作执行更新包括:根据需更新的微服务确定数据库类型;

基于知识库,将各个数据库更新操作转换为适用于相应数据库类型的更新脚本;

根据各数据库的更新脚本,对需更新微服务的数据库执行更新。

8.一种云原生环境下的分布式微服务数据库更新系统,其特征在于,包括:微服务集群,用于新版本的微服务应用镜像启动时,触发微服务启动事件,向调度协同服务注册当前应用版本;

调度协同服务,用于获取微服务当前应用版本对应的数据库变更集,判断与更新前应用版本对应的数据库变更集是否一致;若不一致,触发数据库变更集差异对比事件,获取两个数据库变更集之间的差异信息,所述差异信息包括一个或多个数据库变更操作;

数据库更新服务,用于根据所述一个或多个数据库变更操作的依赖关系,获取所有需执行的数据库变更操作及相应微服务;根据所述数据库变更操作,对相应微服务执行更新。

9.如权利要求8所述的分布式微服务数据库更新系统,其特征在于,若需执行的数据库变更操作对应多个微服务,还根据变更操作之间的依赖关系和微服务之间的依赖关系,确定所述多个微服务的更新顺序,并依次触发各个微服务数据库的变更。

10.如权利要求8所述的分布式微服务数据库更新系统,其特征在于,预先将多个数据库类型相应的数据结构、类型和函数,以及各个微服务对应的数据库信息进行数据库类型无关性的抽象封装,形成知识库;根据数据库变更操作执行更新包括:根据需更新的微服务确定数据库类型;

基于知识库,将各个数据库更新操作转换为适用于相应数据库的更新脚本;

根据各数据库的更新脚本,对需更新微服务的数据库执行更新。

说明书 :

一种云原生环境下的分布式微服务数据库更新方法及系统

技术领域

[0001] 本发明属于云计算技术领域,尤其涉及一种云原生环境下的分布式微服务数据库更新方法及系统。

背景技术

[0002] 随着云计算的发展,越来越多的应用面向云构建,从早期业务类应用及各类中间件应用上云,再到AI、大数据等计算类应用全面上云,云原生技术从生态发展到在企业数字化转型中的落地应用都取得了指数级的增长。目前云原生计算基金会(CNCF)中的开源项目已经超过1000个,覆盖计算、存储、网络、数据库、安全、大数据、AI等各个方面。IDC 报告也显示,云原生应用在 2018 年时只有 40%,到 2023 年企业云原生应用占比将超过 80%,企业上云已经成为必然趋势。
[0003] 在云原生的环境下,应用系统可能由多个微服务构成,为了保持微服务独立演进的能力,每个微服务有自己独立的应用服务和数据库,微服务间既自治又是一个协同的整体,微服务的应用部分以容器的形式运行,当微服务发生变更时,软件部分可以通过打包为最新的容器镜像,即可实现新版本微服务的部署运行,但软件的更新往往同时需要有匹配的数据库更新,在分布式微服务场景下,数据库有时不仅仅要更新当前微服务对应的数据库,而且还要更新依赖的公共微服务的数据库,同时各个微服务可以使用不同类型的数据库。
[0004] 已有技术中,通常将各个微服务看成彼此孤立的系统进行更新,这样存在两方面的问题,一是不能很好地保障微服务集群中应用和数据库版本的整体一致性,二是分布式微服务场景下微服务较多,采用逐个微服务进行更新的方式效率低。

发明内容

[0005] 为克服上述现有技术的不足,本发明提供了一种云原生环境下的分布式微服务数据库更新方法及系统,解决了云原生架构下部署微服务数据库依赖更新的问题,保障分布式环境下多微服务的应用和数据库更新一致性的同时,也提升了云原生环境下分布式微服务的更新效率。
[0006] 为实现上述目的,本发明的一个或多个实施例提供了如下技术方案:
[0007] 一种云原生环境下的分布式微服务数据库更新方法,所述方法包括:
[0008] 当新版本的微服务应用镜像启动时,触发微服务启动事件,向调度协同服务注册当前应用版本;
[0009] 调度协同服务获取微服务当前应用版本对应的数据库变更集,判断与更新前应用版本对应的数据库变更集是否一致;
[0010] 若不一致,触发数据库变更集差异对比事件,获取两个数据库变更集之间的差异信息,所述差异信息包括一个或多个数据库变更操作,根据所述一个或多个数据库变更操作的依赖关系,获取所有需执行的数据库变更操作及相应微服务;根据所述数据库变更操作,对相应微服务执行更新。
[0011] 进一步地,所述数据库变更集包括多个数据库变更操作,针对每个数据库变更操作,均记录其与其他数据库变更操作之间的依赖关系,及其他数据库变更操作的来源变更集。
[0012] 进一步地,所述应用版本包括描述信息,所述描述信息包括对应的微服务标识和数据库变更集版本。
[0013] 进一步地,所述数据库变更集包括描述信息,所述描述信息包括对应的微服务标识和应用标识。
[0014] 进一步地,判断与更新前应用版本对应的数据库变更集是否一致包括:
[0015] 获取所述微服务当前应用版本描述信息中的数据库变更集版本,判断与更新前应用版本描述信息中的数据库变更集版本是否一致。
[0016] 进一步地,若需执行的数据库变更操作对应多个微服务,还根据变更操作之间的依赖关系和微服务之间的依赖关系,确定所述多个微服务的更新顺序,并依次触发各个微服务数据库的变更。
[0017] 进一步地,预先将多个数据库类型相应的数据结构、类型和函数,以及各个微服务对应的数据库信息进行数据库类型无关性的抽象封装,形成知识库;根据数据库变更操作执行更新包括:
[0018] 根据需更新的微服务确定数据库类型;
[0019] 基于知识库,将各个数据库更新操作转换为适用于相应数据库类型的更新脚本;
[0020] 根据各数据库的更新脚本,对需更新微服务的数据库执行更新。
[0021] 一个或多个实施例提供了一种云原生环境下的分布式微服务数据库更新系统,包括:
[0022] 微服务集群,用于在新版本的微服务应用镜像启动时,触发微服务启动事件,向调度协同服务注册当前应用版本;
[0023] 调度协同服务,用于获取微服务当前应用版本对应的数据库变更集,判断与更新前应用版本对应的数据库变更集是否一致;若不一致,触发数据库变更集差异对比事件,获取两个数据库变更集之间的差异信息,所述差异信息包括一个或多个数据库变更操作;
[0024] 数据库更新服务,用于根据所述一个或多个数据库变更操作相应的依赖关系,获取所有需执行的数据库变更操作及相应微服务;根据所述数据库变更操作,对相应微服务执行更新。
[0025] 进一步地,若需执行的数据库变更操作对应多个微服务,还根据变更操作之间的依赖关系和微服务之间的依赖关系,确定所述多个微服务的更新顺序,并依次触发各个微服务数据库的变更。
[0026] 进一步地,预先将多个数据库类型相应的数据结构、类型和函数,以及各个微服务对应的数据库信息进行数据库类型无关性的抽象封装,形成知识库;根据数据库变更操作执行更新包括:
[0027] 根据需更新的微服务确定数据库类型;
[0028] 基于知识库,将各个数据库更新操作转换为适用于相应数据库的更新脚本;
[0029] 根据各数据库的更新脚本,对需更新微服务的数据库执行更新。
[0030] 以上一个或多个技术方案存在以下有益效果:
[0031] 本申请基于事件驱动,当微服务当前应用版本和更新前应用版本对应的数据库变更集不一致时,触发数据库更新服务,结合变更操作之间的依赖关系即可确定所有需更新的其他变更操作,加之各个变更操作均记载了来源变更集,而来源变更集与微服务关联,因此能够一次实现多个关联微服务数据库的协同更新,解决了云原生架构下分部署微服务数据库依赖更新的问题,保障分布式环境下多微服务数据库更新一致性的同时,也提升了云原生环境下分布式微服务更新效率。

附图说明

[0032] 构成本发明的一部分的说明书附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。
[0033] 图1为本发明一个或多个实施例中云原生环境下分布式微服务数据库更新方法流程图;
[0034] 图2为以财务共享微服务数据库更新为例的变更集生成阶段(设计时)和更新阶段(运行时)的架构图。

具体实施方式

[0035] 应该指出,以下详细说明都是示例性的,旨在对本发明提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本发明所属技术领域的普通技术人员通常理解的相同含义。
[0036] 需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本发明的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。
[0037] 在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
[0038] 实施例一
[0039] 为了实现微服务发生变更时,其对应的数据库及其依赖的数据库均执行同步更新,本实施例公开了一种云原生环境下分布式微服务数据库更新方法,一次更新涉及多个微服务,由一个集中式的调度协同服务统一调度执行,统一处理依赖和分布式协作,统一管理所有启动的微服务的状态、版本。具体地,采用事件驱动机制,当新版本的微服务应用镜像启动时,触发微服务启动事件,向调度协同服务注册当前应用版本,调度协同服务发现当前版本高于目前运行版本时,触发数据库更新事件,数据库更新事件响应触发指令,检查当前应用版本对应的数据库变更集,对变更集的部署拓扑进行解析,确定需执行的变更操作及相应微服务,从而能够对多个微服务执行更新。
[0040] 以下首先对微服务的数据库变更集进行说明。
[0041] 所述调度协同服务,管理所有微服务的版本,每个版本均对应一个变更集,每个变更集均记录其对应微服务的描述标识,每个变更集中包含多个变更操作,针对每个变更操作,均记录其与其他变更操作之间的依赖关系。所述其他变更操作属于本变更集或其他变更集。
[0042] 微服务包括应用部分和数据库部分,微服务每个应用版本均对应一个数据库变更集。所述数据库变更集中包括多个数据库变更操作。所述应用版本和数据库变更集均包括描述信息,所述应用版本的描述信息包括对应的微服务标识、应用标识和数据库变更集版本,所述数据库变更集的描述信息包括对应微服务标识和应用标识,针对每个数据库变更操作,均记录其与其他变更操作之间的依赖关系,及其他变更操作的来源变更集。
[0043] 为更清楚地阐述数据库变更集,可采用多个表对其进行管理,包括数据库变更集表、数据库变更表和数据库变更关系表。数据库变更集表,用于记录所有数据库变更集描述信息,每一条记录对应一个数据库变更集,记录其对应的微服务描述标识、版本及数据库变更表标识;其中,所述数据库变更表标识,用于关联该数据库变更集对应的数据库变更表,所述变更表中每一条记录对应一个数据库变更操作,记录其对应的应用标识及数据库变更关系表标识;其中,所述数据库变更关系表标识,用于关联各数据库变更操作对应的数据库变更关系表,所述数据库变更关系表用于记录该数据库变更操作与其他数据库变更操作之间的依赖关系,以及其他数据库变更操作的描述信息,包括来源数据库变更集。所述其他数据库变更操作属于本数据库变更集或其他数据库变更集。
[0044] 具体而言,应用版本的描述信息主要包括应用的唯一标识(appid)、名称(name)、所属应用版本(version)、创建时间(createtime)、对应的数据库变更集序号(dbPatchSequence),即数据库变更集版本,以及对应的微服务描述标识,如微服务名称(microServiceName);数据库变更集的描述信息主要包括唯一标识(id)、名称(name)、对应应用标识(appid)、创建时间(createtime)、数据库变更集序号(dbPatchSequence)、数据库变更集(dbChangeSet)、对应的微服务标识。其中,数据库变更集序号用于唯一标识该数据库变更集,用于后续在微服务数据库更新时通过将当前和目前应用版本对应的数据库变更集序号对比,确保应用与数据库变更一致。
[0045] 应用版本的描述信息中记录对应数据库变更集版本,数据库变更集的描述信息中记录对应应用标识以及当前变更集版本,基于此,在更新时能够通过对比两个变更集中的数据库变更集版本来确保应用与数据库的更新一致。
[0046] 上述数据库变更集可通过对开发人员提交的更新代码解析得到,通过DevOps的流水线功能,对所述微服务的上述变更部分进行编译和打包,得到打包制品,所述打包制品包括应用和数据库变更集两部分。对于微服务构建生成的制品,会推送到仓库中进行统一的管理。此处制品主要包括应用和数据库变更集两部分,在云原生环境下,应用会被打包成镜像推送到镜像仓库中,数据库变更集会打包成数据库变更集包,推送到数据库变更集仓库。
[0047] 如上文所述,当新版本的微服务应用镜像启动时,触发微服务启动事件,向调度协同服务注册当前应用版本;在此前提下,所述云原生环境下分布式微服务数据库更新方法具体包括:
[0048] 步骤1:调度协同服务获取所述微服务当前应用版本对应的数据库变更集版本;
[0049] 步骤2:判断当前应用版本对应的数据库变更集版本与更新前应用版本对应的数据库变更集版本是否一致,若一致,执行步骤3,若不一致,触发数据库变更集差异对比事件,获取数据库变更集差异信息,所述差异信息包括一个或多个数据库变更操作,并发送至数据库更新服务,执行步骤4;
[0050] 步骤3:不做任何处理,所述微服务正常运行;
[0051] 步骤4:所述数据库更新服务执行以下更新:根据所述一个或多个数据库变更操作的依赖关系,获取所有需执行的数据库变更操作及相应微服务;根据所述数据库变更操作,对相应微服务执行更新。
[0052] 由于数据库变更集与应用版本和微服务都具有对应关系,通过数据库变更操作之间的依赖关系,即可查找到其他需执行数据库更新操作及其来源变更集,进而根据来源变更集确定要更新的微服务。本领域技术人员可以理解,通过上述变更集部署拓扑的解析,查找到的来源变更集可能属于该微服务的其他版本,也可能属于其他微服务,最后得到的要更新的微服务可能仅包括该微服务本身,也可能包括其他微服务。
[0053] 所述步骤2具体包括:
[0054] 步骤2.1:从镜像仓库拉取所述微服务的当前应用版本,根据所述当前应用版本的描述信息判断其中是否有数据库变更集,若不存在数据库变更集,则微服务正常运行;若存在数据库变更集,进入步骤2.2;
[0055] 步骤2.2:获取当前微服务所连接的数据库信息,查询当前数据库对应的变更集序号,将其与步骤2.1描述信息中的数据库变更集序号进行对比,判断是否需要更新,若描述信息中的数据库变更集序号更大,则需要更新,获取数据库差异信息,发送到数据库更新服务,等待数据库更新。
[0056] 每个微服务在创建后,均会经过启动和注册发现的过程,此时会对微服务之间的依赖关系以及数据库连接信息进行配置,即该微服务的运行依赖哪些其他微服务,对应的数据库与其他哪些数据库有连接关系。其中,所述微服务之间的依赖关系包括当前微服务运行所依赖的公共微服务,例如图2中所示财务共享微服务依赖于系统管理微服务。
[0057] 本实施例将数据库变更集、应用版本和微服务建立关联,通过对数据库变更集中的变更操作配置其与其他变更操作之间依赖关系,并记录其他变更操作的来源变更集,从而基于数据库变更集的部署拓扑解析实现了数据库连接关系的确定。
[0058] 然后根据以被依赖微服务优先的原则,结合数据库连接信息,查找需要更新的微服务和依赖的公共微服务,并得到微服务更新顺序,进行更新操作。现有的数据库连接关系关系仅仅给出了相关数据库,本实施例基于数据库变更操作之间的依赖关系和数据库变更集与微服务的对应关系,确定了微服务及其数据库更新的顺序,为相关联数据库的自动更新提供了保障。
[0059] 所述步骤4主要涉及数据库更新,具体包括:
[0060] 步骤4.1:接收数据库差异信息,查找需要更新数据库的微服务,记录当前副本数,然后将微服务的副本数调整为0,即收缩依赖微服务。为了提高服务可用性和容灾,可能需要启动多个 “服务副本”进行负载均衡,记录当前副本数的目的是便于更新完成后恢复到之前的数量,先收缩再恢复,使得更新仅针对一个微服务,效率较高。
[0061] 步骤4.2:查找所述微服务启动时注册的数据库访问信息,获取需要更新的数据库的访问地址;
[0062] 步骤4.3:获取当前应用版本和更新前应用版本对应的数据库变更集,将二者进行对比,识别未执行的一个或多个变更操作,根据所述一个或多个变更操作与其他变更操作之间的依赖关系,获取其他需执行的变更操作,并根据其他要执行的变更操作确定所属微服务;根据所述变更操作,对相应微服务执行更新。
[0063] 若相应微服务为多个,还根据变更操作之间的依赖关系和微服务之间的依赖关系,确定所述多个微服务的更新顺序和各个微服务中数据库变更操作的更新顺序,再根据所述变更操作和更新顺序,并依次触发各个微服务数据库的变更。先更新依赖的公共微服务的应用及数据库,然后再更新自身的应用及数据库。
[0064] 本实施例中所述依赖关系包括两种,一种是两个业务变更的前后依赖,一个是一个业务变更,需要同时在两个数据库当中执行数据库操作的依赖。例如:一个变更集之内的其中一个变更依赖另一个变更;一个变更集依赖另一个变更集;或者,一个变更集增加新的功能,需要同时在两个微服务数据库中进行相应更新,如库存微服务的一个变更集增加了新的功能,一方面要在库存微服务的数据库中创建表结构和相应的数据,另外还要在平台微服务的数据库中插入对应的菜单。
[0065] 此外,由于不同数据库类型对应不同的脚本语言,若技术人员提交的更新代码不符合该微服务当前的数据库类型,还需单独对此种数据库类型进行适配;若要使得更新过程能够兼容多种数据库,则需要针对每一类数据库均进行相应的脚本编译,费时费力。为使得本申请能够兼容各种数据库类型,预先将各种数据库类型中的数据结构、类型和函数等,与预设标准数据结构、类型和函数等构建映射关系。将多个数据库类型相应的数据结构、类型和函数,以及各个微服务对应的数据库信息进行数据库类型无关性的抽象封装,形成知识库。在执行更新前,根据需要更新的数据库类型,自适应生成适用于相应数据库的脚本。
[0066] 具体地,所述步骤4.3中,根据数据库变更操作,执行更新包括:
[0067] (1)根据需更新的微服务确定数据库类型;
[0068] (2)基于知识库,将各个数据库更新操作转换为适用于相应数据库类型的更新脚本;
[0069] (3)根据各数据库的更新脚本,对需更新微服务的数据库执行更新。
[0070] 基于上述方式,本申请通过预先配置知识库,对各类数据库的数据类型和函数进行封装,实现了各类数据库的扩展和支持,根据数据库变更集描述信息中的数据库更新操作列表文件,自适应地生成与各个数据库相匹配的代码脚本,实现了数据库的兼容,使得整个更新过程屏蔽了数据库的差异,减轻了用户针对不同数据库进行手工编辑脚本的压力,提升了用户体验。本实施例对变更操作解析为分布式可执行的数据库操作并执行,如果微服务采用的数据库不一样,数据库的变更操作以与物理数据库无关的抽象方式进行描述。
[0071] 更新完成之后,将微服务的副本数调整为原来记录的副本数,微服务启动,此次更新完成。
[0072] 在整个更新过程中如果没有全部处理完毕,新版本的微服务是不可访问的,在更新全部处理完毕后,才可访问。
[0073] 本实施例基于事件驱动,当微服务数据库变更集存在差异时,触发数据库更新服务,数据库更新服务基于传入变更集信息,获取数据库变更集,然后更新微服务数据库。解决了云原生架构下分部署微服务数据库依赖更新的问题,保障分布式环境下多微服务数据库更新一致性,提升云原生环境下分布式微服务更新效率。
[0074] 为对本实施例所提出方案进行更为清楚的阐述,以财务系统为例,进行以下说明:财务系统主要包含财务管理、资金管理、预算管理、基础数据管理、系统管理等微服务。财务管理微服务依赖于系统管理微服务和基础数据管理微服务,为了满足更多用户的需求,每个微服务都启动了5个副本。并且,其中涉及的数据库服务包含oracle数据库和国产DM数据库。
[0075] 由于业务需求,现要对财务管理微服务进行更新,在升级财务管理微服务时,首先拉取财务管理微服务镜像,将其描述信息中关联的数据库变更集版本,与所述财务管理微服务实际连接数据库变更集版本进行比对,如果当前数据库变更集版本一致,不做处理;如果不一致,则根据对比结果,拉取数据库变更集。
[0076] 其中,在拉取数据库变更集时,如果涉及到依赖于基础数据微服务的更新,会触发基础数据应用的版本对比,若基础数据应用需要更新,则进行更新顺序的编排:先更新依赖的基础数据应用及数据库、再更新财务管理应用及数据库。
[0077] 在更新过程中,对于每个待更新的微服务:财务管理微服务及其基础数据管理微服务,均先将待更新微服务的副本缩减。更新过程中系统会根据当前连接的数据库类型,将数据库变更集中的代码编译成当前类型数据库所需的脚本进行更新。例如本次更新需要新建一个FITemp表,其中isenable类型是布尔,在执行oracle数据库时编译成number(1,0),在执行DM数据库时编译成bit。Description字段类型是大文本,在执行oracle数据库时编译成Clob,在执行DM数据库时编译成Text。表更新完成后再将服务副本恢复到之前的数量,完成整个微服务系统的一次更新。
[0078] 实施例二
[0079] 基于实施例一中所述的方法,本实施例提供了一种云原生环境下的分布式微服务数据库更新系统,包括:
[0080] 微服务集群,存在微服务更新时,所述微服务向调度协同服务注册当前应用版本;
[0081] 调度协同服务,用于获取微服务当前应用版本对应的数据库变更集,判断与更新前应用版本对应的数据库变更集是否一致;若不一致,获取两个数据库变更集之间的差异信息,所述差异信息包括一个或多个数据库变更操作;
[0082] 数据库更新服务,用于根据所述一个或多个数据库变更操作相应的依赖关系,获取所有需执行的数据库变更操作及相应微服务;根据所述数据库变更操作,对相应微服务执行更新。
[0083] 上述模块具体的实施过程参见方法实施例一相应步骤的说明部分。
[0084] 以上模块在云原生环境下可以是服务的形式,也可以作为某个服务中的一个程序模块,在此不做限定。
[0085] 上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。