系统更新方法、装置、电子设备和可读存储介质与流程

文档序号:20767246发布日期:2020-05-15 19:07阅读:138来源:国知局
系统更新方法、装置、电子设备和可读存储介质与流程

本申请涉及软件系统技术领域,尤其涉及一种系统更新方法、装置、电子设备和可读存储介质。



背景技术:

随着互联网的发展,出现越来越多的线上促销等活动。活动类的需求有一个特性,就是很强的定制性以及具有在线有效期。在活动下线后,除了一些组件化的功能外,定制的后台业务逻辑就不再会被使用。但是在活动定制开发过程中,可能使用的一些工程启动后预处理、存储和缓存组件、消息组件等逻辑,由于不依赖于外部访问,在这个活动下线后的工程启动时还是会执行。这些逻辑如果不处理,随着需求的增多,会导致项目启动变慢,不必要的依赖过多,影响服务的稳定性。

针对相关技术中存在的诸多技术问题,目前尚未提供有效的解决方案。



技术实现要素:

为了解决上述技术问题或者至少部分地解决上述技术问题,本申请提供了一种系统更新方法、装置、电子设备和可读存储介质。

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

确定待更新业务的标识信息,所述待更新业务为待更新系统中进行业务逻辑下线的业务,所述业务逻辑包括:与所述待更新业务相关的方法之间的调用关系;

根据所述标识信息,在所述待更新系统中查询与所述待更新业务对应的所述业务逻辑;

根据所述待更新系统及所述业务逻辑得到更新后系统;

对所述更新后系统进行上线。

可选的,如前述的系统更新方法,所述根据所述标识信息,在所述待更新系统中查询与所述待更新业务对应的所述业务逻辑,包括:

根据所述标识信息以及预设的关联关系,在所述待更新系统中定位到对应的第一方法,所述第一方法为所述待更新业务中用于接受访问的方法;

根据所述第一方法,在所述待更新系统中遍历得到所述待更新业务对应的所述业务逻辑。

可选的,如前述的系统更新方法,所述根据所述第一方法,在所述待更新系统中遍历得到所述待更新业务对应的所述业务逻辑,包括:

确定所述待更新系统的各架构层;

根据所述第一方法依次对各架构层进行遍历,确定各架构层中与所述第一方法存在关联关系的第二方法;

根据所述关联关系得到所述业务逻辑。

可选的,如前述的系统更新方法,所述根据所述待更新系统及所述业务逻辑得到更新后系统,包括:

对所述业务逻辑按照预设注释策略进行注释,得到注释后逻辑;

根据所述注释后逻辑确定待下线代码;

根据所述待更新系统以及待下线代码得到所述更新后代码;

根据所述更新后代码确定所述更新后系统。

可选的,如前述的系统更新方法,所述根据所述待更新系统及所述业务逻辑得到更新后系统,包括:

在所述待更新系统中对所述业务逻辑进行关联关系解除,得到所述更新后代码;

根据所述更新后代码确定所述更新后系统。

可选的,如前述的系统更新方法,所述对所述更新后系统进行上线,包括:

对所述更新后系统进行验证,并得到验证结果;

在所述验证结果满足预设要求时,将所述待更新系统替换为所述更新后系统。

可选的,如前述的系统更新方法,所述对所述更新后代码进行验证,包括:

将所述更新后系统对应的更新后代码提交至代码库;

在测试环境满足预设要求时,对所述更新后代码按照预设功能需求进行验证。

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

确定模块,用于确定待更新业务的标识信息,所述待更新业务为待更新系统中进行业务逻辑更新的业务,所述业务逻辑包括:与所述待更新业务相关的方法之间的调用关系;

定位模块,用于根据所述标识信息,在所述待更新系统中查询与所述待更新业务对应的所述业务逻辑;

第三确定模块,用于根据所述待更新系统及所述业务逻辑得到更新后系统;

上线模块,用于对所述更新后系统进行上线。

第三方面,本申请提供了一种电子设备,包括:处理器、通信接口、存储器和通信总线,其中,所述处理器、通信接口和存储器通过通信总线完成相互间的通信;

