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.pswp.cn/pingmian/82371.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Tomcat 使用与配置全解

一、 Tomcat简介 Tomcat服务器是Apache的一个开源免费的Web容器。它实现了JavaEE平台下部分技术规范,属于轻量级应用服务器。 1. Tomcat版本 Tomcat版本 JDK版本 Servlet版本 JSP版本 10.0.X 8 and later 5.0 3.0 9.0.x 8 and later 4.0 2.3 8.0.x 7…

Unity3D仿星露谷物语开发52之菜单页面

1、目标 创建菜单页面,可通过Esc键开启或关闭。 当把鼠标悬停在上面时它会高亮,然后当点击按钮时标签页会被选择。 2、 创建PauseMenuCanvas (1)创建Canvas 在Hierarchy -> PersistentScene -> UI下创建新的Cavans命名为…

Spring Boot 调优的 12 个关键节点

数据库连接池调优:精准匹配系统资源 症状: 默认配置下,连接池资源使用不当,高并发时连接耗尽或排队。 常见误区: spring:datasource:hikari:maximum-pool-size: 1000 # 设置过大connection-timeout: 30000 # 设置…

前端流行框架Vue3教程:28. Vue应用

28. Vue应用 应用实例 每个 Vue 应用都是通过 createApp函数创建一个新的 应用实例 main.js import {createApp} from vue import App from ./App.vue// app:Vue的实例对象 // 在一个Vue项目中,有且只有一个Vue的实例对象 const app createApp(App)/* 根组件选项…

MongoDB 数据库迁移:完整指南与最佳实践

在现代数据驱动的应用中,数据库迁移是一项常见的任务,无论是升级 MongoDB 版本、更换服务器硬件,还是迁移到云环境(如 MongoDB Atlas),都需要一个可靠的迁移策略。错误的迁移方式可能导致数据丢失、应用停机…

MQTT-Vue整合

Vue整合 依赖环境 nodejs 版本 > 18安装 element plus npm install element-plus安装 mqtt npm install mqtt初始化Vue项目 使用 vite 创建项目 执行命令 npm create vitelatest输入项目名称 vue-mqtt-demo MQTT连接 连接组件代码 components/MqttDemo.vue <script…

IP 地址反向解析(IP反查域名)原理与应用

一、IP 地址反向解析的原理与技术细节 IP 地址反向解析&#xff08;Reverse IP Lookup&#xff09;是一种将 IP 地址映射回其关联域名或主机名的网络技术&#xff0c;与常见的正向 DNS 解析&#xff08;将域名解析为 IP 地址&#xff09;形成互补。这一过程在网络安全研究、漏…

Mermaid 文件支持的图表

Mermaid 文件后缀支持多种类型的图表&#xff0c;包括但不限于&#xff1a; 流程图&#xff1a;用于描述流程和决策的图表&#xff0c;常用于业务流程的表示和分析。 时序图&#xff1a;用于描述事件发生的顺序和时序关系的图表&#xff0c;常用于系统交互和消息传递的分析。 …

用 Python 构建自动驾驶的实时通信系统:让车辆“交流”起来!

