APP下载

基于Flink实时预警功能的实现

2023-08-27韦统边吴江波苏德张亮韦通明

汽车电器 2023年8期
关键词:实时架构预警

韦统边 吴江波 苏德 张亮 韦通明

【摘  要】随着各行业业务系统的复杂化和大数据时代的来临,企业对数据实时性的要求也越来越高。本文着重分析数据实时的重要性,不同实时预警功能系统的技术对比,结合企业业务确认架构设计和实现方式,主要对采取基于Flink流处理框架對实时预警功能系统的实现展开叙述和总结。

【关键词】大数据;架构;实时;Flink;预警

中图分类号:U463.6    文献标志码:A    文章编号:1003-8639( 2023 )08-0049-02

Implementation of Real-time Warning Function Based on Flink

WEI Tong-bian,WU Jiang-bo,SU De,ZHANG Liang,WEI Tong-ming

(SAIC GM Wuling Automobile Co.,Ltd .,Guangxi Laboratory of New Energy Automobile,

Guangxi Key Laboratory of Automobile Four New Features,Liuzhou 545007,China)

【Abstract】With the complexity of business systems in various industries and the advent of the era of big data,enterprises have higher and higher requirements for real-time data. This paper focuses on the importance of real-time data,the technical comparison of different real-time early warning function systems,combined with the design and implementation of enterprise business confirmation architecture,and mainly describes and summarizes the implementation of real-time early warning function system based on Flink flow processing framework.

【Key words】big data;framework;real time;Flink;early warning

随着步入大数据时代和各个行业业务系统的复杂化,面临海量数据的分析计算,同样,数据的采集处理和存储如何及时预警信息也具有巨大的挑战。比如在汽车行业,数据由之前的离线分析逐步转为实时分析,在一些场景下,数据的实时分析更能够增加用户的体验感,提高数据的价值和减少风险的发生。为了全面提高用户体验以及系统的预测性,建立实时的预警功能系统是十分有必要的。

1  预警实现方案介绍

基于大数据技术的广泛使用,特别是目前比较流行的分布式框架和实时计算框架,如Flink[1]、Spark[2]计算平台逐步完善,目前多数企业采用的是Kafka和Flink技术来开发实时预警系统。Flink实现上传数据处理,提升数据处理速度,提高告警的及时性,但是有些传统的告警系统却不好修改版本代码。

结合主流的预警系统实现技术,大概分为4种方案:一是基于Flink实现预警,数据的上传方式是传统的,Flink流计算框架对数据进行处理分析,得到中间结果,然后与原先设定好的阈值比较,符合条件则发送告警信息;二是基于Flink SQL语法实现配置的动态更新,显示在可视化的实时系统中,但是结合预警功能比较难开发;三是使用Kafka作为消息中间件,Flink消费不同的主题topic以及对数据进行处理和过滤,并将结果写入Redis[3],Prometheus读取Redis数据,Grafana基于Prometheus实现图表的展示;四是基于Flink CEP实现预警功能系统开发。

预警功能系统一般包含日志采集、解析聚合、监控和预警。日志采集指的是将日志和指标统一化、集中化地收集;解析聚合是使用Flink作业解析聚合平台所有的作业指标数据,展示给用户以及下游业务使用;监控和预警,对于聚合完成了的指标,做预警规则的配置。大致流程图如图1所示。

本文采用Canal、Kafka、Flink、Flink SQL、Redis、Grafana、Prometheus技术结合来实现预警功能系统的开发,实现灵活配置和动态更新。基本的实现思路是利用Canal采集原始数据,通过自定义程序将数据放置在Kafka中的指定主题,Kafka作为消息中间件也作为Flink的数据源,Flink消费数据后通过数据的清洗过滤得到了初级的告警数据,然后结合指标通过二次过滤得到详细的告警数据并放置在Redis中,Prometheus结合告警数据发送到不同应用上,其中,Grafana为告警系统提供管理控制平台,便于告警信息的查询和统计。

2  预警功能系统的技术栈

2.1  Canal

Canal主要用途是基于MySQL数据库增量日志解析,提供增量数据订阅和消费,其工作原理如图2所示。

Canal的工作原理就是把自己伪装成MySQL slave,模拟MySQL slave的交互协议向MySQL Mater发送dump协议,MySQL Mater收到Canal发送过来的dump请求,开始推送binary log给Canal,然后Canal解析binary log,再发送到存储目的地,比如MySQL、Kafka、Elastic Search等。

Canal优势是对业务代码没有入侵,数据的同步也能做到准实时,可以实现与数据源一对多的关系,拥有web管理页面,重要的是具备集群高可用特性,生产环境一般是Canal采集数据后将数据发送到消息队列Kafka的topic中。

2.2  Kafka

Apache Kafka最初是由LinkedIn研发的一个分布式的发布-订阅消息系统[4-5],为处理实时数据提供一个统一、高吞吐、低等待的平台。

Kafka是一个分布式系统,由通过高性能TCP网络协议进行通信的服务器和客户端组成,可部署在内部以及云环境中的裸机硬件、虚拟机和容器上。Kafka集群可以在一个指定的时间内保存所有发布上来的消息,当超过指定的时间后消息就会被系统丢弃以释放空间。Kafka的性能不会受数据量大小的影响,因此可以保存大量的数据。

Kafka适用的场景有日志收集,后通过统一接口方式提供给消费者;作为消息系统,将生产者和消费者进行代码解耦;结合Flink做流式处理,实时场景的实现。

2.3  Flink和Flink SQL

Flink是一个针对流数据和批数据的分布式处理引擎[6-9],適用场景主要是流数据处理,会把所有任务当作流来处理。因此,Flink可以提供数据处理的通用方案,使得由相同或相关的组件和API搭建框架的处理需求得以简化。同时,Flink可以支持本地快速迭代,可以定制化内存管理。所以,Flink的特点是处理大数据速度快,能满足大数据背景下应用实时计算平台的需求。Flink是一个真正的流式处理,其可以按照元组逐个分发数据,做到对数据的单条处理,而不需要再流处理汇总执行计算。其支持大规模计算能力,能够在数千个节点上并发运行,具有强大的吞吐量和延迟特性,提供了数据分布、数据通信以及容错机制等功能。同时,Flink提供多种灵活的窗口函数及更高抽象层的API,使开发者可以更便捷地编写分布式任务。

Flink SQL是面向用户的API层[10],是降低用户使用实时计算门槛而设计的一套符合标准SQL语义的开发语言,开发者可以直接在代码中书写SQL实现一些查询操作。Flink的SQL支持基本查询语法,常见的算子包括SELECT、WHERE、DISTINCT、GROUP BY、UNION、UNION ALL、JOIN等。同时,Flink SQL提供大量的内置函数,常见的内置函数包括比较函数、逻辑函数、算术函数、字符串处理函数、时间函数,也支持使用者自定义函数实现其他计算。Flink实现了SQL标准的Apache Calcite(Apache开源SQL解析工具),语法易读易书写,开发者只需关注业务逻辑。而且Flink内置很多优化规则,简化了研发的复杂度,通过SQL能在高层应用上实现真正的批流一体。

2.4  Redis

Redis是一款完全开源且高性能的key-value数据库,基于内存的数据库,速度快,而且支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。

Redis具有性能极高、数据类型丰富、原子性、特性丰富、单线程等特点,适用于数据的高并发读写、海量数据的读写等场景。

2.5  Grafana

Grafana是用于可视化大型测量数据的开源程序,提供了强大和优雅的方式去创建、共享、浏览数据。dashboard中显示了不同metric数据源中的数据一般是配合时序数据库做数据展示的,支持的数据源有:Graphite、InfluxDB、OpenTSDB、Prometheus、Elasticsearch、CloudWatch、Zabbix等。Grafana与Zabbix、Prometheus有一定的技术差异,在于Grafana主要功能是展示数据,并不能用于监控预警,因此,Grafana需要结合Zabbix、Prometheus等工具一起使用,以实现整个数据的预警、显示功能。

2.6  Prometheus

Prometheus是一套开源的系统监控报警框架。它受启发于Google的Brogmon监控系统,由工作在SoundCloud的前Google员工在2012年创建,作为社区开源项目进行开发,并于2015年正式发布。Grafana是数据可视化工具,也可以做数据监控和数据统计,带有告警功能,流程如图3所示。图中,Flink App:需要监控的数据来源;Prometheus:收集数据;Pushgateway:Prometheus生态中的组件,Pushgateway服务收集Flink的指标;Grafana:进行可视化展示。