所述存储器,用于存放计算机程序;

所述处理器,用于执行所述计算机程序时,实现如前述任一项所述的处理方法。

第四方面,本申请提供了一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如前述任一项所述的处理方法。

本申请实施例提供了一种系统更新方法、装置、电子设备和可读存储介质,其中方法包括:确定待更新业务的标识信息,所述待更新业务为待更新系统中进行业务逻辑更新的业务,所述业务逻辑包括:与所述待更新业务相关的方法之间的调用关系;根据所述标识信息,在所述待更新系统中查询与所述待更新业务对应的所述业务逻辑;根据所述待更新系统及所述业务逻辑得到更新后系统;对所述更新后系统进行上线。通过本申请实施例提供的上述技术方案可以在通过诸如活动中台等业务系统进行业务下线的时候,将该业务相关的业务逻辑对应的数据随业务下线而清除,进而可以避免出现随着需求的增多,会导致业务启动变慢,影响服务的稳定性的情况出现。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。

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

图1为本申请实施例提供的一种系统更新方法的流程示意图;

图2为本申请另一实施例提供的一种系统更新方法的流程示意图;

图3为本申请另一实施例提供的一种系统更新方法的流程示意图;

图4为本申请另一实施例提供的一种系统更新方法的流程示意图;

图5为本申请另一实施例提供的一种系统更新方法的流程示意图;

图6为本申请另一实施例提供的一种系统更新方法的流程示意图;

图7为本申请另一实施例提供的一种系统更新方法的流程示意图;

图8为本申请一种应用例中的系统更新方法的流程示意图;

图9为本申请实施例提供的一种系统更新装置的框图;

图10为本申请实施例提供的一种电子设备的结构示意图。

具体实施方式

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

图1为本申请实施例提供的一种系统更新方法,包括如下所述步骤s1至s4:

步骤s1.确定待更新业务的标识信息,待更新业务为待更新系统中进行业务逻辑更新的业务,业务逻辑包括:与待更新业务相关的方法之间的调用关系。

具体的,待更新系统可以是活动运营中台,活动运营中台为管理活动需求的平台,例如:商品系统、订单系统、营销素材中心、分销系统,待更新业务可以是待更新系统中的一个活动工程,活动工程可以是用于实现某一活动的所有方法及各方法间关系的集合;待更新业务可以是进行逻辑更新的业务,也可以是进行逻辑删除的业务,且一般的,进行逻辑更新和逻辑删除都需要对原有逻辑进行删除。

一般的,一个待更新系统中会存在多个业务(即:活动工程),且待更新业务可以是例如会员充值优惠活动等活动工程;标识信息可以是:id、地址等能够定位至该待更新业务的信息;且一般的,由于标识信息是用于使访问者能够通过其准确定位到特定的业务,因此标识信息与待更新业务之间是存在唯一对应关系的。

具体的,每个待更新业务一般都是由有多个方法构成的;而将各个方法进行结合,构成一个整体的业务,则需要对应的业务逻辑;一般的各个方法间的依赖引用关系便是构成整体业务逻辑的子逻辑,其中,依赖引用关系包括:不同方法间相互调用及访问关系;因此,由上可知,业务逻辑即为实现业务中所有功能,将各个方法相互关联的整体逻辑关系。

步骤s2.根据标识信息,在待更新系统中查询与待更新业务对应的业务逻辑。

基于步骤s1所述内容,由于标识信息能够定位至待更新业务中的方法,因此能够根据各个方法间的依赖引用关系确定与待更新业务对应的业务逻辑。

步骤s3.根据待更新系统及业务逻辑得到更新后系统。

具体的,本申请实施例的其中一个目的是将业务逻辑从待更新系统中删除,以防止在业务下线之后,业务逻辑及关联的方法仍旧在后台执行,因此,更新后系统不包括所述业务逻辑;一般的待更新系统中原有的方法不进行删除。

步骤s4.对更新后系统进行上线。

