掌桥专利:专业的专利平台
掌桥专利
首页

一种服务更新方法、装置、设备及存储介质

文献发布时间:2024-01-17 01:23:17


一种服务更新方法、装置、设备及存储介质

技术领域

本发明涉及计算机技术领域,特别涉及一种服务更新方法、装置、设备及存储介质。

背景技术

目前,现有技术方案在进行服务更新的过程中,往往仅使用自然流量直接进行灰度以完成服务更新,这样一来,仅可以可能支持普通服务的更新诉求,但对需要较高的高可用性的服务更新,具有一定的缺陷。

例如,若在针对互联网电商系统中需要较高的高可用性的订单服务进行更新过程中产生问题,排查难度较高,无法快速纠错,进而会对平台的电商销售产生不良影响,或导致平台产生资损,或导致用户客诉。

发明内容

有鉴于此,本发明的目的在于提供一种服务更新方法、装置、设备及存储介质,能够有效保证极高的高可用性,并能够平滑地完成服务更新。其具体方案如下:

第一方面,本申请提供了一种服务更新方法,包括:

当满足预设服务更新触发条件时,基于预设服务校验规则对目标新服务的数据读写性能进行验证;

通过利用预设性能压测工具对与所述目标新服务对应的第一全链路进行评估来确定所述第一全链路是否达标;

若是,则基于预先确定的目标流量灰度策略并利用验证通过后的所述目标新服务,以迭代的形式由简到难地对目标老服务中的各服务场景进行灰度升级;所述目标流量灰度策略为包括每轮迭代时进行灰度升级的子服务场景或复合服务场景以及相应的场景流量灰度比例的策略。

所述基于预设服务校验规则对目标新服务的数据读写性能进行验证,包括:

通过异步实时调用所述目标新服务并对所述目标新服务和所述目标老服务在第一目标子服务场景下运行时产生的数据进行数据对比,以对所述目标新服务读数据的准确性进行验证;所述第一目标子服务场景为与所述目标老服务对应的第二全链路中读取数据的子服务场景;

通过异步实时调用所述目标新服务,并分别将所述目标老服务以及所述目标新服务在第二目标子服务场景下运行时产生的数据保存至正式表以及相应的影子表中来进行数据对比,以对所述目标新服务写数据的准确性进行验证;所述第二目标子服务场景为所述第二全链路中写入数据的子服务场景;

并且,所述基于预设服务校验规则对目标新服务的数据读写性能进行验证之后,还包括:

若针对所述目标新服务的数据读写性能的验证未通过,则对所述目标新服务进行相应的修正,以得到验证通过后的所述目标新服务。

可选的,所述基于预先确定的目标流量灰度策略并利用验证通过后的所述目标新服务,以迭代的形式由简到难地对所述目标老服务中的各服务场景进行灰度升级之前,还包括:

基于预设代码段对与所述目标老服务对应的各所述子服务场景进行区分,并根据不同的组合数对所述子服务场景进行多种组合得到多种复合服务场景,以便基于各所述子服务场景的难易程度以及组合后得到的各所述复合服务场景的难易程度得到所述目标流量灰度策略。

可选的,所述通过利用预设性能压测工具对与所述目标新服务对应的第一全链路进行评估来确定所述第一全链路是否达标,包括:

利用预设性能压测工具确定与所述第一全链路对应的每秒事务数量、95线响应时间值,并通过判断所述每秒事务数量以及所述95线响应时间值是否均不小于相应阈值来确定所述第一全链路是否达标。

可选的,所述服务更新方法,还包括:

在进行灰度升级的过程中,通过调用预设旁路核对服务对与所述目标新服务对应的所述第一全链路中依赖外部服务运行的服务场景进行验证,以便及时触发相应的修正操作。

可选的,所述服务更新方法,还包括:

在进行灰度升级的过程中,通过在与所述目标新服务对应的所述第一全链路中动态注入预设模拟故障,以完成相应的故障演练操作。

可选的,所述基于预先确定的目标流量灰度策略并利用验证通过后的所述目标新服务,以迭代的形式由简到难地对目标老服务中的各服务场景进行灰度升级之后,还包括:

