[实时计算flink]作业开发上线流程及规范

随着数据量的爆炸性增长和业务需求的日益复杂化,企业对实时数据处理能力的需求愈发迫切。Flink作为一种强大的流处理框架已经成为实时计算标准,其规范化的开发和运维流程对于企业提升数据处理效率、确保系统稳定性至关重要,旨在提升研发效率,保障项目顺利进行。实时计算Flink版基于Apache Flink构建了一站式开发运维管理平台,支持作业开发、数据调试、运行与监控、自动调优、智能诊断等全生命周期能力。本文为您介绍实时计算Flink版在实时计算研发规范的阶段规划、角色职责和整体流程。

阶段规划

  1. 需求阶段:产品经理需理解业务需求,评估实时数据处理的需求,并产出需求文档。

  2. 设计阶段:数据架构师根据需求文档,设计实时数据流处理架构,包括数据源接入、数据转换、存储和查询等。

  3. 开发阶段:开发人员基于设计文档,使用Flink等工具实现实时数据处理逻辑,并进行单元测试。

  4. 测试阶段:测试人员编写测试用例,进行功能测试、性能测试和异常测试,确保数据处理的准确性和稳定性。

  5. 部署阶段:运维人员负责将开发完成的实时数据处理作业部署到生产环境。

  6. 运维阶段:运维人员和开发人员共同监控系统运行状态,根据监控结果进行性能调优。

角色职责

  • 产品经理:负责收集和评估业务需求,产出需求文档,并与技术团队沟通确保需求的可实施性。

  • 数据架构师:负责设计实时数据处理架构,包括数据流架构设计以及方案选型。

  • 开发人员:负责编写Flink代码或应用程序,实现数据处理逻辑,并进行代码审查以及作业调试等单元测试。

  • 测试人员:负责编写和执行测试用例,确保程序的稳定性和性能。

  • 运维人员:负责部署、监控和维护实时数据处理系统,确保系统的高可用性和稳定性。

  • 安全专家:负责实施数据加密、维护访问控制机制以及负责配置和管理网络隔离措施等,确保实时数据处理流程符合安全和合规要求。

实时湖仓研发规范整体流程

  1. 需求分析

    • 数据产品经理与业务团队合作,明确实时数据处理的目标和需求。

    • 确定数据源、数据类型、处理逻辑、输出需求等。

  2. 架构设计

    • 数据架构师设计实时数据处理架构,包括数据源、转换、存储和查询等。

    • 选择合适的数据处理工具和存储解决方案。

  3. 安全规范

    • 安全专家参与设计,确保架构符合安全标准和合规要求。

    • 实施敏感信息密文、访问控制和权限隔离等安全措施。

  4. 作业开发

    • 开发人员根据架构设计,进行数据转换、处理逻辑和ETL设计。

    • 使用Flink实现数据处理逻辑,并进行单元测试。

  5. 代码审查

    • 进行代码审查,确保代码质量和安全性。

    • 应用自动化工具进行静态代码分析。

  6. 测试阶段

    • 测试人员编写测试用例,进行功能测试、性能测试和异常测试。

    • 确保数据处理的准确性和稳定性。

  7. 部署上线

    • 运维人员将系统部署到生产环境。

    • 进行部署前的安全检查和配置验证。

  8. 监控运维

    • 运维人员和开发人员共同监控系统运行状态。

    • 根据监控结果进行性能调优和故障响应。

  9. 性能测试

    • 测试人员进行负载测试和压力测试,确保系统在高负载下的性能。

    • 优化系统配置和资源分配。

  10. 备份与恢复

    • 实施定期的数据备份和恢复策略。

    • 验证备份数据的完整性和可恢复性。

  11. 审计与合规

    • 定期进行安全审计和合规性检查。

    • 确保所有操作符合法律法规和公司政策。

在进行作业恢复时,从检查点或快照中恢复相较于无状态启动,关键在于高效地从远程持久存储中下载状态文件并重建状态引擎。这一步骤需要执行大量的输入输出操作,容易成为恢复过程中的效率瓶颈,可能会造成作业的长时间停滞。本文为您介绍作业启动和扩缩容过程中瓶颈问题的诊断方法和调优策略,助力您高效提升系统性能。

诊断步骤

在作业启动或进行扩容操作期间,如果发现作业长时间停留在初始化阶段,应首先诊断是否存在初始化瓶颈。以下是推荐的诊断步骤:

  1. 使用诊断工具分析算子状态:利用Thread Dump、线程动态分析和火焰图等工具,检查初始化阶段的算子线程栈。重点关注线程栈是否长时间处于等待状态,尤其是在Gemini等状态存储系统上的操作。诊断工具使用方式请参见分析工具使用方式。

  2. 识别状态算子的初始化问题:如果发现某个算子长时间处于初始化状态,且该算子涉及状态处理,那么可以推断问题可能出在状态的下载或重建过程中。