一般的,对更新后系统进行上线之前,会对待更新系统进行下线处理。通过本申请实施例中的方法,可以彻底对待更新业务进行完全的删除,举例来说,当待更新业务的业务逻辑中的方法包括实现预处理、存储和缓存组件、消息组件等相关方法时,可以通过将该业务逻辑删除,实现各个方法间的调用关系的解除,进而各个方法之间不存在与该待更新业务相关的关联关系,进而无需进行不必要的预处理,存储,缓存,生成消息等方法的执行,达到了去除不必要的依赖,提高系统整体的稳定性的目的。

如图2所示,在一些实施例中,如前述的系统更新方法,步骤s2.根据标识信息,在待更新系统中查询与待更新业务对应的业务逻辑,包括如下所述步骤s21和s22:

步骤s21.根据标识信息以及预设的关联关系,在待更新系统中定位到对应的第一方法,第一方法为待更新业务中用于接受访问的方法。

具体的,第一方法为待更新业务中,能够通过标识信息定位的方法,由于标识信息一般情况下是id或地址,因此,与其绑定的方法一般情况下是用于接受访问的方法。进一步的,待更新业务的主页可能存在多个可交互模块,而每个可交互模块都有对应的方法,因此,每个标识信息可以对应有一个或多个第一方法。举例的,以在线视频业务系统为例:在开发时,可以在该在线视频业务系统的主页设置多个功能模块(例如:会员充值,个人信息,连续剧主页,电影主页等多个功能模块,其中每个功能模块都有对应的方法),然后通过该在线视频业务系统的主页地址(即所述标识信息),即可访问到主页上设置的多个功能模块,因此便实现了标识信息与第一方法之间的预设的关联关系的设定。

其中一种可选的实现方法可以是:待更新业务可以基于spring容器实现,每一个业务动接口地址都会通过spring的注解绑定到具体的方法上。可通过spring容器提供的api来定位到具体方法。其中,spring容器是spring框架的核心,可以用来管理方法,把它们连接在一起,配置它们,并管理他们的整个生命周期从创建到销毁。api(applicationprogramminginterface,应用程序接口)是一些预先定义的函数,或指软件系统不同组成部分衔接的约定。

步骤s22.根据第一方法,在待更新系统中遍历得到待更新业务对应的业务逻辑。

具体的,同一个业务中的各个方法都直接或间接地关联至一个第一方法,因此在得到了第一方法之后,便可在待更新系统中对待更新业务进行遍历得到所有相关的方法,因此也可以得到待更新业务对应的业务逻辑。

如图3所示,在一些实施例中,如前述的系统更新方法,所述步骤s21根据第一方法,在待更新系统中遍历得到待更新业务对应的业务逻辑,包括如下所述步骤s211至s213:

步骤s211.确定待更新系统的各架构层。

具体的,每个系统都是基于某一架构建立得到的,举例来说,当待更新系统是基于mvc架构时,其对应的架构层依次包括controller层,service层和dao层。

其中:

dao层也称为数据访问层,全称为dataaccessobject,属于一种比较底层,比较基础的操作,具体到对于某个表的增删改查,也就是说某个dao一定是和数据库的某一张表一一对应的,其中封装了增删改查基本操作。

service层也称为服务层,被称为服务,主要用于对一个或多个dao进行的再次封装,封装成一个服务。

controler层主要负责请求转发,接受页面过来的参数,传给service处理,接到返回值,再传给页面。

总体来说:

dao层主要面向数据库,service面向业务。后端开发时先数据库设计出所有表,然后对每一张表设计出dao层,然后根据具体的业务逻辑进一步封装dao层成一个service层,对外提供成一个服务。步骤s212.根据第一方法依次对各架构层进行遍历,确定各架构层中与第一方法存在关联关系的第二方法。

具体的,以前述实施例中采用mvc架构为例,可以采用深度优先遍历的方法,在根据标识信息定位到待更新业务的相关功能在controller层中的具体方法之后,再改该方法作为遍历初始节点出发,依次向service层和dao层遍历相关联的其他所有节点,直到与该初始节点相关的所有节点均已遍历。

步骤s213.根据关联关系得到业务逻辑。