3  预警系统的整体设计和实现

为了满足预警的实时更新、不同数据源的读取,大数据监控预警系统在文中采用的方案是:Canal+Kafka+Flink+Flink SQL+Redis+Grafana+Prometheus。该系统由数据采集模块、数据存储模块、数据处理模块、预警推送模块、管理平台模块5大模块组成。

数据采集模块通过高可用的Canal日志采集工具对mysql中的原始数据进行采集,将数据进行业务逻辑清洗,整理所需字段,放置到消息存储中间件Kafka的主题中。

数据处理模块作为预警系统的核心,Flink从消息中间件Kafka读取数据,从Redis中读取Flink SQL过滤数据,将数据存入Redis,同时根据阈值条件判断是否达到预警条件。

预警推送模块将预警数据结合预警消息模版生成的可读性预警信息,通过调用应用API将预警信息发送到该应用系统中。

数据存储模块用于将推送的消息进行存储至Redis,便于后期历史预警信息的查询、分析统计,也是Grafana管理页面所展示的数据来源。

管理平台模块用于管理数据处理模块脚本、预警推送模块推送的历史信息。

4  结语

本文提出的基于Canal+Kafka+Flink+Flink SQL+Grafana+Prometheus实现预警功能的系统开发,解决了预警信息的灵活配置和及时发送等问题。Canal能够实现数据快速且完整的采集,Kafka能够实现高吞吐、低延迟的功能,Flink能够实现亿单位级别的实时处理,Flink SQL能够实现减少预警消息变更和代码的耦合度,Prometheus能够实现预警消息的推送,再结合Grafana的展示,满足了预警功能系统的业务需求,增强了系统的预警能力,保证了预警的及时性,提升了平台的运行效率。

参考文献:

[1] MIKA P. Flink:semantic web technology for the extraction and analysis of social networks[J]. Journal of Web Semantics,2005,3(2):211-223.

[2] ZAHARIA M,CHOWDHURY M,FRANKLIN M J,et al. Spark:cluster computing with working sets[C]//Proceedings of the 2nd USENIX conference on hot topics in cloud compu-ting. Boston,MA:[s.n.],2010.

[3] 张俊,廖雪花,余旭玲,等. 关系型数据库内存化存储模型研究[J]. 计算机工程与应用,2021,57(19):123-128.

[4] 吴璨,王小宁,肖海力,等. 分布式消息系统研究综述[J]. 计算机工程与应用,2019,46(6A):1-5,34.

[5] 徐晶,许炜. 消息中间件综述[J]. 计算机工程与应用,2005,31(16):73-76.

[6] 李梓杨,于炯,卞琛,等. 基于负载感知的数据流动态负载均衡策略[J]. 计算机应用,2017,37(10):2760-2766,2772.

[7] 代明竹,高嵩峰. 基于Hadoop、Spark及Flink大规模数据分析的性能评价[J]. 中国电子科学研究院学报,2028,13(2):149-155.

[8] 李梓杨,于炯,卞琛,等. 基于流网络的Flink平台弹性资源调度策略[J]. 通信学报,2019,40(8):85-101.

[9] 汪志峰,赵宇海,王國仁. 异构Flink集群中负载均衡算法研究与实现[J]. 南京大学学报(自然科学),2021,57(1):110-120.

[10] 王玉真. 基于Flink的实时计算平台的设计与实现[D]. 南昌:南昌大学,2020.

(编辑  杨  景)

作者简介

韦统边(1991—),男,工程师,研究方向为大数据开发。

猜你喜欢

实时架构预警
基于FPGA的RNN硬件加速架构
功能架构在电子电气架构开发中的应用和实践
法国发布高温预警 严阵以待备战“史上最热周”
园林有害生物预警与可持续控制
LSN DCI EVPN VxLAN组网架构研究及实现
一种改进的混音算法的研究与实现
等公交,从“实时”开始
一种基于鼠标定位原理的单目视觉定位技术
机载预警雷达对IFF 的干扰分析
一种基于FPGA+ARM架构的μPMU实现