一种分布式流程逆向回滚方法及系统技术方案

技术编号:36523658 阅读:41 留言:0更新日期:2023-02-01 16:01
本发明专利技术公开了一种分布式流程逆向回滚方法及系统,适用对象为业务流程,回滚触发是依据数据定义和流程执行状态,不需要发送任何指令,通过监听分布式收发数据获取流程执行数据,不需要备份任何数据和存储大量日志,回滚实现是通过http请求实现,不需要查询日志信息和记录操作次数等操作。目前的回滚实现需要备份数据或存储大量日志,并且涉及到网络设备需要对设备操作进行计数,依据操作次数来决定是否回滚,本发明专利技术则不需要这样冗余的操作;系统包括环境部署模块、流程任务模块、执行模块、数据封装及发送模块、数据监听模块。数据监听模块。数据监听模块。

【技术实现步骤摘要】
Conductor框架是典型的服务编排框架,通过Conductor还可以实现工作流和分布式调度,性能非常卓越。Netflix Conductor是基于JAVA语言编写的开源流程引擎,用于架构基于微服务的流程。它具备如下特性:允许创建复杂的业务流程,流程中每个独立的任务都是由一个微服务所实现,基于JSON DSL创建工作流,对任务的执行进行编排,工作流在执行的过程中可见、可追溯,提供暂停、恢复、重启等多种控制模型,提供一种简单的方式来最大限度重用微服务,拥有扩展到百万流程并发运行的服务能力,通过队列服务实现客户端与服务端的分离,支持HTTP或其他RPC协议进行数据传送。
[0007]分布式收发通过一种分布式发布订阅消息系统完成:分布式发布订阅消息系统可采用由Apache软件基金会开发的一个开源流处理平台Kafka,其由Scala 和Java编写,它可以处理消费者在网站中的所有动作流数据。
[0008]Elasticsearch是一个分布式、高扩展、高实时的搜索与数据分析引擎。
[0009]进一步的,所述的一种分布式流程逆向回滚方法,根据所述工作流的状态判断是否需要回滚的具体步骤包括:根据所述流程状态的参数判断,若所述流程状态为失败或异常时则进行回滚,若所述流程状态为完成则不回滚。所述的流程状态即工作流的状态(workflow status),根据对工作流(workflow)的状态(status) 进行判断,通常工作流的状态包括:完成、创建、运行、挂起、终止、失败(Completed、 Created、Running、Suspended、Terminated、Failed)等,也可以根据用户自定义,其中异常包括除完成、创建、运行以外的情况。进行状态判断可以提高回滚的准确率,防止后续节点误判。
[0010]进一步的,所述的一种分布式流程逆向回滚方法,所述从工作流中获取执行成功的任务节点存放到链表的具体步骤包括:定义所述工作流的任务类,并获取工作流的所有任务,将所述任务的状态为完成的放入链表中。链表(list),链表提供了高效的节点重排能力,以及顺序性的节点访问方式,并且可以通过增删节点来灵活地调整链表的长度,在本专利技术中,主要通过链表的形式来记录节点,记录头、尾的操作更加方便,且链表(list)有一个重要的性质,插入操作和删除操作都不会造成原有list迭代器的失效,采用动态存储分配,不会造成内存浪费和溢出。
[0011]进一步的,所述的一种分布式流程逆向回滚方法,所述分布式收发采用Kafka 系统实现并完成。Kafka是一个独立的架构,运行在一个由一台或多台服务器组成的集群上,并且分区可以跨集群结点分布,高水平API,kafka本身定义的行为,屏蔽细节管理,使用方便,非常适配本专利技术需要功能。
[0012]Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java 编写。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。Kafka的目的是通过Hadoop的并行加载机制来统一线上和离线的消息处理,也是为了通过集群来提供实时的消息。
[0013]进一步的,所述的一种分布式流程逆向回滚方法,所述按任务节点的执行时间对所述链表进行排序并生成任务链表的具体步骤包括:获取所有任务节点的执行时间,并根据该执行时间对所有任务节点进行排序,获得排序结果;根据所述排序结果对所述链表进行排序,并生成任务链表。通过时间排序可以使回滚结果更加清晰,方便检查、减少纰漏。
[0014]进一步的,所述的一种分布式流程逆向回滚方法,所述排序的方法包括但不限于
归并排序、选择排序、插入排序、希尔排序、堆排序。
[0015]进一步的,所述的一种分布式流程逆向回滚方法,遍历所述任务链表进行回滚的具体步骤包括:任务数据查询,根据任务名字查询所述任务定义表,并根据所述任务定义表判断是否进行回滚;选择回滚方式,若任务类型为http类型,则从实例对象任务中获取回滚请求方法、URL,以http请求完成此任务的回滚;若任务类型为sub工作流类型,则把该任务以一个独立流程进行回滚。根据不同类型的任务采用不同的处理方式,可以提高工作效率,减少资源的浪费。
[0016]进一步的,所述的一种分布式流程逆向回滚方法,还包括:保存回滚日志,在所述回滚完成后,生成回滚结果,将回滚结果保存至回滚日志中。保证系统完整性,方便纠错。
[0017]进一步的,所述的一种分布式流程逆向回滚方法,所述流程表包括回滚判断指令,所述回滚判断指令包括但不限于两种。流程表可自定义,通过实际情况进行判断,提高灵活性。
[0018]一种分布式流程逆向回滚系统,该系统包括环境部署模块、流程任务模块、执行模块、数据封装及发送模块、数据监听模块、判断模块,其中:所述环境部署模块,用于部署软件环境;所述流程任务模块,用于创建、调用以及启动流程;所述执行模块,用于执行流程;所述数据封装及发送模块,用于封装数据和发送数据;所述数据监听模块,用于接收数据;所述判断模块,用于生成回滚判断指令,所述回滚判断指令包括但不限于两种。
[0019]本专利技术的有益效果体现在:
[0020]本专利技术适用对象为业务流程,回滚触发是依据数据定义和流程执行状态,不需要发送任何指令,通过监听kafka数据获取流程执行数据,不需要备份任何数据和存储大量日志,回滚实现是通过http请求实现,不需要查询日志信息和记录操作次数等操作,整体流畅效率高,不需要大量的人工检测,减少人力投入。
附图说明
[0021]为了更清楚地说明本专利技术具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍。在所有附图中,类似的元件或部分一般由类似的附图标记标识。附图中,各元件或部分并不一定按照实际的比例绘制。
[0022]图1为实施例的方法流程示意图;
[0023]图2为实施例的原理流程示意图;
[0024]图3所示为本申请一实施例提供的电子设备的结构示意图。
具体实施方式
[0025]下面将结合附图对本专利技术技术方案的实施例进行详细的描述。以下实施例仅用于更加清楚地说明本专利技术的技术方案,因此只作为示例,而不能以此来限制本专利技术的保护范围。
[0026]需要注意的是,除非另有说明,本申请使用的技术术语或者科学术语应当为本专利技术所属领域技术人员所理解的通常意义。
[0027]实施例一
[0028]如图1所示,一种分布式流程逆向回滚方法,包括:软件环境部署,包括但不限于部
署Conductor、MySQL以及Elasticsearch;流程任务设置,设计并生成流程表、任务表,所述流程表,所述流程表包括回滚判断指令,所述回滚判断指令包括但不限于两种;执行所述流程表、任务表,并调用Conductor异常流程启动接口来启动流程;数据封装,所述流程执行结束后将数据封装生成json格式的流程数据;本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种分布式流程逆向回滚方法,其特征在于,包括:软件环境部署,包括但不限于部署Conductor、MySQL以及Elasticsearch;流程任务设置,设计并生成流程表、任务表;执行所述流程表、任务表,并调用Conductor异常流程启动接口来启动流程;数据封装,所述流程执行结束后将数据封装生成json格式的流程数据;分布式收发,将所述流程数据进行分布式收发;数据监听,监听所述分布式收发过的流程数据;获取实例对象,将监听到的所述流程数据转换为工作流;获取流程状态,获取所述工作流的流程状态;判断回滚,根据所述工作流的状态判断是否需要回滚;若需要回滚,则获取回滚流程的已完成任务,包括从工作流中获取执行成功的任务节点存放到链表,并按任务节点的执行时间对所述链表进行排序并生成任务链表,并遍历所述任务链表进行回滚;若不需要回滚,则结束流程。2.根据权利要求1所述的一种分布式流程逆向回滚方法,其特征在于,根据所述工作流的状态判断是否需要回滚的具体步骤包括:根据所述流程状态的参数判断,若所述流程状态为失败或异常时则进行回滚,若所述流程状态为完成则不回滚。3.根据权利要求1所述的一种分布式流程逆向回滚方法,其特征在于,所述从工作流中获取执行成功的任务节点存放到链表的具体步骤包括:定义所述工作流的任务类,并获取工作流的所有任务,将所述任务的状态为完成的放入链表中。4.根据权利要求1所述的一种分布式流程逆向回滚方法,其特征在于,所述分布式收发采用Kafka系统实现并完成。5.根据权利要求1所述的一种分布式流程逆向回滚方法,其特征在于,所述按任务节点的执行时间对所述链表进行排序并生成任务链表的具体步骤包括:获取所有任...

【专利技术属性】
技术研发人员:张博苏加强牛亚亚刘政武张斐源马玉凤姚婷婷
申请(专利权)人:甘肃远效科技信息咨询有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1