具体的,在得到各个关联关系之后,即可确定各个方法间的依赖引用关系,进而可以得到该系统的整体业务逻辑。

如图4所示,在一些实施例中,如前述的系统更新方法,步骤s3根据待更新系统及业务逻辑得到更新后系统,包括如下所述步骤s311至s314:

步骤s311.对业务逻辑按照预设注释策略进行注释,得到注释后逻辑。

步骤s312.根据注释后逻辑确定待下线代码。

步骤s313.根据待更新系统以及待下线代码得到更新后代码。

步骤s314.根据更新后代码确定更新后系统。

具体的,预设注释策略可以是按照特定注释要求对实现业务逻辑部分的代码进行标注;并且,在对业务逻辑进行注释之后得到注释后逻辑(即:包括注释内容的业务逻辑);进一步的,注释过程可以通过机器匹配的方式进行,也可以通过软件开发人员人为标注的方式进行;因此,在注释之后即可根据注释内容定位得到待更新业务系统中的待下线代码;因此,可以根据批注对待下线代码统一进行删除;并且将待下线代码从待更新系统删除后,即可得到更新后代码以及更新后系统。

根据本实施例中的方法,可以准确定位出待下线代码,并且能够对代码进行自动删除,有效降低开发人员的工作量,提高准确性。

如图5所示,在一些实施例中,如前述的系统更新方法,步骤s3根据待更新系统及业务逻辑得到更新后系统,包括如下所述步骤s321和s322:

步骤s321.在待更新系统中对业务逻辑进行关联关系解除,得到更新后代码。步骤s322.根据更新后代码确定更新后系统。

具体的,业务逻辑本身即为与待更新业务对应的各种方法间关联关系的总和,因此对业务逻辑进行关联关系解除,可以为:每确定一个关联关系即进行删除,或者在确定所有关联关系(即业务逻辑)之后统一进行删除;一般的,各种方法间的关联关系是通过代码实现的,因此在对业务逻辑进行关联关系解除,得到的是对待更新系统进行部分代码删除后的更新后代码。因此,也可以根据更新后代码确定更新后系统。

如图6所示,在一些实施例中,如前述的系统更新方法,步骤s4对更新后系统进行上线,包括如下所述步骤s41和步骤s42:

步骤s41.对更新后系统进行验证,并得到验证结果。

具体的,对更新后系统进行验证是为了确定,在对原系统进行代码修改之后其是否能够正常运行;一般的,验证内容包括:预设的功能是否能够实现,以及运行逻辑是否正确。其中一种可选的实现方法可以是:通过ci测试(持续集成测试,是自动化测试的一种)对更新后系统进行验证,其过程包括编译代码、准备数据库、执行测试、分析代码、创建安装和部署内容以及生成文档等几个内容。且验证结果可以包括:对各个功能的实现情况,方法间调用情况(业务逻辑);

步骤s42.在验证结果满足预设要求时,将待更新系统替换为更新后系统。

具体的,满足预设要求可以包括:能够实现预设的功能、能够按照预设的逻辑运行等等;在验证结果满足预设要求时,即表征其满足上线要求,将待更新系统替换为更新后系统。

通过本实施例中的方法,可以在更新后系统上线前,对其进行校验,有效杜绝系统存在缺陷的情况,可以有效提高用户的使用体验。

如图7所示,在一些实施例中,如前述的系统更新方法,步骤s41对更新后代码进行验证,包括如下所述步骤s411和s412:

步骤s411.将更新后系统对应的更新后代码提交至代码库。

步骤s412.在测试环境满足预设要求时,对更新后代码按照预设功能需求进行验证。

具体的,代码库可以是git或者svn,git或者svn均为进行源代码管理的工具;其中,git是一款开源的分布式的代码管理工具,每台电脑都相当于一个服务器,比较灵活;而svn为集中式代码管理工具,需要一个中央服务器,一台服务器控制着所有的代码,这台服务器的代码是最新的,其他电脑的代码操作(如下载、提交)都需要通过这台服务器才可以执行;具体采用哪种工具作为代码库可以根据具体需求进行选择。