用 Python 构建自动驾驶的实时通信系统:让车辆“交流”起来! 自动驾驶技术正加速变革全球交通体系,它不仅是机器学习与计算机视觉的胜利,更是一场 高效通信架构的革命。自动驾驶汽车需要实时交换信息,比如: 传感器数据(雷达、激光雷达、摄像头)V2V(车与车通信)V2X(…

PDF处理控件Aspose.PDF教程:以编程方式合并PDF文档

合并 PDF 文档是常见的需求——无论您是整理报告、合并发票还是整合扫描页面。单一、统一的文件更易于在个人、学术或专业用途中共享、存储和管理。 本文将向您展示如何使用 Aspose.PDF在C#、Java 和 Python中以编程方式合并 PDf 文件。 Aspose.PDF最新版下载 为什么使用 As…

.gitignore 的基本用法

.gitignore 文件是 Git 版本控制系统中一个非常重要的配置文件&#xff0c;用于指定哪些文件或目录应该被 Git 忽略&#xff0c;不纳入版本控制。合理使用 .gitignore 可以避免将临时文件、编译产物、敏感信息等不必要的文件提交到代码仓库中。 1. .gitignore 的基本用法 &…

华为OD机试真题——分糖果(2025A卷:100分)Java/python/JavaScript/C/C++/GO最佳实现

2025 A卷 100分 题型 本专栏内全部题目均提供Java、python、JavaScript、C、C++、GO六种语言的最佳实现方式; 并且每种语言均涵盖详细的问题分析、解题思路、代码实现、代码详解、3个测试用例以及综合分析; 本文收录于专栏:《2025华为OD真题目录+全流程解析+备考攻略+经验分…

通过chrome插件自动生成博客评论,高效发外链

最近crazy cattle 3d这个词爆火&#xff0c;很多人都在做&#xff0c;竞争异常激烈&#xff0c;甚至可以说是惨不忍睹。 从最近的数据看&#xff0c;胜出的主要是crazycattle3d.com, crazycattle3d.io, crazy-cattle-3d.com这几个&#xff0c;流量最高的crazycattle3d.com已经…

创建一个简易的风扇动画界面:基于 WPF 和 XAML 的实现教程

在本教程中&#xff0c;我们将通过使用 WPF (Windows Presentation Foundation) 和 XAML (Extensible Application Markup Language) 创建一个简单的“台式风扇”界面。我们将使用 XAML 绘制风扇的外观&#xff0c;包含风扇叶片、风扇框架、支架和按钮等元素&#xff0c;并通过…

VPet虚拟桌宠,一款桌宠软件,支持各种互动投喂等. 开源免费并且支持创意工坊

&#x1f4cc; 大家好&#xff0c;我是智界工具库&#xff0c;每天分享好用实用且智能的开源项目&#xff0c;以及在JAVA语言开发中遇到的问题&#xff0c;如果本篇文章对您有所帮助&#xff0c;请帮我点个小赞小收藏小关注吧&#xff0c;谢谢喲&#xff01;&#x1f618; 工具…

HTTP Digest 认证:原理剖析与服务端实现详解

HTTP Digest 认证&#xff1a;原理剖析与服务端实现详解 HTTP 协议中的 Digest 认证&#xff08;摘要认证&#xff09;是一种比 Basic 认证更安全的身份验证机制&#xff0c;其核心设计是避免密码明文传输&#xff0c;并通过动态随机数&#xff08;Nonce&#xff09;防范重放攻…

PDF 表单按钮动态边框效果

问题描述 用户在 Acrobat X 中创建 PDF 表单时遇到一个需求&#xff1a;表单以网格形式列出多个选项&#xff0c;当点击某个选项时&#xff0c;需要在选项周围显示边框&#xff08;圆形或方形&#xff09;&#xff0c;再次点击时边框消失。 试过的解决方案 在文本上方放置透…

部署Gitlab-CE with Docker私有云环境

应用环境 Ubuntu 20.04.6 LTS (GNU/Linux 5.15.0-139-generic x86_64) Docker version 28.1.1, build 4eba377 文章目录 拉取容器镜像生成Run脚本参数解读实例脚本环境配置管理员密码遗忘服务邮箱配置邮件测试 运维问题集锦(1) 端口映射关系(2) 服务日志(3) 分支受保护 项目操作…

MyBatis 的动态 SQL 特性来实现有值字段才进行插入或更新

MyBatis 动态 SQL 解决方案 <!-- 动态INSERT语句 --> <insert id"addDailyFreezeTer" parameterType"com.linyang.pecker.pojo.DailyFreezeTerminalBean">INSERT INTO dailyfreezeter_info<trim prefix"(" suffix")" …

网络原理与 TCP/IP 协议详解

一、网络通信的本质与基础概念 1.1 什么是网络通信&#xff1f; 网络通信的本质是跨设备的数据交换&#xff0c;其核心目标是让不同物理位置的设备能够共享信息。这种交换需要解决三个核心问题&#xff1a; 如何定位设备&#xff1f; → IP地址如何找到具体服务&#xff1f;…