当前位置: 首页 > 专利查询>浙江大学专利>正文

一种基于协程的函数式异步数据分发系统及方法技术方案

技术编号:33616888 阅读:18 留言:0更新日期:2022-06-02 00:32
本发明专利技术公开了一种基于协程的函数式异步数据分发系统及方法,用户在前端设计包含数据处理的逻辑的流程图,并传输至后端流程图解析引擎;流程图解析引擎将表征流程图的数据进行解析,生成计算组件对象和数据流对象,并对应绑定;数据流对象里包含一个协程channel对象用于缓存数据,计算组件执行完处理逻辑后,将执行数据写出逻辑,将数据写入到数据流对象的channel中,由后续计算组件对象的读入函数完成数据的读入并进行后续数据处理逻辑。本发明专利技术实际被流程处理的数据在计算组件对象和数据流对象之间传输,这两者均以程序的形式运行在单台服务器上,不涉及跨节点间的网络传输,具有可靠性高、资源利用充分、可扩展性强的优点。可扩展性强的优点。可扩展性强的优点。

【技术实现步骤摘要】
一种基于协程的函数式异步数据分发系统及方法


[0001]本专利技术涉及信息处理的多源异构数据集成领域,尤其涉及一种基于协程的函数式异步数据分发系统及方法。

技术介绍

[0002]随着信息技术的发展,各行各业都在加快信息化建设。然而各个行业、部门都是按照自己的需求建设信息系统,导致多部门之间的信息协同成为难题。目前针对这些多源异构数据的集成融合也有许多方案,除了将多方数据复制到一个中心系统进行处理外,常见的解决方案是将数据的集成融合分为多个步骤,每个步骤由单独的服务器完成处理,多个服务器之间进行数据传输。例如专利111698194中,分为数据源管理服务器、数据交换服务器、数据流建模服务器、数据流执行管理服务器和数据加密服务器。各服务器内部对数据进行处理后将结果数据传输给下一个服务器进行处理。然而诸如此类的方案有以下缺点:1.可靠性不足:将数据的处理过程分散到多个服务器完成,任意一个计算节点的宕机或者网络故障都会导致整个数据处理流程的失败。2.内存网络资源的浪费多个节点之间进行数据的传输本质上是将数据从一个服务器的内存中经网络传输到另一个服务器的内存中,此过程没有进行实际有意义的计算操作,对服务器内存和网络资源是一种浪费。3.可扩展性不足这里的可扩展性是指具体的流程处理逻辑需要根据每次需求重新编写,因此在计算逻辑层面的可扩展性不足。

技术实现思路

