CN113805851A - 一种Flink自动集成方法和系统 - Google Patents

一种Flink自动集成方法和系统 Download PDF

Info

Publication number
CN113805851A
CN113805851A CN202110991764.1A CN202110991764A CN113805851A CN 113805851 A CN113805851 A CN 113805851A CN 202110991764 A CN202110991764 A CN 202110991764A CN 113805851 A CN113805851 A CN 113805851A
Authority
CN
China
Prior art keywords
flink
template
code
pushing
generating
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202110991764.1A
Other languages
English (en)
Other versions
CN113805851B (zh
Inventor
张彤
平松
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Defan Information Technology Co ltd
Original Assignee
Shanghai Defan Information Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shanghai Defan Information Technology Co ltd filed Critical Shanghai Defan Information Technology Co ltd
Priority to CN202110991764.1A priority Critical patent/CN113805851B/zh
Publication of CN113805851A publication Critical patent/CN113805851A/zh
Application granted granted Critical
Publication of CN113805851B publication Critical patent/CN113805851B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • G06F8/24Object-oriented
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02PCLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
    • Y02P90/00Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
    • Y02P90/02Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明涉及一种Flink自动集成方法和系统,方法包括获取Flink配置请求体,解析该Flink配置请求体,在预设的模板引擎中自动生成Flink的核心代码;将核心代码推送给指定的服务器;通过服务器将核心代码推送到指定的路径,并生成运行记录脚本文件;通过服务器将核心代码打包推送至Flink平台中进行管道控制,并执行运行记录脚本文件,获取实时日志和进程状态信息;模板引擎设有环境初始化模板、来源数据源模板、目标数据源模板、业务拦截逻辑模板、数据替换逻辑模板和目标执行逻辑模板,通过将各个模板生成的数据整合,生成Flink的核心代码。与现有技术相比,本发明具有自动生成代码,降低人为犯错风险;支持远程推送;不受版本控制等优点。

Description

一种Flink自动集成方法和系统
技术领域
本发明涉及Flink集成技术领域,尤其是涉及一种Flink自动集成方法和系统。
背景技术
目前关于Flink集成方案,大多采用SpringBoot针对特定需求直接编写项目程序,将所有的需求整合在一个项目中,然后手动打成Jar包发布到Flink平台进行管道控制。
如授权公告号为CN111752545B的发明公开的一种支持数据重放的流计算方法,其主要方案包括,步骤1、流平台中定义task任务的备份保存机制以及task任务需要实现的快照备份和恢复接口SnapShotInterface;步骤2、用户在task任务的实现中编写SnapShotInterface的实现类,最终形态为打包后的jar包;步骤3、将jar包提交至流平台进行处理,同时流计算平台定期调用实现类的backup方法,将备份的数据保存到hdfs上;步骤4、当task任务执行失败后,重新启动task任务时流处理平台执行SnapShotInterface的实现类的recover方法从hdfs读取保存点文件并恢复数据,然后重新执行task任务。
该方法中也需要用户在task任务的实现中编写SnapShotInterface的实现类,最终形态为打包后的jar包,即采用人为处理的方式,目前这些方案存在以下缺点:
1.操作繁琐,每当添加新需求都需要重新编写代码,然后进行调试对接等等操作。
2.过度依赖Flink的版本,升级不方便,需要修改项目中的所有相关代码才可升级。
3.无法实现Restful接口,无法给其他平台提供方便的接口。
发明内容
本发明的目的就是为了克服上述现有技术存在操作繁琐、过度依赖Flink的版本的缺陷而提供一种Flink自动集成方法和系统。
本发明的目的可以通过以下技术方案来实现:
一种Flink自动集成方法,包括以下步骤:
S1:获取Flink配置请求体,解析该Flink配置请求体,在预设的模板引擎中自动生成Flink的核心代码;
S2:将所述核心代码推送给指定的服务器;
S3:通过所述服务器将所述核心代码推送到指定的路径;
S4:通过所述服务器将所述核心代码打包推送至Flink平台中进行管道控制。
进一步地,所述模板引擎设有环境初始化模板、来源数据源模板、目标数据源模板、业务拦截逻辑模板、数据替换逻辑模板和目标执行逻辑模板,
所述环境初始化模板,用于生成Flink基础环境的代码;
所述来源数据源模板,用于生成Flink管道来源数据源的对象配置;
所述目标数据源模板,用于生成Flink管道同步目标数据源的对象配置;
所述业务拦截逻辑模板,用于生成Flink管道中相关拦截逻辑的代码;
所述数据替换逻辑模板,用于生成Flink管道中相关字段替换的代码;
所述目标执行逻辑模板,用于生成Flink的管道执行代码;
所述模板引擎还将各个模板生成的数据整合,生成所述Flink的核心代码。
进一步地,所述Flink基础环境的代码包括EnvironmentSettings、TableEnvironment和Pipeline的代码;
所述Flink管道来源数据源的对象配置包括:来源数据库的连接信息、用户名、密码、同步字段信息和Kafka的信息;
所述Flink管道同步目标数据源的对象配置包括:目标数据库的连接信息、用户名、密码、同步字段信息;
所述Flink管道中相关拦截逻辑的代码包括:大于逻辑、小于逻辑、包含逻辑、不等于逻辑;
所述Flink的管道执行代码包括插入操作、删除操作、修改操作。
进一步地,步骤S3还包括:在所述服务器中生成运行记录脚本文件,步骤S4还包括:在将核心代码打包推送至Flink平台后,执行所述运行记录脚本文件,获取实时日志和进程状态信息。
进一步地,所述制定的服务器中预先部署有自动化脚本文件,该自动化脚本文件用于将所述核心代码推送到指定的路径、生成所述运行记录脚本文件以及将所述核心代码打包推送至Flink平台。
进一步地,步骤S2具体为:通过Java命令与SSH命令结合,将所述核心代码推送给指定的服务器。
进一步地,步骤S4中,通过Maven方式将所述核心代码打包为Jar包。
进一步地,所述Flink配置请求体通过Restful接口生成。
本发明还提供一种Flink自动集成系统,包括存储器和处理器,所述存储器存储有计算机程序,处理器调用所述计算机程序执行如上所述的方法的步骤。
与现有技术相比,本发明具有以下优点:
(1)本发明提出采用模板引擎根据Flink管道配置信息,自动生成Flink的核心代码,然后推送到服务器中,在服务器内实现代码的自动打包和发布的方式,具有以下优点:
可通过Restful接口动态生成Flink代码并实现自动部署;
自动生成代码,降低手动编写以及服务器手动部署的人为犯错风险;
支持远程推送,可将Flink项目部署到任意目标服务器;
不受版本控制,只需要修改模板文件,即可修改所有程序。
(2)本发明动态代码生成的原理,重点在于Freemarker的模板规范,将Flink源码拆分成了六大部分:环境初始化模板、来源数据源模板、目标数据源模板、业务拦截逻辑模板、数据替换逻辑模板、目标执行逻辑模板,方便用于针对性的修改,更高效方便地配置核心代码。
附图说明
图1为本发明实施例中提供的一种Flink自动集成方法的流程示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1
本实施例提供一种Flink自动集成方法,包括以下步骤:
S1:获取Flink配置请求体,解析该Flink配置请求体,在预设的模板引擎中自动生成Flink的核心代码;
S2:将核心代码推送给指定的服务器;
S3:通过服务器将核心代码推送到指定的路径;
S4:通过服务器将核心代码打包推送至Flink平台中进行管道控制。
模板引擎设有环境初始化模板、来源数据源模板、目标数据源模板、业务拦截逻辑模板、数据替换逻辑模板和目标执行逻辑模板,
环境初始化模板,用于生成Flink基础环境的代码,包括:来源数据库的连接信息、用户名、密码、同步字段信息和Kafka的信息等;
来源数据源模板,用于生成Flink管道来源数据源的对象配置,包括来源数据库的连接信息、用户名、密码、同步字段信息、Kafka的信息等;
目标数据源模板,用于生成Flink管道同步目标数据源的对象配置,包括目标数据库的连接信息、用户名、密码、同步字段信息等;
业务拦截逻辑模板,用于生成Flink管道中相关拦截逻辑的代码,包括大于、小于、包含、不等于逻辑;
数据替换逻辑模板,用于生成Flink管道中相关字段替换的代码,包括字段替换;
目标执行逻辑模板,用于生成Flink的管道执行代码,包括插入操作、删除操作、修改操作等;
模板引擎还将各个模板生成的数据整合,生成Flink的核心代码。
优选地,为获取Flink运行信息,步骤S3还包括:在服务器中生成运行记录脚本文件,步骤S4还包括:在将核心代码打包推送至Flink平台后,执行运行记录脚本文件,获取实时日志和进程状态信息。
制定的服务器中预先部署有自动化脚本文件,该自动化脚本文件用于将核心代码推送到指定的路径、生成运行记录脚本文件以及将核心代码打包推送至Flink平台。
本实施例中,步骤S2具体为:通过Java命令与SSH命令结合,将核心代码推送给指定的服务器。
步骤S4中,通过Maven方式将核心代码打包为Jar包。
下面对本Flink自动集成方法的具体实施过程进行详细介绍。
Flink自动集成方法,该方法采用动态代码生成的方式,前端传递配置请求加ExecuteId执行标识,先使用Freemarker+Java生成Flink的核心代码;然后通过Java本地命令,结合SSH将核心代码推送到指定服务器;接着通过服务器上的Python3脚本文件将核心代码推送到指定路径并生成可执行Bash脚本(ExecuteId.sh);最后自动运行Bash脚本;将Flink项目代码通过Maven方式打成Jar包,随后推送到Flink平台,并将日志写入ExecuteId.log文件中,具体包括以下步骤:
步骤1:通过Restful接口向后端传递执行标识ExecuteId和Flink配置请求体,然后执行步骤2;
步骤2:后端采用算法和Freemarker对Flink配置请求体进行解析,然后执行步骤3;
步骤3:将解析好的Flink核心代码以String类型储存下来,执行步骤4;
步骤4:通过Java命令调用结合SSH命令,将Flink核心代码封装并推送到目标服务器中,进入步骤5中;
步骤5:该服务器上需要提前写好自动化部署脚本文件flink.py,然后进入步骤6;
步骤6:服务器自动执行命令’python3 flink.py Flink核心代码’,然后执行步骤7和8;
步骤7:根据ExecuteId生成可执行的脚本文件ExecuteId.sh,执行步骤11;
步骤8:flink.py脚本中会自动将Flink核心代码,推送到指定的位置,然后执行步骤9、10。
步骤9和10:flink.py脚本中将会自动使用Maven工具对Flink项目代码进行打包。然后执行步骤11。
步骤11:当以上所有的步骤全部完成并成功的时候,flink.py脚本会执行最终命令‘nohup bash ExecuteId.sh>>ExecuteId.log’。并且在之后的操作中,前端可以再次通过ExecuteId直接去查询运行的日志内容,以及通过‘ps-e-o pid,command|grep bashExecuteId.sh’的命令,实时查询Flink管道的一整个生命周期。
本实施例还提供一种Flink自动集成系统,包括存储器和处理器,所述存储器存储有计算机程序,处理器调用所述计算机程序执行如上所述的Flink自动集成方法的步骤。
以上详细描述了本发明的较佳具体实施例。应当理解,本领域的普通技术人员无需创造性劳动就可以根据本发明的构思做出诸多修改和变化。因此,凡本技术领域中技术人员依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的技术方案,皆应在由权利要求书所确定的保护范围内。

Claims (9)

1.一种Flink自动集成方法,其特征在于,包括以下步骤:
S1:获取Flink配置请求体,解析该Flink配置请求体,在预设的模板引擎中自动生成Flink的核心代码;
S2:将所述核心代码推送给指定的服务器;
S3:通过所述服务器将所述核心代码推送到指定的路径;
S4:通过所述服务器将所述核心代码打包推送至Flink平台中进行管道控制。
2.根据权利要求1所述的一种Flink自动集成方法,其特征在于,所述模板引擎设有环境初始化模板、来源数据源模板、目标数据源模板、业务拦截逻辑模板、数据替换逻辑模板和目标执行逻辑模板,
所述环境初始化模板,用于生成Flink基础环境的代码;
所述来源数据源模板,用于生成Flink管道来源数据源的对象配置;
所述目标数据源模板,用于生成Flink管道同步目标数据源的对象配置;
所述业务拦截逻辑模板,用于生成Flink管道中相关拦截逻辑的代码;
所述数据替换逻辑模板,用于生成Flink管道中相关字段替换的代码;
所述目标执行逻辑模板,用于生成Flink的管道执行代码;
所述模板引擎还将各个模板生成的数据整合,生成所述Flink的核心代码。
3.根据权利要求2所述的一种Flink自动集成方法,其特征在于,所述Flink基础环境的代码包括EnvironmentSettings、TableEnvironment和Pipeline的代码;
所述Flink管道来源数据源的对象配置包括:来源数据库的连接信息、用户名、密码、同步字段信息和Kafka的信息;
所述Flink管道同步目标数据源的对象配置包括:目标数据库的连接信息、用户名、密码、同步字段信息;
所述Flink管道中相关拦截逻辑的代码包括:大于逻辑、小于逻辑、包含逻辑、不等于逻辑;
所述Flink的管道执行代码包括插入操作、删除操作、修改操作。
4.根据权利要求1所述的一种Flink自动集成方法,其特征在于,步骤S3还包括:在所述服务器中生成运行记录脚本文件,步骤S4还包括:在将核心代码打包推送至Flink平台后,执行所述运行记录脚本文件,获取实时日志和进程状态信息。
5.根据权利要求4所述的一种Flink自动集成方法,其特征在于,制定的服务器中预先部署有自动化脚本文件,该自动化脚本文件用于将所述核心代码推送到指定的路径、生成所述运行记录脚本文件以及将所述核心代码打包推送至Flink平台。
6.根据权利要求1所述的一种Flink自动集成方法,其特征在于,步骤S2具体为:通过Java命令与SSH命令结合,将所述核心代码推送给指定的服务器。
7.根据权利要求1所述的一种Flink自动集成方法,其特征在于,步骤S4中,通过Maven方式将所述核心代码打包为Jar包。
8.根据权利要求1所述的一种Flink自动集成方法,其特征在于,所述Flink配置请求体通过Restful接口生成。
9.一种Flink自动集成系统,其特征在于,包括存储器和处理器,所述存储器存储有计算机程序,处理器调用所述计算机程序执行如权利要求1~8任一所述的方法的步骤。
CN202110991764.1A 2021-08-27 2021-08-27 一种Flink自动集成方法和系统 Active CN113805851B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110991764.1A CN113805851B (zh) 2021-08-27 2021-08-27 一种Flink自动集成方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110991764.1A CN113805851B (zh) 2021-08-27 2021-08-27 一种Flink自动集成方法和系统

Publications (2)

Publication Number Publication Date
CN113805851A true CN113805851A (zh) 2021-12-17
CN113805851B CN113805851B (zh) 2024-10-01

Family

ID=78941903

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110991764.1A Active CN113805851B (zh) 2021-08-27 2021-08-27 一种Flink自动集成方法和系统

Country Status (1)

Country Link
CN (1) CN113805851B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113961570A (zh) * 2021-12-22 2022-01-21 四川新网银行股份有限公司 一种应用于MYSQL BINLog变更数据的实时采集方法
CN114675842A (zh) * 2022-03-07 2022-06-28 中电万维信息技术有限责任公司 一种基于freemarker模板引擎的应用自动发布系统

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106104467A (zh) * 2014-06-30 2016-11-09 北京新媒传信科技有限公司 一种自动化部署方法和终端
WO2017177769A1 (zh) * 2016-04-11 2017-10-19 平安科技(深圳)有限公司 Ogg 版本部署方法、系统、服务器和存储介质
US20190075168A1 (en) * 2015-06-02 2019-03-07 Humanity Cares LLC Computer security and usage-analysis system
CN110737631A (zh) * 2019-09-10 2020-01-31 苏宁云计算有限公司 一种基于Flink引擎的数据解析方法及装置
CN110825369A (zh) * 2019-11-07 2020-02-21 四川长虹电器股份有限公司 一种基于java语言的代码自动生成的方法
CN111158891A (zh) * 2020-04-02 2020-05-15 武汉中科通达高新技术股份有限公司 基于Flink技术的分析任务处理方法、装置及存储介质
CN111240693A (zh) * 2020-01-17 2020-06-05 北京三快在线科技有限公司 实时数据处理方法、装置、设备及存储介质
CN111352930A (zh) * 2020-03-31 2020-06-30 深圳市优必选科技股份有限公司 一种模板数据处理方法、装置、服务器和存储介质
CN112130837A (zh) * 2020-09-25 2020-12-25 腾讯科技(深圳)有限公司 一种代码处理方法、装置及存储介质
CN112860238A (zh) * 2021-02-19 2021-05-28 中国建设银行股份有限公司 一种数据处理方法、装置、计算机设备及存储介质

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106104467A (zh) * 2014-06-30 2016-11-09 北京新媒传信科技有限公司 一种自动化部署方法和终端
US20190075168A1 (en) * 2015-06-02 2019-03-07 Humanity Cares LLC Computer security and usage-analysis system
WO2017177769A1 (zh) * 2016-04-11 2017-10-19 平安科技(深圳)有限公司 Ogg 版本部署方法、系统、服务器和存储介质
CN110737631A (zh) * 2019-09-10 2020-01-31 苏宁云计算有限公司 一种基于Flink引擎的数据解析方法及装置
CN110825369A (zh) * 2019-11-07 2020-02-21 四川长虹电器股份有限公司 一种基于java语言的代码自动生成的方法
CN111240693A (zh) * 2020-01-17 2020-06-05 北京三快在线科技有限公司 实时数据处理方法、装置、设备及存储介质
CN111352930A (zh) * 2020-03-31 2020-06-30 深圳市优必选科技股份有限公司 一种模板数据处理方法、装置、服务器和存储介质
CN111158891A (zh) * 2020-04-02 2020-05-15 武汉中科通达高新技术股份有限公司 基于Flink技术的分析任务处理方法、装置及存储介质
CN112130837A (zh) * 2020-09-25 2020-12-25 腾讯科技(深圳)有限公司 一种代码处理方法、装置及存储介质
CN112860238A (zh) * 2021-02-19 2021-05-28 中国建设银行股份有限公司 一种数据处理方法、装置、计算机设备及存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113961570A (zh) * 2021-12-22 2022-01-21 四川新网银行股份有限公司 一种应用于MYSQL BINLog变更数据的实时采集方法
CN114675842A (zh) * 2022-03-07 2022-06-28 中电万维信息技术有限责任公司 一种基于freemarker模板引擎的应用自动发布系统

Also Published As

Publication number Publication date
CN113805851B (zh) 2024-10-01

Similar Documents

Publication Publication Date Title
US11656970B2 (en) Programmatic container monitoring
CN109344065B (zh) 远程调试方法、调试服务器及目标机
CN107577469B (zh) 一种软件打包发布管理方法
CN113805851A (zh) 一种Flink自动集成方法和系统
US8434057B2 (en) Optimized implementation of breakpoint in java debugger agent
JP2602205B2 (ja) データベース・アクセス制御方法
US9104797B1 (en) Efficient cloud-based annotation of crash reports
CN1329836C (zh) 定位程序异常的方法
CN101290581B (zh) 编译系统及方法
CN112711411A (zh) 一种基于Kubernetes及docker的CI/CD流水线系统
EP3619611A1 (en) Conditional debugging of server-side production code
CN110083342B (zh) 一种程序生成方法、装置以及计算机可读存储介质
CN109634591B (zh) 一种文件处理方法及装置
CN101866315A (zh) 软件开发工具的测试方法及系统
CN109558318B (zh) 一种代码管理方法和代码仓库分布式系统
CN112817597A (zh) 运行在用户空间的基于ebpf的软件容器实现方法
CN114860654A (zh) 一种基于Flink数据流的Iceberg表Schema动态变更方法及系统
CN115658069A (zh) 一种发布平台的项目打包和在线编译方法
CN101944061B (zh) 一种代码调试的方法及装置
CN111880893A (zh) 一种容器镜像快速转换方法与系统
CN104298671B (zh) 数据统计分析方法及装置
CN111258802A (zh) 捕获应用程序崩溃信息的方法及相关设备
CN114816816A (zh) 崩溃堆栈信息处理方法、装置、设备及存储介质
EP4091057B1 (en) Diffing a subject replayable execution trace against a comparison replayable execution trace
US20170168955A1 (en) Efficient address-to-symbol translation of stack traces in software programs

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant