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. 基于键值对的策略:按照事先约定

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/341.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

华为云Flexus+DeepSeek征文 | Dify-LLM平台一键部署教程及问题解决指南

作者简介 我是摘星,一名专注于云计算和AI技术的开发者。本次通过华为云MaaS平台体验DeepSeek系列模型,将实际使用经验分享给大家,希望能帮助开发者快速掌握华为云AI服务的核心能力。 目录 1. 前言 2. 准备工作 2.1 注册华为云账号 2.2 确…

第九届水动力学与能源电力系统国际学术会议(HEEPS 2025)

水动力学与电力系统融合:全球能源转型的新引擎 随着全球能源转型加速,水动力学与电力系统的融合正成为破解可持续发展难题的关键。 新能源接入的挑战与机遇 传统电力系统像一条单向行驶的高速公路,而风电、光伏等间歇性能源的加入&#xf…

鸿蒙仓颉开发语言实战教程:自定义tabbar

大家周末好呀,今天继续分享仓颉语言开发商城应用的实战教程,今天要做的是tabbar。 大家都知道ArkTs有Tabs和TabContent容器,能够实现上图的样式,满足基本的使用需求。而仓颉就不同了,它虽然也有这两个组件,…

腾讯2025年校招笔试真题手撕(三)

一、题目 今天正在进行赛车车队选拔,每一辆赛车都有一个不可以改变的速度。现在需要选取速度差距在10以内的车队(车队中速度的最大值减去最小值不大于10),用于迎宾。车队的选拔按照的是人越多越好的原则,给出n辆车的速…

腾讯2025年校招笔试真题手撕(二)

一、题目 最近以比特币为代表的数字货币市场非常动荡,聪明的小明打算用马尔科夫链来建模股市。如图所示,该模型有三种状态:“行情稳定”,“行情大跌”以及“行情大涨”。每一个状态都以一定的概率转化到下一个状态。比如&#xf…

华为2025年校招笔试真题手撕教程(一)

一、题目 输入: 第一行为记录的版本迭代关系个数N,范围是[1,100000]; 第二行到第N1行:每行包含两个字符串,第一个字符串为当前版本,第二个字符串为前序版本,用空格隔开。字符串包含字符个数为…

腾讯2025年校招笔试真题手撕(一)

一、题目 有n 把钥匙,m 个锁,每把锁只能由一把特定的钥匙打开,其他钥匙都无法打开。一把钥匙可能可以打开多把锁,钥匙也可以重复使用。 对于任意一把锁来说,打开它的钥匙是哪一把是等概率的。但你无法事先知道是哪一把…

mysql都有哪些锁?

MySQL中的锁机制是确保数据库并发操作正确性和一致性的重要组成部分,根据锁的粒度、用途和特性,可以分为多种类型。以下是MySQL中常见的锁及其详细说明: 一、按锁的粒度划分 行级锁(Row-level Locks) 描述:…

JVM——JNI 的运行机制

引入 在 Java 开发中,我们常常会遇到一些 Java 语言难以直接处理的场景,例如需要调用特定体系架构或操作系统的功能,或者利用汇编语言的 SIMD 指令来优化关键代码性能。这时,Java Native Interface(JNI)就…

Oracle中的[行转列]与[列转行]

目录 一、原始数据 二、行转列的多种实现方式 1.CASE WHEN 2.DECODE 3.PIVOT(Oracle独有) 4.使用LEAD开窗函数 三、列转行的多种实现方式 1.UNPIVOT(Oracle独有) 2.UNION ALL合并结果集 四、行转列练习:CASE WHEN/DECODE/PIVOT/lag/LEAD 1.CASE WHEN 2…

MyBatis实战指南(二)如何实现小鸟图标与导入Teacher数据库表实战

MyBatis实战指南(二)如何实现小鸟图标与导入Teacher数据库表实战 前言一、如何实现小鸟图标二、导入Teacher数据库表实战步骤一:在pojo文件下创建Teacher类步骤二:在mapper下创建TeacherMapper接口步骤三:在rescources…

互联网大厂Java求职面试实录 —— 严肃面试官遇到搞笑水货程序员

互联网大厂Java求职面试实录 —— 严肃面试官遇到搞笑水货程序员 本文以真实场景还原的互联网大厂Java面试故事,严肃的面试官与搞笑的水货程序员谢飞机的对话形式,涵盖核心Java、JUC、多线程、线程池、SpringBoot、MyBatis、Dubbo、RabbitMQ、xxl-job、…