一种基于HTTP接口热部署的数据采集任务框架及使用方法

文档序号:34410963发布日期:2023-06-08 16:12阅读:109来源:国知局
一种基于HTTP接口热部署的数据采集任务框架及使用方法

本发明属于计算机网络及通信,具体涉及一种基于http接口热部署的数据采集任务框架及使用方法。


背景技术:

1、采用http接口在进行数据采集是一个常见的技术方案,通过定义api接口,可以实现数据的高效、可靠地传输。目前主流的http客户端请求框架如okhttp3、httpclient、netty等,已经能够对构建http请求报文、管理tcp连接、io模型优化等较为底层逻辑进行较好的封装,使得在程序中发起单个http请求变得简单高效。其中,apache http client是一个基于java的开源的http客户端库,用于发送http请求和接收http响应。apache httpclient有以下有点:一、api易于使用,它提供了一组易于理解和使用的类和方法,可以用于发送get、post、put、delete等http请求;二、高性能,apache http client采用了异步i/o和连接池等技术,可以有效地提高性能,同时最大限度地减少了资源消耗。它支持http/1.1和http/2协议,并且可以自动处理重定向、压缩、缓存等机制。三、apache http client可以根据需要进行定制,它提供了一组灵活的选项,可以自定义请求头、代理、cookie、连接超时等参数,以及连接管理、线程池、重试等策略。四、安全可靠,apache http client支持https和tls/ssl安全协议,可以对http请求进行加密和身份验证,从而保证请求和响应的安全性和可靠性;五、apache http client可以在java环境下运行,并且可以在各种操作系统和开发平台上使用,如windows、linux、macos、android等。

2、但对于数据采集方而言,数据采集时可能需要大量的、定时或周期性地、分批次地从各个数据源进行数据采集,并由于业务扩展等各类原因,http数据采集接口频繁涉及到新增、参数变更、返回结构体的变更,甚至包括采集规则、采集数据的处理(抽取、转换、清晰)逻辑等的变更。例如,对于数据中台而言,在数据采集时通常需要完成定级数据请求api、部署数据请求服务、接收数据请求api结果及处理、数据存储和管理数据,而通过各类http请求框架,不足以完成上述的复杂逻辑。


技术实现思路

1、为解决上述技术问题,本发明提出了一种基于http接口热部署的数据采集任务框架及使用方法,将http数据请求api定义、http数据请求api发起、http数据请求api接收、数据简单处理、数据入库视为一个http数据采集任务的生命周期http。

2、本发明采用的技术方案为:一种基于http接口热部署的数据采集任务框架,包括资源控制模块、任务配置解析模块、测试模块、任务调度器模块、数据请求与接收模块、数据处理模块、数据持久化模块、异常处理模块、算法库支撑模块、采集任务监听模块。

3、任务配置解析模块分别与测试模块、采集任务监听模块连接;测试模块分别与任务调度器模块、算法库支撑模块、采集任务监听模块连接;任务调度器模块分别与资源控制模块、数据请求与接收模块、采集任务监听模块连接;数据请求与接收模块分别与数据处理模块、采集任务监听模块连接;数据处理模块分别与数据持久化模块、算法库支撑模块、采集任务监听模块连接;数据持久化模块分别与资源控制模块、采集任务监听模块连接;采集任务监听模块与异常处理模块连接。

4、本发明还提供了一种基于http接口热部署的数据采集任务框架使用方法,具体步骤如下:

5、s1、将采集任务配置json以字符串的形式交给任务配置解析模块进行解析;

6、s2、任务配置解析模块对任务配置json进行格式校验及解析,并创建数据采集任务实例并初始化其属性,将数据采集任务实例交给测试模块,并向采集任务监听模块上报当前解析完毕状态;

7、s3、测试模块读取数据采集任务实例的数据源ip、数据库连接进行可达性测试,记录测试结果,判断其测试状态;

8、s4、任务调度器模块读取步骤s3中通过测试状态的数据采集任务实例的cron表达式属性,为其注册调度触发器,等待cron表达式所代表的调度条件被触发时,向资源控制模块申请可执行线程资源,当数据采集任务实例获得线程资源,启动执行数据请求与接收模块,向采集任务监听模块上报当前等待调度执行状态;

9、s5、线程池将携带数据采集任务实例的数据请求与接收模块实例取出,开始执行数据请求与接收流程,启动数据处理模块,向采集任务监听模块上报当前数据请求与接收完毕状态;

10、s6、数据处理模块读取数据采集任务实例中的数据处理模板,向算法支撑模块获取可执行算法,装配处理程序,并逐条将数据交由处理程序,得到数据处理结果,并启动数据持久化模块,向采集任务监听模块上报当前数据处理完毕状态;

11、s7、数据持久化模块读取数据采集任务实例中的目标数据库连接及数据存储sql模板,将处理完毕的数据注入到数据存储sql模板中构造可执行sql脚本,通过目标数据库连接执行sql,将数据写入数据库,等待执行结果返回,向采集任务监听模块上报当前已入库状态,交还当前线程资源给资源控制模块,采集任务完成。

12、进一步地,所述步骤s1具体如下:

13、自定义资源控制模块的资源控制参数,包括各资源池的大小、数据采集任务配置存储文件目录,通过文件读取的方式进行资源控制模块的初始化及批量加载数据采集任务配置文件目录,遍历数据采集任务配置目录下的所有.json数据采集任务配置文件,全部交给任务配置解析模块进行数据采集任务实例化。

14、进一步地,所述步骤s2中,所述任务配置解析模块工作流程具体如下:

15、任务配置解析模块解析并校验http数据采集任务的配置json文件,为数据采集任务创建实例及初始化,包括为其分配全局唯一的任务标识,并为该任务实例初始化请求数据源ip、请求url参数迭代器、请求体迭代器、调度策略表达式、数据处理模板、目标数据库连接、存储sql模板;在初始化完毕后,任务配置解析模块将数据采集任务实例交给测试模块进行测试,同时向采集任务监听模块报告其解析完成状态。

16、进一步地,所述步骤s3具体如下:

17、s31、读取数据采集任务实例中的数据源ip属性,构造10次ping报文,并记录丢包率为rloss,读取url参数迭代器,获取其大小lenu,读取请求体迭代器,获取其大小lenb;

18、s32、预估采集任务实例的http真实请求数量,共需要成功发起并接收的http请求数lsuc:

19、lsuc=max(lenu,lenb)

20、记成功发起并接收lsuc次http请求共需要失败丢包lloss次,http请求失败的概率为rloss,当rloss∈(0,1)时,lloss服从负二项分布,记为:

21、lloss~nb(lsuc,rloss)

22、其中,nb表示负二项分布;则成功发起并接收lsuc次平均失败次数计算:

23、

24、依据如下公式计算初始预估http请求个数资源消耗量costreq:

25、

26、将costreq赋值给数据采集任务实例的优先级属性。

27、进一步地,所述步骤s3中,所述测试模块工作流程具体如下:

28、测试模块接收请求任务实例,读取其数据源信息,并对该数据源ip、目的数据库进行可达性测试,记录测试结果,如果目标不可达则将解析失败状态上报采集任务监听模块,丢弃该数据采集任务实例;若满足可达性要求,则依据其url迭代器大小、请求体参数大小、源ip测试过程中记录的丢包率、采集任务实例配置实例的http最大客户端数量,估算其优先级数值,并将该数值赋值到数据采集任务实例的优先级属性中,而后将其交给任务调度器模块,同时向采集任务监听模块上报其测试通过状态。

29、进一步地,所述步骤s4中,所述任务调度器模块工作流程具体如下:

30、任务调度器模块读取数据采集任务实例中的cron表达式属性,注册与cron表达式条件对应的调度触发器,当cron表达式满足系统时间、周期条件时,调度触发器将被触发,读取采集任务http请求窗口(采集任务执行时的http请求并发数量)大小,向资源控制模块申请对应数量的http请求客户端,同时向资源控制模块的线程池中申请可执行线程,将带有优先级属性的数据采集任务实例放入线程池的优先级队列中等待获取线程资源开始执行,当数据采集任务实例获得线程资源,将采集任务实例及http请求客户端集合交给数据请求与接收模块,向采集任务监听模块上报其排队等待调度执行状态。

31、进一步地,所述步骤s5中,所述数据请求与接收模块中,请求与接收流程具体如下:

32、数据请求与接收模块首先通过读取数据采集任务实例中的http请求api配置,包括数据源ip、端口、url参数迭代器及请求体参数迭代器,基于apache http client框架,一次性依据迭代顺序构造所有需要发起的http请求实例,开启请求窗口,从左向右的,依据滑动窗口策略,消费http请求客户端池中的请求客户端,通过客户端异步发起http请求实例,当请求客户端消耗殆尽且最左侧请求实例尚未得到结果时进入阻塞态,直至最左侧请求实例得到请求结果,释放请求客户端,窗口向右滑动;循环直至所有请求实例得到请求结果,首先将http请求客户端全部归还资源控制模块,依据全部所有请求中的平均丢包率、请求客户端窗口大小重新计算数据采集任务优先级,将其赋值到数据采集任务实例优先级字段;其次将所有请求结果按顺序进行整合,将数据采集任务实例及整合数据交给数据处理模块,通过当前线程资源继续执行,同时向采集任务监听模块上报请求与接收完毕状态。

33、进一步地,所述步骤s6中,所述数据处理模块工作流程具体如下:

34、数据处理模块读取数据采集任务实例中的数据处理模板,装配单条数据的处理流程,当处理表达式涉及到算法库支撑模块进行查询,获取算法库支撑模块提供的可执行算法函数体,包括对单条数据中的字段抽取、字段运算、重命名,将处理后的数据按序整合,得到处理后数据,将其交给数据持久化模块,同时向采集任务监听模块上报数据采集任务处理完毕状态。

35、进一步地,本发明的方法还包括步骤s8,具体如下:

36、本发明方法中的所有子模块在遇到异常情况时向采集任务监听模块上报异常,由采集任务监听模块将具体异常信息交给异常处理模块,并终止采集任务实例的此次调度,异常处理模块向系统或日志文件中输出异常信息。

37、本发明的有益效果:本发明所述框架包括资源控制模块、任务配置解析模块、测试模块、任务调度器模块、数据请求与接收模块、数据处理模块、数据持久化模块、异常处理模块、算法库支撑模块、采集任务监听模块。本发明不仅能够简单、快速的配置一个新的、或修改一个旧的http接口数据采集任务,同时能够迅速地以热部署的形式更新到运行环境中而无需对项目进行重新打包或运行,提高系统稳定性及扩展性,实现http数据采集接口的热部署,从而实现更加灵活的数据采集任务调度。

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