0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

求一种基于flink的数字集成方案

云脑智库 来源:移动Labs 2023-03-17 14:27 次阅读

Labs 导读

数据集成平台作为连接各种异构数据的纽带,需要连接多种多样的存储系统。而不同的技术栈和不同的业务场景会对数据集成系统提出不同的设计要求。

1

概述

在实际私有化物联网平台项目中,部分存量设备由于异构总线、多制式以太网、协议多样化等因素导致无法直接连接物联网平台,大量数据较难集成,平台侧和设备侧面临大量定制化开发,成本较高。因此难以推动客户或设备厂商进行存量设备接入改造,导致设备无法直连物联网平台,无法达到物联网平台对企业所有设备数据进行统一纳管。

企业内部存量的数据采集系统多为“烟囱式”,各个厂商的系统只需对接自己厂商的设备即可,数据孤岛问题突出。

各“烟囱”的数据格式各不相同,定制化采集任务代码不可复用,费时费力,难以同时支撑多个项目。

除了设备数据采集外,还有业务数据采集需求,传统物联网系统只能采集设备数据而无法集成业务数据。

fd23e4ec-c48b-11ed-bfe3-dac502259ad0.png

2

技术选型

数字集成技术通过对不同系统数据的抽取(Extract),数据清洗和转换(Transformation)以及输入最终的目标系统(Load),打通各个业务孤岛,实现数据互联互通,助力企业数字化转型。由于物联网场景下的数据处理大多都要求实时性,所以要求实现时具备实时数据处理能力。实时计算也被称作流计算,代表是Storm、Spark Streaming、Flink等大数据技术。计算引擎也在不断更新迭代,从第一代的Hadoop MapReduce,到第二代的Spark,再到第三代的Flink技术,从批处理到微批,再到真正的流式计算。

Apache Flink是一个开源的流处理框架,应用于分布式、高性能、高可用的数据流应用程序。可以处理有限数据流和无限数据,即能够处理有边界和无边界的数据流。无边界的数据流就是真正意义上的流数据,所以Flink是支持流计算的。Flink可以部署在各种集群环境,可以对各种大小规模的数据进行快速计算。

Flink框架具备强大的流式ETL的能力,依靠其丰富的算子实现。

2.1 Source算子

Flink可以使用StreamExecutionEnvironment.addSource(source)来为我们的程序添加数据来源。

Flink已经提供了若干实现好的source functions,当然也可通过实现SourceFunction来自定义非并行的source或者实现ParallelSourceFunction接口或者扩展RichParallelSourceFunction来自定义并行的source。

Flink在流处理上的source大致有4大类:

基于本地集合的source(Collection-based-source)

基于文件的source(File-based-source)- 读取文本文件,即符合TextInputFormat规范的文件,并将其作为字符串返回

基于网络套接字的source(Socket-based-source)- 从socket读取。元素可以用分隔符切分。

自定义的source(Custom-source)

使用自定义Source算子可实现丰富的数据抽取功能。

2.2 Transform转换算子

① map

将DataStream中的每一个元素转换为另外一个元素,如将元素x变为原来的5倍:

dataStream.map { x => x * 5 }

② FlatMap

采用一个数据元并生成零个,一个或多个数据元。如,将句子分割为单词的flatmap函数:

dataStream.flatMap { str => str.split(" ") }

③ Filter

计算每个数据元的布尔函数,并保存函数返回true的数据元。如,过滤掉零值的过滤器:

dataStream.filter { x != 0 }

当然flink还具备很多其他功能的转换算子,如KeyBy、Reduce、Aggregations等,通过丰富的转换算子,flink可实现对数据的清洗和转换功能。

2.3 Sink算子

Flink的sink算子支持将数据输出到:本地文件、本地集合、HDFS,除此之外,还支持:sink到kafka、sink到mysql、sink到redis以及自定义sink算子。

通过自定义sink算子将清洗转换完成的数据输入目标系统。

3

数字集成实现

实现过程如下:

fd3add3c-c48b-11ed-bfe3-dac502259ad0.png

第一步,抽象定义基础控件类

数字集成基于flink可抽象定义3类基础功能控件,每类控件又可根据不同的功能实现具体的子类功能控件;详细如下:

基础功能控件分为三类:数据源控件、数据输出控件、数据处理控件。

fd626aaa-c48b-11ed-bfe3-dac502259ad0.png