由于代码库具有:记录、追踪、版本控制、权限控制、责任追究、回退处理、冲突解决等功能,其中:

1、记录,能记录一个项目从开始到结束的整个过程。

2、追踪,追踪项目中所有内容的变化情况,如增加了什么内容,删除了什么内容,修改了什么内容等等。

3、版本控制,可以清楚的知道每个版本之间的异同点,如版本2.0相比较版本1.0多了什么内容,功能等。

因此,可以清楚记录代码发生了哪些更改。

可选的,可以通过提交commit(提交事务)点的方式将更新后代码提交至代码库,因此在提交时,若只有部分提交成功,而另一部分提交失败,则所有更新将自动滚回。若所有更新后代码提交成功,才判定为提交成功。

为了实现步骤s412中的方法,测试环境还可以与jenkins进行绑定,jenkins是一个开源的、提供友好操作界面的持续集成(ci)工具,主要用于持续、自动的构建/测试软件项目、监控外部任务的运行。预设要求可以是测试环境部署完毕。可选的,当测试环境部署完毕之后,代码库中的更新后代码也采用提交commit点至对应的测试工具中按照预设功能需求进行测试,以验证其是否能够实现预设的功能。

通过本实施例中的方法,可以自动实现代码的测试,进一步提高了自动化程度,以及保障上线系统的稳定性。如图8所示,根据本申请上述实施例中方法的一种应用例为:

i.当一活动工程(待更新业务)在活动运营中台(待更新系统中的一种)操作下线之后,活动运营中台将触发对活动工程的后端代码检测。

ii.检测针对被操作下线的活动工程,根据活动标识(活动id、活动地址等),定位到该活动的相关功能在controller层中的具体方法。

iii.使用深度优先遍历方法,从controller层开始,对service层,dao层引入的依赖引用依次遍历,找到该活动的定制逻辑,包括项目启动时的数据初始化、定制的消息队列、定制的数据存储等等。

iv.对定位到的活动定制逻辑进行注释操作或者解除依赖引用操作,并以提交commit点的方式将更新后代码提交到代码库。

v.以提交commit点的方式将更新后代码提交至自动化测试工具,触发自动化测试工具对更新后代码测试,对工程逻辑进行验证。

vi.自动化测试通过后,触发更新后系统自动上线,完成原有代码下线流程。

如图9所示,根据本申请另一方法的一个实施例,本申请还提供了一种系统更新装置,包括:

确定模块1,用于确定待更新业务的标识信息,待更新业务为待更新系统中进行业务逻辑更新的业务,业务逻辑包括:与待更新业务相关的方法之间的调用关系。

定位模块2,用于根据标识信息,在待更新系统中查询与待更新业务对应的业务逻辑。

第三确定模块3,用于根据待更新系统及业务逻辑得到更新后系统。

上线模块4,用于对更新后系统进行上线。

具体的,本发明实施例的装置中各模块实现其功能的具体过程可参见方法实施例中的相关描述,此处不再赘述。

根据本申请的另一个实施例,还提供一种电子设备,包括:如图10所示,电子设备可以包括:处理器1501、通信接口1502、存储器1503和通信总线1504,其中,处理器1501,通信接口1502,存储器1503通过通信总线1504完成相互间的通信。

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

处理器1501,用于执行存储器1503上所存放的程序时,实现上述方法实施例的步骤。

上述电子设备提到的总线可以是外设部件互连标准(peripheralcomponentinterconnect,pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,eisa)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

通信接口用于上述电子设备与其他设备之间的通信。

存储器可以包括随机存取存储器(randomaccessmemory,ram),也可以包括非易失性存储器(non-volatilememory,nvm),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。

上述的处理器可以是通用处理器,包括中央处理器(centralprocessingunit,cpu)、网络处理器(networkprocessor,np)等;还可以是数字信号处理器(digitalsignalprocessing,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

本申请实施例还提供一种非暂态计算机可读存储介质,非暂态计算机可读存储介质存储计算机指令,计算机指令使计算机执行上述方法实施例的步骤。

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

以上所述仅是本发明的具体实施方式,使本领域技术人员能够理解或实现本发明。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。

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