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

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

相关文章:

Flink流处理基础概论

文章目录 引言Flink基本概述传统数据架构的不足Dataflow中的几大基本概念Dataflow流式处理宏观流程数据并行和任务并行的区别Flink中几种数据传播策略Flink中事件的延迟和吞吐事件延迟事件的吞吐如何更好的理解事件的延迟和吞吐flink数据流的几种操作输入输出转换操作滚动聚合窗…...

【RabbitMQ】记录 InvalidDefinitionException: Java 8 date/time type

目录 1. 添加必要依赖 2. 配置全局序列化方案&#xff08;推荐&#xff09; 3. 配置RabbitMQ消息转换器 关键点说明 1. 添加必要依赖 首先确保项目中包含JSR-310支持模块&#xff1a; <dependency><groupId>com.fasterxml.jackson.datatype</groupId>&l…...

如何通过API接口实现自动化上货跨平台铺货?商品采集|商品上传实现详细步骤

一、引言&#xff1a;跨平台铺货的技术挑战与 API 价值 在电商多平台运营时代&#xff0c;商家需要将商品同步上架至淘宝、京东、拼多多、亚马逊、Shopee 等多个平台&#xff0c;传统手动铺货模式存在效率低下&#xff08;单平台单商品上架需 30-60 分钟&#xff09;、数据一致…...

《三维点如何映射到图像像素?——相机投影模型详解》

引言 以三维投影介绍大多比较分散&#xff0c;不少小伙伴再面对诸多的坐标系转换中容易弄混&#xff0c;特别是再写代码的时候可能搞错&#xff0c;所有这篇文章帮大家完整的梳理3D视觉中的投影变换的全流程&#xff0c;一文弄清楚这个过程&#xff0c;帮助大家搞清坐标系转换…...

Go 语言范围循环变量重用问题与 VSCode 调试解决方法

文章目录 问题描述问题原因1. Go 1.21 及更早版本的范围循环行为2. Go 1.22 的改进3. VSCode 调试中的问题4. 命令行 dlv debug 的正确输出 三种解决方法1. 启用 Go 模块2. 优化 VSCode 调试配置3. 修改代码以确保兼容性4. 清理缓存5. 验证环境 验证结果结论 在 Go 编程中&…...

青少年编程与数学 02-020 C#程序设计基础 04课题、常量和变量

青少年编程与数学 02-020 C#程序设计基础 04课题、常量和变量 一、主函数1. 主函数的基本格式2. 主函数的参数3. 主函数的返回值4. 主函数的作用5. 主函数的示例6. 主函数的注意事项 二、变量1. 变量的声明示例 2. 变量的初始化声明时初始化声明后赋值 3. 变量的类型3.1 值类型…...

零基础设计模式——结构型模式 - 适配器模式

第三部分&#xff1a;结构型模式 - 适配器模式 (Adapter Pattern) 欢迎来到结构型模式的第一站&#xff01;结构型模式关注的是如何将类或对象组合成更大的结构&#xff0c;同时保持结构的灵活性和效率。适配器模式是其中非常实用的一个&#xff0c;它能帮助我们解决接口不兼容…...

【QT】TXT文件的基础操作

目录 一、QT删除TXT文件内容 方法1&#xff1a;使用QFile打开文件并截断 方法2&#xff1a;使用QSaveFile&#xff08;更安全的写入方式&#xff09; 方法3&#xff1a;使用QTextStream 使用示例 注意事项 二、QT操作TXT文件&#xff1a;清空内容并写入新数据 完整实现代…...

WordPress多语言插件安装与使用教程

WordPress多语言插件GTranslate的使用方法 在wordpress网站后台搜索多语言插件GTranslate并安装&#xff0c;安装完成、用户插件后开始设置&#xff0c;以下为设置方法&#xff1a; 1、先在后台左侧找到Gtranslate&#xff0c;进入到设置界面 2、选择要显示的形式&#xff0c…...

互联网大厂Java求职面试:短视频平台大规模实时互动系统架构设计

互联网大厂Java求职面试&#xff1a;短视频平台大规模实时互动系统架构设计 面试背景介绍 技术总监&#xff08;严肃脸&#xff09;&#xff1a; 欢迎来到我们今天的模拟面试&#xff0c;我是技术部的李总监&#xff0c;负责平台后端架构和高可用系统设计。今天我们将围绕一个…...