调优策略

为了提升作业启动和扩容效率,一旦确定大状态处理是作业初始化的瓶颈,您可以参考如下方案进行针对性调整。

策略

策略说明

配置方法

注意事项

动态扩缩容

可以实现更快的让参数配置生效,减少作业启停对业务的中断时间,方便进行TM动态扩缩容。

详情请参见动态扩缩容与参数动态更新。

动态更新为实验性功能,在动态更新参数时,业务并不是完全不中断。相比传统的参数修改模式,动态更新能够显著缩短中断时间,但中断的具体时长受到作业拓扑和状态大小等因素的影响,通常在5秒至1分钟之间。

Local Recovery:本地备份快照加速恢复

在本地同时存储快照,可减少恢复过程中的数据下载需求。当本地磁盘空间充裕时,为首选方案。

在运行参数中配置

state.backend.local-recovery: true

,配置方法请参见如何配置作业运行参数?

  • 实验性功能,VVR 8.0.8及以上版本推荐开启。

  • 适用于作业Failover或者动态参数更新的场景,手动停止重启无法生效。

  • 会多占用部分本地磁盘资源。

GeminiStateBackend智能懒加载和延迟剪裁:异步状态恢复方案

作为平台核心技术GeminiStateBackend,即使面对大规模状态的作业,也能仅通过下载必要的元数据快速启动,实现对数据的即时处理。随后,系统将通过异步下载和智能裁剪技术,有效处理远程检查点文件,显著降低作业中断时间,提升效率超过90%,详情请参见企业级状态后端存储介绍。

在运行参数中配置

state.backend.gemini.file.cache.download.type: LazyDownloadOnRestore

,配置方法请参见如何配置作业运行参数?

说明

仅实时计算引擎VVR 6.0.6及以上版本支持该参数。

作业刚启动后的一小段时间内,会异步下载状态文件,作业性能逐步恢复,因此一开始性能会稍微低一些

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

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

相关文章

力扣困难题汇总(16道)

题4(困难): 思路: 找两数组中位数,这个看起来简单,顺手反应就是数第(mn)/2个,这个难在要求时间复杂度为log(mn),所以不能这样搞,我的思路是:每次切割长度为较…

pdf怎么合并在一起?pdf合并的简单方法

pdf怎么合并在一起?在现代办公和学习环境中,PDF(便携式文档格式)文件因其兼容性强、易于分享和保持格式稳定而广泛应用。然而,在日常工作中,我们经常会遇到需要处理多个PDF文件的情况,例如&…

【uniapp】实现触底加载数据

前言:实现界面触底数据加载。后端接口得支持翻页传参(本案例使用django) 1、后端接口 1.1 封装翻页公共方法standardPagination.py # -*- coding: utf-8 -*- # Time : 2024/10/15 13:15 # Author : super # File : standardPaginat…

[Hbase]一 HBase基础

1. HBase简介 1.1 HBase定义 HBase数据模型的关键在于 稀疏、分布式、多维、排序 的映射。其中映射 map指代非关系型数据库的 key-Value结构。 1.2 HBase数据模型 1)Name Space 命名空间,类似于关系型数据库的database 概念,每个命名空间下有多个表。HBase 两个自…

MFC工控项目实例二十五多媒体定时计时器

承接专栏《MFC工控项目实例二十四模拟量校正值输入》 用多媒体定时器实现0.1秒计时器 1、在SEAL_PRESSUREDlg.h文件中添加代码 #include<MMSystem.h> #pragma comment(lib,"winmm.lib")class CSEAL_PRESSUREDlg : public CDialog { public:CSEAL_PRESSUREDlg(…

Redis实现全局ID生成器

全局ID生成器 为什么要用全局ID生成器 1.当我们使用数据库自增来实现id的生成时,规律过于明显,会给用户暴露很多信息 2.当我们订单量过大时无法用数据库的一张表来存放订单,如果两张表的id都是自增的话,id就会出现重复 什么是全局ID生成器 全局ID生成器,是一种在分布式系统…

css刮刮卡效果(附源码!!!)

这个刮刮卡PC端和移动端都可以用使用 首发的公众号[小白讲前端]欢迎大家关注浏览 PC端展现 移动端展示 源码(PC和移动端直接复制运行) <!DOCTYPE html> <html><head><meta charset"utf-8"><meta name"viewport" content&quo…

宣恩文旅微短剧双作开机,融合创新助力城市经济发展

近日&#xff0c;宣恩文旅微短剧《弥彰》与《新年恋爱申请&#xff0c;请通过》正式开机。这两部作品由常斌、徐子琁、常喆宽、李果、况琪儿、梅凯杰、刘书赫等实力派演员领衔主演&#xff0c;不仅汇聚了众多演艺界的佼佼者&#xff0c;更承载着宣恩县文化旅游事业的创新与发展…