[0003]本专利技术目的在于针对现有技术的不足,提出一种基于协程的函数式异步数据分发系统及方法,解决了以往数据集成融合过程中数据分发环节的可靠性不足、资源浪费、可扩展性差的缺点。
[0004]本专利技术的目的是通过以下技术方案来实现的:一种基于协程的函数式异步数据分发系统,所述系统包括前端可视化交互界面、后端流程图解析引擎、计算组件对象、数据流对象和协程调度,系统代码用面向对象程序设计语言编写。
[0005]所述计算组件是对数据处理逻辑的定义,在代码中表现为一个类,在程序运行时表现为此类对应的计算组件对象。计算组件在功能上分为输入、输出、转换、拆分、聚合、过滤和批操作七大类;计算组件实现相同的接口(Interface),体现其功能的代码位于相应的方法(Method)内部。计算组件类经打包后生成的文件可通过前端上传至系统;
[0006]所述前端为一个可视化界面,可加载用户上传的计算组件,给用户提供可视化数据用于流程图设计;所述流程图为数据处理的逻辑,包含计算组件对应类别和用于表征数据流向的计算组件之间的连线;用户设计完成后的流程图信息以Json的数据格式传输至后端流程图解析器;
[0007]所述流程图解析引擎表现为一段程序,用于将用户设计的流程图数据解析成程序运行时数据结构;流程图解析器将表征流程图的数据进行解析,在程序中创建对应的计算
组件对象和数据流对象,数据流对象用于表示数据在哪两个计算组件对象之间传输,其内部包含一个协程channel对象,用于缓存数据。最后流程图解析引擎将计算组件对象和对应的数据流对象绑定
[0008]在协程内部先以异步方式创建不包含数据输入功能的计算组件启动代码的协程程序,随后启动包含数据输入功能的计算组件启动代码的协程程序。保证数据输入功能的计算组件在实际获取到数据后,其他组件也已经处于就绪状态。
[0009]程序运行时,当某一个计算组件执行完处理逻辑后,将执行数据写出逻辑,将数据写入到与其绑定的数据流对象的协程channel中由后续计算组件的读入函数完成数据的读入并进行后续数据处理逻辑。
[0010]进一步地,所述前端可视化交互界面、后端流程图解析引擎、计算组件对象、数据流对象和协程调度均以程序方式体现,并且为一个整体,运行于单个服务器上,作为一个进程。
[0011]进一步地,用户可对计算组件进行个性化配置,包括指定Mysql数据库的url以及对应的用户名密码等相关信息。
[0012]进一步地,前端以JSON数据格式保存流程图,并将其发送给流程图解析引擎,此过程中的数据仅涉及流程图本身以及相关配置,并不包含实际流程数据。
[0013]进一步地,对每一类计算组件均抽象出一个程序接口,并规定该类下所有计算组件用于处理数据的实际方法名;包含三个基本的方法,即数据输入、数据处理和数据输出。
[0014]进一步地,计算组件用kotlin、java等面向对象设计语言编写,用maven工具可将其打包为jar包,用于在网络中传输。
[0015]进一步地,用户可在前端上传相应计算组件的jar包,使用类加载器加载jar包中的类,在jvm平台中创建类对象;实现了不重新部署服务的前提下计算组件的即插即用;用户也可以在前端删除特定的计算组件,程序将在内存中释放删除对应的类对象。
[0016]进一步地,在某个数据流对象的channel对象中不存在数据时,后续接受该channel数据的计算组件程序代码将处于阻塞状态,此时协程并不会调度执行该代码。当相关数据流对象的channel被写入数据时,监控此数据流对象的后续计算组件相关函数代码将处于就绪状态,协程对该函数代码进行调度执行。
[0017]一种基于协程的函数式异步数据分发系统的分发方法,其特征在于,该方法步骤如下:
[0018](1)程序内部先以异步方式创建不包含数据输入功能的计算组件启动代码的协程程序,随后启动包含数据输入功能的计算组件启动代码的协程程序。保证输入数据类计算组件在实际获取到数据后,其他组件也已经处于就绪状态。
[0019](2)用户在前端加载计算组件,设计包含数据处理的逻辑的流程图,并将设计完成的流程图传输至流程图解析引擎。
[0020](3)流程图解析引擎包含用于将用户设计的流程图解析成数据结构的程序,将表征流程图的数据进行解析,在程序中创建对应的计算组件对象和数据流对象并进行绑定,以在程序运行环境中体现用户设计的数据处理流程业务。
[0021](4)计算组件执行完处理逻辑后,将执行数据写出逻辑,将数据写入到对应绑定的数据流对象的channel中,由后续计算组件的读入函数完成数据的读入并进行后续数据处
理逻辑。
[0022]本专利技术的有益效果:实际被流程处理的数据在计算组件和实时总线之间传输,而这两者都以程序的形式运行在单台服务器上,因此并不涉及跨节点间的网络传输,具有以下优点
[0023]1.提高可靠性
[0024]对多源异构数据的处理在单台服务器上完成。将以往分开部署的流程处理进程以函数代码的形式封装成不同的类,并加载到同一个jvm平台中,解决了以往架构中因网络问题或部分服务器硬件问题导致的系统可靠性低的问题。
[0025]2.充分利用资源
[0026]此处的资源包含内存资源、网络资源和计算资源。流程处理数据在单台计算上,以实时总线为消息中间件进行传输,相比于其他方案中的跨服务器数据传输而言,节约了宝贵了内存资源和网络资源。同时,在等待数据输入以及没有数据用于处理时,相关计算组件的代码程序会处于阻塞状态,协程并不会调度其执行,节约了c本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于协程的函数式异步数据分发系统,其特征在于,所述系统包括前端可视化交互界面、后端流程图解析引擎、计算组件对象、数据流对象和协程调度,系统代码用面向对象程序设计语言编写。所述计算组件是对数据处理逻辑的定义,在代码中表现为一个类,在程序运行时表现为此类对应的计算组件对象。计算组件在功能上分为输入、输出、转换、拆分、聚合、过滤和批操作七大类;计算组件实现相同的接口(Interface),体现其功能的代码位于相应的方法(Method)内部。计算组件类经打包后生成的文件可通过前端上传至系统;所述前端为一个可视化界面,可加载用户上传的计算组件,给用户提供可视化数据用于流程图设计;所述流程图为数据处理的逻辑,包含计算组件对应类别和用于表征数据流向的计算组件之间的连线;用户设计完成后的流程图信息以Json的数据格式传输至后端流程图解析器;所述流程图解析引擎表现为一段程序,用于将用户设计的流程图数据解析成程序运行时数据结构;流程图解析器将表征流程图的数据进行解析,在程序中创建对应的计算组件对象和数据流对象,数据流对象用于表示数据在哪两个计算组件对象之间传输,其内部包含一个协程channel对象,用于缓存数据。最后流程图解析引擎将计算组件对象和对应的数据流对象绑定在协程内部先以异步方式创建不包含数据输入功能的计算组件启动代码的协程程序,随后启动包含数据输入功能的计算组件启动代码的协程程序。保证数据输入功能的计算组件在实际获取到数据后,其他组件也已经处于就绪状态。程序运行时,当某一个计算组件执行完处理逻辑后,将数据从计算组件写入到与其绑定的数据流对象的协程channel中由后续计算组件的读入函数完成数据的读入并进行后续数据处理逻辑。2.根据权利要求1所述的一种基于协程的函数式异步数据分发系统,其特征在于,所述前端可视化交互界面、后端流程图解析引擎、计算组件对象、数据流对象和协程调度均以程序方式体现,并且为一个整体,运行于单个服务器上,作为一个进程。3.根据权利要求1所述的一种基于协程的函数式异步数据分发系统,其特征在于,用户可对计算组件进行个性化配置,包括指定Mysql数据库的url以及对应的用户名密码等相关信息。4.根据权利要求1所述的一种基于协程的函数式异步数据分发系统,其特征在于,前端以JSON数据格式保存流程...

【专利技术属性】
技术研发人员:陈奇寿柏茂
申请(专利权)人:浙江大学
类型:发明
国别省市:

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

1