若所述目标新服务在运行过程中存在异常情况,则基于预设业务降级开关秒级切换至所述目标老服务,以保障服务的正常运行。

第二方面,本申请提供了一种服务更新装置,包括:

服务性能验证模块,用于当满足预设服务更新触发条件时,基于预设服务校验规则对目标新服务的数据读写性能进行验证;

全链路评估模块,用于通过利用预设性能压测工具对与所述目标新服务对应的第一全链路进行评估来确定所述第一全链路是否达标;

服务更新模块,用于若是,则基于预先确定的目标流量灰度策略并利用验证通过后的所述目标新服务,以迭代的形式由简到难地对目标老服务中的各服务场景进行灰度升级;所述目标流量灰度策略为包括每轮迭代时进行灰度升级的子服务场景或复合服务场景以及相应的场景流量灰度比例的策略。

第三方面,本申请提供了一种电子设备,包括:

存储器,用于保存计算机程序;

处理器,用于执行所述计算机程序,以实现前述的服务更新方法的步骤。

第四方面,本申请提供了一种计算机可读存储介质,用于保存计算机程序,所述计算机程序被处理器执行时实现前述的服务更新方法的步骤。

可见,本申请中,当满足预设服务更新触发条件时,基于预设服务校验规则对目标新服务的数据读写性能进行验证;通过利用预设性能压测工具对与所述目标新服务对应的第一全链路进行评估来确定所述第一全链路是否达标;若是,则基于预先确定的目标流量灰度策略并利用验证通过后的所述目标新服务,以迭代的形式由简到难地对目标老服务中的各服务场景进行灰度升级;所述目标流量灰度策略为包括每轮迭代时进行灰度升级的子服务场景或复合服务场景以及相应的场景流量灰度比例的策略。本申请通过对目标新服务进行检验并在服务更新的过程中针对目标老服务中的各服务场景由简到难地进行灰度发布,这样一来,有效保证了极高的高可用性,并使得整个服务更新过程对上游业务方完全透明,能够平滑地完成服务更新。

附图说明

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

图1为本申请提供的一种服务更新方法流程图;

图2为本申请提供的一种具体的服务更新方法流程示意图;

图3为本申请提供的一种服务更新装置结构示意图;

图4为本申请提供的一种电子设备结构图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

目前,现有技术方案在进行服务更新的过程中,往往仅使用自然流量直接进行灰度以完成服务更新,这样一来,仅可以可能支持普通服务的更新诉求,但对需要较高的高可用性的服务更新,具有一定的缺陷。例如,若在针对互联网电商系统中需要较高的高可用性的订单服务进行更新过程中产生问题,则排查难度比较高,且无法快速纠错,进而对平台的电商销售产生不良影响,或导致平台产生资损,或导致用户客诉。为此,本申请提供了一种服务更新方案,能够有效保证极高的高可用性。

参见图1所示,本发明实施例公开了一种服务更新方法,包括:

步骤S11、当满足预设服务更新触发条件时,基于预设服务校验规则对目标新服务的数据读写性能进行验证。

具体地,本实施例中,所述基于预设服务校验规则对目标新服务的数据读写性能进行验证,具体可以包括:通过异步实时调用所述目标新服务并对所述目标新服务和所述目标老服务在第一目标子服务场景下运行时产生的数据进行数据对比,以对所述目标新服务读数据的准确性进行验证;所述第一目标子服务场景为与所述目标老服务对应的第二全链路中读取数据的子服务场景;通过异步实时调用所述目标新服务,并分别将所述目标老服务以及所述目标新服务在第二目标子服务场景下运行时产生的数据保存至正式表以及相应的影子表中来进行数据对比,以对所述目标新服务写数据的准确性进行验证;所述第二目标子服务场景为所述第二全链路中写入数据的子服务场景;并且,需要理解的是,所述基于预设服务校验规则对目标新服务的数据读写性能进行验证之后,具体还可以包括:若针对所述目标新服务的数据读写性能的验证未通过,则对所述目标新服务进行相应的修正,以得到验证通过后的所述目标新服务。其中,所述影子表为具有和正式的数据库表,也即所述正式表一样的表结构的副本表。可以理解的是,参见图2所示,在灰度流量之前,也即服务更新还未开始时,需通过线上的真实数据对所述目标新服务数据读写的准确性进行验证,且此过程不会对线上用户产生任何影响。这样一来,可以避免更新后由于所述目标新服务数据读写不准确所导致的客诉、平台资损等不良影响。

步骤S12、通过利用预设性能压测工具对与所述目标新服务对应的第一全链路进行评估来确定所述第一全链路是否达标。

本实施例中,需要理解的是,参见图2所示,在对所述目标新服务的数据读写性能进行验证后,还需要进行链路的性能压测,以避免后续进行服务更新后由于链路性能所不足导致的故障。具体地,所述通过利用预设性能压测工具对与所述目标新服务对应的第一全链路进行评估来确定所述第一全链路是否达标,具体可以包括:利用预设性能压测工具确定与所述第一全链路对应的每秒事务数量、95线响应时间值,并通过判断所述每秒事务数量以及所述95线响应时间值是否均不小于相应阈值来确定所述第一全链路是否达标。可以理解的是,本实施例具体是通过评估所述第一全链路的所述每秒事务数量(Transactions Per Second,TPS)以及所述95线响应时间值(response time95line,RT95)是否均不小于相应阈值,也即所述第一全链路是否满足预设性能条件来确定所述第一全链路是否达标。其中,所述RT95可以理解为百分之95的服务请求的响应时间,进一步可以理解的是,分别与所述TPS以及所述RT95对应的阈值大小可以相同也可以不相同,具体可以由相关人员预先基于实际需求进行设置。

步骤S13、若是,则基于预先确定的目标流量灰度策略并利用验证通过后的所述目标新服务,以迭代的形式由简到难地对目标老服务中的各服务场景进行灰度升级;所述目标流量灰度策略为包括每轮迭代时进行灰度升级的子服务场景或复合服务场景以及相应的场景流量灰度比例的策略。

具体地,本实施例中,参见图2所示,所述基于预先确定的目标流量灰度策略并利用验证通过后的所述目标新服务,以迭代的形式由简到难地对所述目标老服务中的各服务场景进行灰度升级之前,具体还可以包括:基于预设代码段对与所述目标老服务对应的各所述子服务场景进行区分,并根据不同的组合数对所述子服务场景进行多种组合得到多种复合服务场景,以便基于各所述子服务场景的难易程度以及组合后得到的各所述复合服务场景的难易程度得到所述目标流量灰度策略。例如,若互联网电商平台中的订单服务为目标老服务,则需预先针对所述订单服务进行包括分别与普通订单、红包订单、活动订单、联合会员订单、直冲订单、签约订单和自动续费订单对应的子服务场景的区分以及并得到各种复合服务场景,以确定相应的目标流量灰度策略。之后在进行灰度升级时,先灰度简单的服务场景:普通订单的子服务场景,并且支持当前子服务场景的场景流量灰度比例(1%、5%、10%、20%、50%、100%的放量梯度)。之前的完成100%灰度之后,再开始灰度红包订单的子服务场景,并且支持当前子服务场景的场景流量灰度比例(1%、5%、10%、20%、50%、100%的放量梯度),等单独的简单子服务场景都完成灰度升级后,再开始灰度2种子服务场景组合的复合服务场景,然后再开始灰度多种子服务场景组合的复合服务场景,如此由简到难地依次进行灰度升级,直到全部服务场景升级完成。

进一步的,参见图2所示,在预先确定针对所述目标老服务的所述目标流量灰度策略的同时,还需确定相应的白名单,所述白名单可以为包括单独指定的小白鼠体验新服务的用户的名单。此外,还需预先设置相应的业务降级开关,以便在灰度升级之后,若所述目标新服务在运行过程中存在异常情况,则基于预设业务降级开关秒级切换至所述目标老服务,以保障服务的正常运行。