【从零开始的LeetCode-算法】3075. 幸福值最大化的选择方案

给你一个长度为 n 的数组 happiness &#xff0c;以及一个 正整数 k 。 n 个孩子站成一队&#xff0c;其中第 i 个孩子的 幸福值 是 happiness[i] 。你计划组织 k 轮筛选从这 n 个孩子中选出 k 个孩子。 在每一轮选择一个孩子时&#xff0c;所有 尚未 被选中的孩子的 幸福值 …

【ELK】初始阶段

一、logstash学习 安装的时候最好不要有中文的安装路径 使用相对路径 在 Windows PowerShell 中&#xff0c;如果 logstash 可执行文件位于当前目录下&#xff0c;你需要使用相对路径来运行它。尝试输入以下命令&#xff1a; .\logstash -e ‘input { stdin { } } output { s…

Ubuntu22.04 制作系统ISO镜像

第一步&#xff1a;安装软件-Systemback 1.如果已经添加过ppa&#xff0c;可以删除重新添加或者跳过此步 sudo add-apt-repository --remove ppa:nemh/systemback 2.添加ppa 我是ubuntu20&#xff0c;但这个软件最后支持的是 ubuntu16.04版本&#xff0c;所以加一个16版本…

通过Python爬虫获取商品销量数据,轻松掌握市场动态

为什么选择Python爬虫&#xff1f; 简洁易用&#xff1a;Python语言具有简洁的语法和丰富的库&#xff0c;使得编写爬虫变得简单高效。强大的库支持&#xff1a;Python拥有强大的爬虫框架&#xff08;如Scrapy、BeautifulSoup、Requests等&#xff09;&#xff0c;可以快速实现…

算法1—八大常用排序算法(上)

1.直接插入排序 原理&#xff1a;从arr[0]开始&#xff0c;每次和后一个数据比大小&#xff0c;然后根据需要的是升序还是降序进行操作。 最差的情况下时间复杂度&#xff1a;O&#xff08;n&#xff09; 最好的情况下时间复杂度&#xff1a;O&#xff08;1&#xff09; 所…

漏洞挖掘 | 通过域混淆绕过实现账户接管

由于这是一个私有项目&#xff0c;我将使用 example.com 来代替。 很长一段时间以来&#xff0c;我一直想在漏洞赏金项目中找到一个账户接管&#xff08;ATO&#xff09;漏洞。于是&#xff0c;我开始探索项目范围内的 account.example.com。 我做的第一件事就是注册一个新账…

WebRTC音频 03 - 实时通信框架

WebRTC音频01 - 设备管理 WebRTC音频 02 - Windows平台设备管理 WebRTC音频 03 - 实时通信框架(本文) WebRTC音频 04 - 关键类 WebRTC音频 05 - 音频采集编码 一、前言&#xff1a; 前面介绍了音频设备管理&#xff0c;并且以windows平台为例子&#xff0c;介绍了ADM相关的类…

探索 Web Audio API 的奇妙世界

Web Audio API 是一项强大而灵活的 JavaScript API&#xff0c;它允许开发者在网页中处理和生成音频。本文将带您深入了解 Web Audio API 的基本概念&#xff0c;并介绍一些令人兴奋的应用场景。 1. 什么是 Web Audio API&#xff1f; Web Audio API 是一组用于处理和生成音频…

react18中在列表项中如何使用useRef来获取每项的dom对象

在react中获取dom节点都知道用ref&#xff0c;但是在一个列表循环中&#xff0c;这样做是行不通的&#xff0c;需要做进一步的数据处理。 实现效果 需求&#xff1a;点击每张图片&#xff0c;当前图片出现在可视区域。 代码实现 .box{border: 1px solid #000;list-style: …

计算机专业大学四年的学习路线(非常详细),零基础入门到精通,看这一篇就够了

前言 许多学子选择踏上计算机这条充满挑战与机遇的道路。但在大学四年中&#xff0c;如何规划自己的学习路线&#xff0c;才能在毕业时脱颖而出&#xff0c;成为行业的佼佼者呢&#xff1f; 第一学年&#xff1a;基础知识的奠基 1.1 课程安排 在大学的第一年&#xff0c;重…

elementUI进度条el-progress不显示白色

效果图 通过设置百分比为100,动态修改进度条的宽度完成 <template><div class"myProgressBox"><div class"index">{{ index }}</div><div class"typeTitle">{{ typeTitle }}</div><div class"twoP…

【UE5】将2D切片图渲染为体积纹理,最终实现使用RT实时绘制体积纹理【第六篇-阶段总结篇】

因为马上就要进入下一个阶段&#xff0c;制作动态编辑体积纹理的模块。 但在这之前&#xff0c;要在这一章做最后一些整理。 首先&#xff0c;我们完成没完成的部分。其次&#xff0c;最后整理一下图表。最后&#xff0c;本文附上正在用的贴图 完善Shader 还记得我们之前注…