欣佰特科技|SenseGlove Nova2 力反馈数据手套:助力外科手术训练的精准触觉模拟

在医疗科技持续发展的背景下&#xff0c;虚拟现实&#xff08;VR&#xff09;技术正在改变外科手术培训的方式&#xff0c;而 SenseGlove Nova2 力反馈数据手套 在这一领域发挥着重要作用。 SenseGlove Nova2 力反馈数据手套 与 VirtualiSurg 手术模拟系统深度结合。其手部追踪…...

Axure元件动作七:移动、旋转、启用/禁用效果、置于顶层/底层详解

亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢!如有帮助请订阅专栏! Axure产品经理精品视频课已登录CSDN可点击学习https://edu.csdn.net/course/detail/40420 案例视频: Axure移动、旋转、置于顶层底层、启用禁用 课程主题:移动、旋转、启用/禁用效果、置于顶…...

网络安全-等级保护(等保) 3-2-2 GB/T 28449-2019 第7章 现场测评活动/第8章 报告编制活动

################################################################################ GB/T 28449-2019《信息安全技术 网络安全等级保护测评过程指南》是规定了等级测评过程&#xff0c;是纵向的流程&#xff0c;包括&#xff1a;四个基本测评活动:测评准备活动、方案编制活…...

Flutter跨平台通信实战|3步打通Android原生能力,实现底层API调用!

当你的Flutter应用需要调用Android独有的硬件能力&#xff08;如传感器、蓝牙模块&#xff09;或系统级API时&#xff0c;如何与原生平台"对话"&#xff1f;本文手把手教你通过MethodChannel实现双向通信&#xff0c;让Flutter轻松驾驭Android底层能力&#xff01; 一…...

IAM角色访问AWS RDS For MySQL

IAM角色访问AWS RDS For MySQL Tips: 写这篇文章&#xff0c;主要是用作记录&#xff1b;在AWS配置IAM RDS 角色权限访问&#xff0c;官方文档不怎么全&#xff0c;踩了一些坑… AWS云上配置 开启IAM身份验证 登录AWS控制台搜索并进入Databases管理页面选择数据库实例&#x…...

android property 系统

1.使用目的 目的都是为了测试。 减少编译流程。提高测试效率 2.使用方法流程 2.1 初始化默认值 方法一. 配置文件进行配置。 方法二. 手动初始化 setprop test.prop.id 12.2 获取键值并 property_get2.3 配置头文件 <cutils/properties.h>3.注意事项 3.1 关于无法…...

Karakeep | 支持Docker/NAS 私有化部署!稍后阅读工具告别云端依赖,让知识收藏更有序

Karakeep 介绍 Karakeep&#xff08;以前的 Hoarder&#xff09;是一款开源的“Bookmark Everything”应用程序&#xff0c;一款基于 AI 驱动的开源书签管理工具&#xff0c;专为解决传统浏览器书签管理中的混乱问题而设计。其核心目标是通过智能化技术帮助用户高效整理、检索和…...

RV1126+FFMPEG多路码流监控项目大体讲解

一.项目介绍&#xff1a; 本项目采用的是易百纳RV1126开发板和CMOS摄像头&#xff0c;使用的推流框架是FFMPEG开源项目。这个项目的工作流程如下(如上图)&#xff1a;通过采集摄像头的VI模块&#xff0c;再通过硬件编码VENC模块进行H264/H265的编码压缩&#xff0c;并把压缩后的…...

el-dialog 组件 多层嵌套 被遮罩问题

<el-dialog title"提示" :visible.sync"dialogBindUserVisible" width"30%" append-to-body :before-close"handleClose"> <span>这是一段信息</span> <span slot"footer" class"dialog-footer&q…...

探秘谷歌Gemini:开启人工智能新纪元

一、引言 在人工智能的浩瀚星空中&#xff0c;每一次重大模型的发布都宛如一颗璀璨新星闪耀登场&#xff0c;而谷歌 Gemini 的亮相&#xff0c;无疑是其中最为耀眼的时刻之一。它的出现&#xff0c;犹如在 AI 领域投下了一颗重磅炸弹&#xff0c;引发了全球范围内的广泛关注与热…...