数据源控件:将Source算子抽象定义成具备抽取数据功能的数据源控件类,并制定相应的配置规范,使用时只需根据规范配置文件,系统根据配置文件创建具体的实例化对象,实现数据抽取功能;

数据操作控件:根据不同的基础功能需求将Transform算子抽象成数据处理控件类,制定相应的配置规范,使用时只需根据规范配置文件,系统根据配置创建相应的实例化对象实现数据处理功能;

数据输出控件:将Sink算子抽象成数据输出控件类,制定相应的配置规范,使用时只需根据规范配置文件,系统根据配置创建实例化对象实现数据输出功能。

同时系统内部明确定义flink算子之间流转的数据格式作为内部流转数据格式以及根据配置输出每个基础功能控件输出的数据格式。

第二步,根据抽象定义的基础功能控件,制定具体配置规范

基础功能控件规范如下:

fd6ebd1e-c48b-11ed-bfe3-dac502259ad0.png

通过以上两步规范定义后,在同一个系统中,同一个处理过程只需要定义一个基础功能控件规范。如Kafka消费者所需的配置如Kafka集群地址、消费群组、数据所在topic、数据所在分区key,消费位置等,只需要规定上述举例这样一个Kafka消费控件并开发实现,该控件就可以在该系统中复用,每次配置的数据处理工作流,复用Kafka消费控件类并根据新配置的源系统提供的Kafka集群地址、数据所在topic等配置即可实例化该工作流所需的kafka 消费者,实现过程从开发无数次Kafka Consumer的代码变为实现一次Kafka Consumer控件代码,大量节省开发时间和开发成本。

第三步,通过对基本功能的抽象,实现如HTTP请求、kafka生产、数据遍历、条件循环、数据映射、MySQL写操作等基础功能控件并实现,再根据各个基础功能运行的先后逻辑组装相应配置执行脚本来编排组建成一个完整flink流处理链路,即可完成不同系统间的数据集成功能。

如在私有化项目中有将设备厂商云平台中智能门锁状态信息同步至自有云平台进行智能门锁控制的需求,由于智能门锁设备协议与自有物联网平台数据采集协议不适配,无法直连,由设备厂商云平台提供智能门锁状态信息推送功能,由自有物联网平台提供推送数据接收接口,完成智能门锁状态信息的同步功能。

在此案例中,通过flink框架的自定义Source算子实现HTTP POST功能接口的HTTP监听控件完成设备厂商云平台的推送数据接收功能,将接收到的智能门锁状态信息根据智能门锁ID、状态status与自有云平台存储的状态进行比较的IF分支控件,将存在状态变化的智能门锁状态信息数据向后序Sink算子流转,通过自定义Sink算子实现自有云平台数据上传功能,完成智能门锁状态信息的跨平台更新功能。

fd7f701e-c48b-11ed-bfe3-dac502259ad0.png

第四步,根据组建好的执行逻辑生成有向无环图,提交Flink运行,具体如下:

通过对不同的基础功能控件,基于有向无环图,将基础功能控件放入有向无环图的顶点,其中整个图中只有一个数据源控件,且无其他基础功能控件可以将数据传输给它;数据输出控件和数据操作控件可以多个,对应多条分支处理逻辑。将数据传输方向作为有向无环图的边,以此连接和组织跨系统数据传输过程中针对数据的不同逻辑顺序,生成一条完整的数据传输处理链路,将此图完整实现,提交flink执行,即可实现完整的数据抽取、转换以及输出的数字集成功能。

4

总结

最后我们来总结下基于Flink的数字集成能力的实现。得益于flink在ETL数据集成上的丰富能力以及算子之间易于处理的基础功能,我们将flink的3类算子进行抽象定义实现3类基础功能控件,实现不同的数据处理过程。根据不同的功能需求,通过Source算子实现从消息队列、API、数据库等多种数据源抽取数据的功能;通过丰富的Transform算子实现数据的清洗、筛选、转换的功能;最后可通过Sink算子实现将目标格式数据输入目标系统接收数据的渠道如消息队列、数据库、API等。综上所述,基于Flink的数字集成能力是可以实现并且具备丰富功能和可扩展性的。





审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 以太网
    +关注

    关注

    40

    文章

    5071

    浏览量

    166203
  • 数据采集
    +关注

    关注

    38

    文章

    4505

    浏览量

    112310
  • MYSQL数据库
    +关注

    关注

    0

    文章

    95

    浏览量

    9277
  • HTTP协议
    +关注

    关注

    0

    文章

    54

    浏览量

    9636

原文标题:基于flink的数字集成方案