参见图2所示,需要理解的是,在进行灰度升级的过程中,通过调用预设旁路核对服务对与所述目标新服务对应的所述第一全链路中依赖外部服务运行的服务场景进行验证,以便及时触发相应的修正操作。其中,所述预设旁路核对服务是一个异步执行的单独服务。这样一来,通过旁路核对在不对当前进程产生影响的情况下可以提前检测到一些问题,例如,所述订单服务中,若一笔订单需要使用到所述红包服务,在整个正向的业务功能闭环里,需先请求所述红包服务,之后所述红包服务告知所述订单服务核销红包成功并返回相应的成功标识,然后所述订单服务完成整个订单功能的闭环(整个闭环看起来没有问题)。但底层事实上无法确定当前的红包是否真的被当前订单核销掉,存在未核销或核销错误但返回成功标识的情况。上述问题通过所述预设旁路核对服务可以提前发现,进而进行修正以避免再次发生。同时,在进行灰度升级的过程中,通过在与所述目标新服务对应的所述第一全链路中动态注入预设模拟故障,以完成相应的故障演练操作,从而通过所述故障演练操作得到相应的自动发现故障的能力以及修复处理问题的能力。可以理解的是,所述预设模拟故障的种类越多,所述自动发现故障的能力以及所述修复处理问题的能力也随之越强。

由此可见,本申请实施例中,当满足预设服务更新触发条件时,基于预设服务校验规则对目标新服务的数据读写性能进行验证;通过利用预设性能压测工具对与所述目标新服务对应的第一全链路进行评估来确定所述第一全链路是否达标;若是,则基于预先确定的目标流量灰度策略并利用验证通过后的所述目标新服务,以迭代的形式由简到难地对目标老服务中的各服务场景进行灰度升级;所述目标流量灰度策略为包括每轮迭代时进行灰度升级的子服务场景或复合服务场景以及相应的场景流量灰度比例的策略。本申请通过对目标新服务进行检验并在服务更新的过程中针对目标老服务中的各服务场景由简到难地进行灰度发布,这样一来,有效保证了极高的高可用性,并使得整个服务更新过程对上游业务方完全透明,能够平滑地完成服务更新。

参见图3所示,本申请实施例还相应公开了一种服务更新装置,包括:

服务性能验证模块11,用于当满足预设服务更新触发条件时,基于预设服务校验规则对目标新服务的数据读写性能进行验证;

全链路评估模块12,用于通过利用预设性能压测工具对与所述目标新服务对应的第一全链路进行评估来确定所述第一全链路是否达标;

服务更新模块13,用于若是,则基于预先确定的目标流量灰度策略并利用验证通过后的所述目标新服务,以迭代的形式由简到难地对目标老服务中的各服务场景进行灰度升级;所述目标流量灰度策略为包括每轮迭代时进行灰度升级的子服务场景或复合服务场景以及相应的场景流量灰度比例的策略。

其中,关于上述各个模块更加具体的工作过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。

由此可见,本申请中,当满足预设服务更新触发条件时,基于预设服务校验规则对目标新服务的数据读写性能进行验证;通过利用预设性能压测工具对与所述目标新服务对应的第一全链路进行评估来确定所述第一全链路是否达标;若是,则基于预先确定的目标流量灰度策略并利用验证通过后的所述目标新服务,以迭代的形式由简到难地对目标老服务中的各服务场景进行灰度升级;所述目标流量灰度策略为包括每轮迭代时进行灰度升级的子服务场景或复合服务场景以及相应的场景流量灰度比例的策略。本申请通过对目标新服务进行检验并在服务更新的过程中针对目标老服务中的各服务场景由简到难地进行灰度发布,这样一来,有效保证了极高的高可用性,并使得整个服务更新过程对上游业务方完全透明,能够平滑地完成服务更新。

在一些具体实施例中,所述服务性能验证模块11,具体可以包括:

读数据性能验证单元,用于通过异步实时调用所述目标新服务并对所述目标新服务和所述目标老服务在第一目标子服务场景下运行时产生的数据进行数据对比,以对所述目标新服务读数据的准确性进行验证;所述第一目标子服务场景为与所述目标老服务对应的第二全链路中读取数据的子服务场景;

写数据性能验证单元,用于通过异步实时调用所述目标新服务,并分别将所述目标老服务以及所述目标新服务在第二目标子服务场景下运行时产生的数据保存至正式表以及相应的影子表中来进行数据对比,以对所述目标新服务写数据的准确性进行验证;所述第二目标子服务场景为所述第二全链路中写入数据的子服务场景;

并且,所述服务更新装置,具体还可以包括:

服务修正单元,用于若针对所述目标新服务的数据读写性能的验证未通过,则对所述目标新服务进行相应的修正,以得到验证通过后的所述目标新服务。

在一些具体实施例中,所述服务更新装置,具体还可以包括:

目标流量灰度策略确定单元,用于基于预设代码段对与所述目标老服务对应的各所述子服务场景进行区分,并根据不同的组合数对所述子服务场景进行多种组合得到多种复合服务场景,以便基于各所述子服务场景的难易程度以及组合后得到的各所述复合服务场景的难易程度得到所述目标流量灰度策略。

在一些具体实施例中,所述全链路评估模块12,具体可以包括:

链路性能压测单元,用于利用预设性能压测工具确定与所述第一全链路对应的每秒事务数量、95线响应时间值,并通过判断所述每秒事务数量以及所述95线响应时间值是否均不小于相应阈值来确定所述第一全链路是否达标。

在一些具体实施例中,所述服务更新装置,具体还可以包括:

外部服务依赖场景验证单元,用于在进行灰度升级的过程中,通过调用预设旁路核对服务对与所述目标新服务对应的所述第一全链路中依赖外部服务运行的服务场景进行验证,以便及时触发相应的修正操作。

在一些具体实施例中,所述服务更新装置,具体还可以包括:

故障演练单元,用于在进行灰度升级的过程中,通过在与所述目标新服务对应的所述第一全链路中动态注入预设模拟故障,以完成相应的故障演练操作。

在一些具体实施例中,所述服务更新装置,具体还可以包括:

业务降级单元,用于若所述目标新服务在运行过程中存在异常情况,则基于预设业务降级开关秒级切换至所述目标老服务,以保障服务的正常运行。

进一步的,本申请实施例还公开了一种电子设备,图4是根据一示例性实施例示出的电子设备20结构图,图中的内容不能认为是对本申请的使用范围的任何限制。

图4为本申请实施例提供的一种电子设备20的结构示意图。该电子设备20,具体可以包括:至少一个处理器21、至少一个存储器22、电源23、通信接口24、输入输出接口25和通信总线26。其中,所述存储器22用于存储计算机程序,所述计算机程序由所述处理器21加载并执行,以实现前述任一实施例公开的服务更新方法中的相关步骤。另外,本实施例中的电子设备20具体可以为电子计算机。

本实施例中,电源23用于为电子设备20上的各硬件设备提供工作电压;通信接口24能够为电子设备20创建与外界设备之间的数据传输通道,其所遵循的通信协议是能够适用于本申请技术方案的任意通信协议,在此不对其进行具体限定;输入输出接口25,用于获取外界输入数据或向外界输出数据,其具体的接口类型可以根据具体应用需要进行选取,在此不进行具体限定。

另外,存储器22作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,其上所存储的资源可以包括操作系统221、计算机程序222等,存储方式可以是短暂存储或者永久存储。

其中,操作系统221用于管理与控制电子设备20上的各硬件设备以及计算机程序222,其可以是Windows Server、Netware、Unix、Linux等。计算机程序222除了包括能够用于完成前述任一实施例公开的由电子设备20执行的服务更新方法的计算机程序之外,还可以进一步包括能够用于完成其他特定工作的计算机程序。

进一步的,本申请还公开了一种计算机可读存储介质,用于存储计算机程序;其中,所述计算机程序被处理器执行时实现前述公开的服务更新方法。关于该方法的具体步骤可以参考前述实施例中公开的相应内容,在此不再进行赘述。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上对本申请所提供的技术方案进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

技术分类

06120116171931