TCP建立连接为什么不是两次握手,而是三次,为什么不能在第二次握手时就建立连接?

一.无法确认客户端的接收能力 三次握手的核心目的是为了确认客户端和服务端双方的发送和接收能力&#xff1a; 确保双方都能成功发送和接收数据。 如果C端发送数据到S端&#xff0c;S端收到数据&#xff0c;则可以确认S端具备正常的接收能力&#xff1b;如果C端发送出去的请求被…...

《Stable Diffusion 3.0企业级落地指南》——技术赋能与商业价值的深度融合实践

Stable Diffusion 3.0&#xff08;SD3&#xff09;作为当前多模态生成式AI技术的集大成者&#xff0c;凭借其创新的扩散Transformer架构&#xff08;DiT&#xff09;、流匹配&#xff08;Flow Matching&#xff09;技术以及超分辨率生成能力&#xff0c;正在重塑企业内容生产的…...

【软考向】Chapter 3 数据结构

线性结构线性表顺序存储 —— 访问易,增删难链式存储 —— 访问难、增删易栈 —— 后进先出 和 队列 —— 先进先出字符串 —— KMP 匹配算法数组、矩阵和广义表数组树 —— 树根为第一层,最大层数为树高/深度,度线索二叉树哈夫曼编码树和森林 —— 树的双亲表示和孩子表示图…...

[原创](计算机数学)(The Probability Lifesaver)(P14): 推导计算 In(1-u) 约等于 -u

[作者] 常用网名: 猪头三 出生日期: 1981.XX.XX 企鹅交流: 643439947 个人网站: 80x86汇编小站 编程生涯: 2001年~至今[共24年] 职业生涯: 22年 开发语言: C/C++、80x86ASM、Object Pascal、Objective-C、C#、R、Python、PHP、Perl、 开发工具: Visual Studio、Delphi、XCode、…...

wordcount在集群上的测试

1.将louts.txt文件从cg计算机复制到master节点上面&#xff0c;存放在/usr/local/hadoop 需要输入密码&#xff1a;83953588abc scp /root/IdeaProjects/mapReduceTest/lotus.txt root172.18.0.2:/usr/local/hadoop /WordCountTest/input 2.将lotus.txt文件从master这台机器…...

OpenCV CUDA模块图像过滤------创建一个 Sobel 滤波器函数createSobelFilter()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 该函数用于创建一个 Sobel 滤波器&#xff0c;用于在 GPU 上进行边缘检测。它基于图像的梯度计算&#xff1a; dx 表示对 x 方向求导的阶数&…...

[面试精选] 0053. 最大子数组和

文章目录 1. 题目链接2. 题目描述3. 题目示例4. 解题思路5. 题解代码6. 复杂度分析 1. 题目链接 53. 最大子数组和 - 力扣&#xff08;LeetCode&#xff09; 2. 题目描述 给你一个整数数组 nums &#xff0c;请你找出一个具有最大和的连续子数组&#xff08;子数组最少包含一…...

怎么判断一个Android APP使用了Cordova这个跨端框架

要判断一个 Android 应用是否使用了 Cordova 框架&#xff0c;可以通过以下方法逐步验证&#xff1a; 一、安装包结构分析 1. 解压 APK 将 .apk 文件重命名为 .zip 并解压&#xff0c;检查以下特征文件&#xff1a; • assets/www/ 目录&#xff1a; Cordova 的核心 Web 资源&…...

PDF 转 JPG 图片小工具:CodeBuddy 助力解决转换痛点

本文所使用的 CodeBuddy 免费下载链接&#xff1a;腾讯云代码助手 CodeBuddy - AI 时代的智能编程伙伴 前言 在数字化办公与内容创作的浪潮中&#xff0c;将 PDF 文件转换为 JPG 图片格式的需求日益频繁。无论是学术文献中的图表提取&#xff0c;还是宣传资料的视觉化呈现&am…...

VisionPro 与 C# 联合编程:相机连接实战指南

在工业视觉检测与自动化领域&#xff0c;康耐视&#xff08;Cognex&#xff09;的 VisionPro 是一款功能强大的视觉开发工具&#xff0c;而 C# 凭借其简洁性与高效性&#xff0c;成为许多开发者的首选编程语言。本文将详细介绍如何通过 C# 与 VisionPro 联合编程实现相机连接&a…...