文章出处:【微信号:CloudBrain-TT,微信公众号:云脑智库】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    555集成芯片的三种工作模式

    555集成芯片(555定时器)是一种多功能的数字集成电路,它可以被配置为产生精确的时间延迟或生成稳定的方波信号。
    的头像 发表于 03-25 14:41 225次阅读

    数字集成芯片是什么

    数字集成芯片,即数字集成电路,是一种数字逻辑电路或系统,它将元件和连接集成在同一半导体芯片上。这种芯片基于数字逻辑(如布尔代数)进行设计和运
    的头像 发表于 03-20 15:41 178次阅读

    Verilog HDL数字集成电路设计方法概述

    电子发烧友网站提供《Verilog HDL数字集成电路设计方法概述.zip》资料免费下载
    发表于 02-03 09:27 2次下载

    集成电路按用途可分成哪两类?

    集成电路按用途可分为模拟集成电路和数字集成电路两类。
    的头像 发表于 01-03 18:14 624次阅读

    电流检测放大器电路设计集成方案

    对于电流检测放大器电路设计 目前主要可以分为 分立方案以及集成方案 下面小编 主要为大家梳理比较一下 分立及集成方案的特点
    发表于 11-19 12:16 475次阅读
    电流检测放大器电路设计<b class='flag-5'>集成方案</b>

    用于电风扇转速控制的集成方案

    电子发烧友网站提供《用于电风扇转速控制的集成方案.pdf》资料免费下载
    发表于 11-16 14:28 0次下载
    用于电风扇转速控制的<b class='flag-5'>集成方案</b>

    数字集成电路的发展历程和应用

    数字集成电路(Digital IC)具有集成度极高、体积很小、功耗超低、系统可靠性高及便于电子系统(如计算机)处理等特点。数字集成电路(如 CPU 芯片、DSP芯片、SoC芯片、各种存储芯片或专门
    的头像 发表于 11-15 09:17 555次阅读

    NXP 5G射频功率器件的集成方案

    我们今天一起来学习一下恩智浦公司的这份关于射频功率器件的集成方案——Radio Power Solutions。
    发表于 11-10 09:59 174次阅读
    NXP 5G射频功率器件的<b class='flag-5'>集成方案</b>

    Flink学习精要

    Flink是Apache基金会旗下的一个开源大数据处理框架。目前,Flink已经成为各大公司大数据实时处理的发力重点,特别是国内以阿里为代表的一众互联网大厂都在全力投入,为Flink社区贡献了大量
    发表于 09-25 11:51 0次下载

    基于单片机的简易数字相位计设计方案

    介绍一种以单片机为核心的数字相位计。由过零检测及异或电路,将两路输入信号的相位差转换成方波,再利用单片机对该方波的高低电平分别计数。通过求得占空比得到相位差。对不同频率的输入信号,采用不同的计数信号
    发表于 09-21 07:30

    按功能分集成电路有哪些类型 集成电路的工作速度主要取决于什么

    数字集成电路 (Digital Integrated Circuit,DIC):数字集成电路主要用于处理和操作数字信号,执行逻辑运算、计数和存储等功能。常见的数字集成电路包括逻辑门、触
    发表于 08-04 15:48 1422次阅读

    Flink社区风波:比Flink快十倍的技术真存在吗?

    今天,RisingWave 指出,两份报告的结果差异是由环境差异造成:在 Flink 团队成员的测试环境中,“Flink 使用了三倍于我们测试环境的 CPU,六倍于我们测试环境的内存。同时我们的测试
    的头像 发表于 08-02 15:56 314次阅读

    Verilog HDL数字集成电路设计原理与应用

    Verilog HDL数字集成电路设计原理与应用(蔡觉平)西安电子科技大学出版社
    发表于 05-26 15:23 0次下载

    数字集成电路测试流程

    数字集成电路的测试主要包括直流参数测试 (DC Test)、交流参数测试(AC Test)、功能测试(Function Test)、可测性设计(DFT)测试等。典型的数字集成电路测试顺序如图所示。
    的头像 发表于 05-26 10:08 2451次阅读
    <b class='flag-5'>数字集成</b>电路测试流程

    智能制造系统集成方法有哪些

    智能制造系统集成方法涉及多个领域和技术,根据不同的分类标准可以得到不同的方法,以下介绍几种常见的智能制造系统集成方法:   1. 垂直集成方法:垂直集成是对整个制造企业业务流程进
    发表于 04-25 15:24 2335次阅读