当前位置: 首页 > news >正文

Flink流处理基础概论

文章目录

    • 引言
    • Flink基本概述
      • 传统数据架构的不足
    • Dataflow中的几大基本概念
      • Dataflow流式处理宏观流程
      • 数据并行和任务并行的区别
      • Flink中几种数据传播策略
    • Flink中事件的延迟和吞吐
      • 事件延迟
      • 事件的吞吐
      • 如何更好的理解事件的延迟和吞吐
    • flink数据流的几种操作
      • 输入输出
      • 转换操作
      • 滚动聚合
      • 窗口操作
    • Flink中的时间语义
      • 事件时间和处理时间
      • Flink水位线
    • Flink中的一致性问题
      • 利用状态保证一致性
      • 任务保证和结果保障的概念
    • 小结
    • 参考

引言

本文初步针对flink中几个核心的概念和使用的注意事项进行简单的介绍,让读者针对flin中一些核心的组件使用有一个初步的了解。

Flink基本概述

传统数据架构的不足

因为特殊需要我们针对采集的数据等进行数据样本分析,所以大部分企业都会在传统事务型的OLTP数据库补充一套OLAP同步数据。

好在如今有了各种分析型的数据仓库可以做到这一点,但因为如今的微服务架构使得各个应用都遵循专注做好一件事的哲学。这是的事务型数据库数据分布在不同的系统上,所以我们就需要一款实时采集数据流数据处理应用,将这些相互隔离的数据库数据联合并采集到分析型数据仓库上。

而上述这个同步的过程,也就是我们常说的ETL即提取-转换-加载(Extract-Transform-Load,),整体来说,它的执行步骤为:

  1. 提取:从事务型数据库中提取数据
  2. 转换:按照需求进行数据转换为符合要求的数据格式(可能包含数据验证、数据归一化、编码、去重、表模式转换)
  3. 加载:同步到分析型数据库上完成持久化

所以一旦数据同步到分型数据库上,我们就可以利用分析型数据库做到如下几点:

  1. 定期数据报告:以生成计算业务习相关的统计数据,帮助管理层进行评估企业整体健康状况。
  2. 即席查询:利用分析型数据的优势,通过查询数据解决特定问题,以便进行下一步的商业决策。

Dataflow中的几大基本概念

Dataflow流式处理宏观流程

Dataflow代表着数据如何在不同的操作之间的流动,它通常是由一张有向图构成,即:

  1. 数据源:对于flink中没有输入一端的算子,即数据源头,我们称之为dataflow的源数据。
  2. 算子:有输入和输出,即通过从输入端获取数据并对其进行计算,然后产生数据从输出端输出供后续处理。
  3. 数据汇:经过无数个算子,将数据汇聚到终端即没有输出的一端,这种没有输出端的算子就是数据汇。

数据并行和任务并行的区别

上述说明了构成了Dataflow的宏观核心概念的逻辑视图,按照物理分布式视图下,算子可能会发布在不同的物理机器上,例如下图所示,中间进行数据转换计算的算子,各分配两个发布在不同的机器下作为并行任务运行,各自完成自己的一部分的计算任务。由此,也就有了数据并行和任务并行的概念。

先来说说数据并行,本质就是将数据进行分组,使之同一操作的多个任务切割为不同的子集,这使得计算负载能够分配到不同算子上工作,例如按照用户id进行分组将数据发布到负载的算子上进行数据运算。

而任务并行则说相同规则的算子可以多个并行处理,源数据可以并行传输到并行算子中运行,可以更好的利用集群资源进行运算。

Flink中几种数据传播策略

采集到源数据之后,flink会按照数据传播策略将数据项分配给不同的任务,对应的传播策略也有以下几种:

  1. 转发策略:将数据按照一对一映射的方式传输到指定的节点上,这种做法对于部署在相同机器上的任务非常友好,因为它们避免的网络通信的开销。
  2. 广播策略:即针对收到的数据流,将数据拷贝的多份然后发布到所有的下游算子中,因为涉及多算子节点的网络通信,所以代价也会相对昂贵一些。
  3. 基于键值对的策略:按照事先约定

相关文章:

  • springboot 微服务下部署AI服务
  • 微服务(SpringCloud)的简单介绍
  • 华为OD机试真题——传递悄悄话(二叉树最长路径问题)(2025A卷:200分)Java/python/JavaScript/C/C++/GO最佳实现
  • 深入研究Azure 容器网络接口 (CNI) overlay
  • 战略3.1 - 战略选择(发展战略-一体/密集/多元化)
  • 深度解析 8086 处理器:x86 架构的奠基者
  • RabbitMQ 核心原理与Spring Boot整合实战
  • 华为云Flexus+DeepSeek征文 | DeepSeek-V3/R1商用服务开通体验全流程及使用评测
  • 【Linux 学习计划】-- 进程概念与本质 | pid ppid | 进程创建与多进程(fork)
  • 黑龙江云前沿-服务器托管
  • 网络原理 | TCP与UDP协议的区别以及回显服务器的实现
  • 【邀请】点击邀请链接参加阿里云训练营活动,完成学习送礼品+鼠标垫+usb拓展坞,一个小时完成
  • Linux输出命令——echo解析
  • GitHub Page填写域名显示被占用
  • [服务器初体验] SSH登录成功后,我的新Linux服务器“空空如也”?三件必做的事让它安全又顺手
  • Go语言开发的GMQT物联网MQTT消息服务器(mqtt Broker)支持海量MQTT连接和快速低延时消息传输-提供源码可二次开发定制需求
  • 中小企业AI算力如何选?【显卡租赁】VS【自建服务器】
  • [运维][服务器][lightsail] Nginx反向代理实现端口映射:将80端口转发至本地5000端口
  • C++ 图像处理库 CxImage 简介 (迁移至OpenCV)
  • 【自然语言处理与大模型】大模型Agent四大的组件
  • 合肥专门做网站/搜狗seo刷排名软件
  • 金华专业网站制作/网络营销评价的名词解释
  • 网站建设 招标资质要求/百度网盘搜索免费资源
  • 西昌市网站建设公司/一媒体app软件下载老版本
  • 网站建设对企业的意义/网站服务器搭建与管理
  • 网站建设工具品牌/北京cms建站模板