ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

从业务需求到技术选型:《Flink 实战与性能优化》第 1.1 节深度解读——你的公司是否需要引入实时计算引擎

2026/10/3 8:41:10 拓冰建站 浏览量
从业务需求到技术选型:《Flink 实战与性能优化》第 1.1 节深度解读——你的公司是否需要引入实时计算引擎 示例工程大数据【免费下载链接】flink-learningflink learning blog. http://www.54tianzhisheng.cn/ 含 Flink 入门、概念、原理、实战、性能调优、源码解析等内容。涉及 Flink Connector、Metrics、Library、DataStream API、Table API SQL 等内容的学习案例还有 Flink 落地应用的大型项目案例PVUV、日志存储、百亿数据实时去重、监控告警分享。欢迎大家支持我的专栏《大数据实时计算引擎 Flink 实战与性能优化》项目地址https://gitcode.com/gh_mirrors/fl/flink-learning点击查看免费下载本文围绕《Flink 实战与性能优化》第一章 1.1 节展开从公司日常的实时计算需求出发完整梳理了实时数据「采集 → 计算 → 下发」的完整链路对比了离线计算与实时计算、批处理与流处理的本质差异并结合 flink-learning 开源仓库中flink-learning-monitor系列实战模块监控采集、日志告警、PV/UV 统计、宕机检测等的源码实现帮助读者判断自身业务是否真的需要引入实时计算引擎并为后续章节深入学习 Flink 奠定选型认知基础。读完本节你将能独立梳理出典型的实时计算业务场景、评估引入实时计算需要面对的四大技术挑战并知道如何在仓库中找到对应的落地案例代码。实时计算需求从业务一线的真实诉求说起在公司里作为数据开发工程师你大概率收到过产品经理、运营甚至领导提出的这样一类需求小田你看能不能做个监控大屏实时查看促销活动商品总销售额GMV 小朱搞促销活动的时候能不能实时统计下网站的 PV/UV 啊 小鹏我们现在搞促销活动能不能实时统计销量 Top5 商品啊 小李怎么回事啊现在搞促销活动结果服务器宕机了都没告警能不能加一个 小刘服务器这会好卡是不是出了什么问题啊你看能不能做个监控大屏实时查看机器的运行情况 小赵我们线上的应用频繁出现 Error 日志但是只有靠人肉上机器查看才知道情况能不能在出现错误的时候及时告警通知 小夏我们 1 元秒杀促销活动中有件商品被某个用户薅了 100 件怎么都没有风控啊 小宋你看我们搞促销活动能不能根据每个顾客的浏览记录实时推荐不同的商品啊这些需求表面上五花八门但最根本的业务本质只有一个——实时查看数据信息。而要满足这一本质诉求整个处理链路必须满足三个环节的实时性实时采集数据把业务系统产生的数据实时收集起来实时计算数据对采集到的数据进行实时的加工、聚合、过滤实时下发结果将计算结果实时推送或写入下游供告警、存储与可视化展示使用。只有采集、计算、下发三个环节全部保持实时用户看到的数据才是最接近实时的上述需求才算真正落地。值得一提的是这类需求并非停留在理论层面。在 flink-learning 仓库中flink-learning-monitor模块正是文档所述需求场景的工程化落地其 README 把整套监控体系划分为监控数据采集、告警、日志处理、监控数据存储、PV/UV 统计、监控数据可视化展示六个子模块与本节「采集—计算—下发」的链路一一对应。数据实时采集到底要采集什么针对上面的各类需求我们需要实时采集的数据可以归纳为六类用户搜索信息用户浏览商品信息用户下单订单信息网站的所有浏览记录机器 CPU/Mem/IO 信息应用日志信息前四类属于业务数据是促销活动分析、PV/UV 统计、销量 TopN 统计的数据来源后两类属于运行数据是服务器监控告警、应用 Error 日志告警的数据来源。在仓库中这两类数据都有对应的统一模型。业务运行指标被抽象为 MetricEvent其结构包含四要素name指标名、timestamp指标时间戳、fields指标字段值如 CPU 使用率、内存使用率、tags指标标签如集群名、主机 IP这样一个模型就能统一承载文档所说的机器 CPU/Mem/IO 信息而日志数据则被抽象为LogEvent并配套LogSchema用于 Kafka 反序列化详见 flink-learning-common 的 model 与 schemas 目录。另外FlinkJobMetricCollect 演示了如何通过 HTTP 调用 Flink JobManager 的/jobs/overview接口采集 Flink 作业自身的运行指标这可以视为「服务器运行状态监控」中针对 Flink 集群本身的采集示例。数据实时计算拿到数据之后算什么采集到的数据实时上报后需要实时的计算逻辑。文档列举了典型计算任务计算所有商品的总销售额统计单个商品的销量最后求 Top5关联用户信息和浏览信息、下单信息统计网站所有的请求 IP 并统计每个 IP 的请求数量计算一分钟内机器 CPU/Mem/IO 的平均值、75 分位数值过滤出 Error 级别的日志信息这些计算任务在 flink-learning 仓库中都有对应的可运行示例。比如「统计网站 PV/UV」的需求flink-learning-monitor-pvuv子模块提供了三种实现思路其中 HyperLogLogUvExample 展示了从 Kafka 读取用户访问事件UserVisitWebEvent按「日期_页面ID」生成 Redis Key并通过RedisCommand.PFADD将用户 ID 写入 Redis 的 HyperLogLog 结构从而以极低的内存开销完成 UV 去重统计的完整链路——这正是文档中「实时统计网站的 PV/UV」需求的标准答案。而「过滤出 Error 级别的日志信息」的需求在 LogEventAlert 中有最直接的体现从 Kafka 读取日志事件后一行filter(logEvent - error.equals(logEvent.getLevel()))即可实现 Error 日志的实时过滤供后续告警或落库使用。数据实时下发计算结果去向何方实时计算后的数据需要及时下发到下游文档将下游明确划分为两类告警方式邮件、短信、钉钉、微信在计算层将计算结果与阈值进行比较超过阈值即触发告警让运维提前收到通知并及时应对从而减少故障带来的损失。仓库的flink-learning-monitor-alert子模块实现了完整的告警体系OutageAlert 是「服务器宕机告警」的工程化实现从 Kafka 读取MetricEvent指标流通过OutageProcessFunction(1000 * 10, 60)检测机器是否在指定时间窗口内10 秒粒度、60 秒窗口失联从而判定宕机并构造AlertEvent告警渠道方面flink-learning-monitor-alert的 utils 目录 提供了DingDingGroupMsgUtil钉钉群消息、DingDingWorkspaceNoticeUtil钉钉工作通知、EmailNoticeUtil邮件、SMSNoticeUtil短信、PhoneNoticeUtil电话等多种通知渠道覆盖了文档所说的邮件、短信、钉钉、微信等告警方式中的绝大部分。存储消息队列、DB、文件系统等计算结果写入存储后监控大盘Dashboard从存储如 ElasticSearch、HBase中查询对应指标即可实时查看监控信息。这样运营可以知道哪些是爆款商品、哪些店铺成交额最高、哪些商品浏览量最多运维可以时刻了解机器运行状况出现宕机或不稳定可及时处理开发可以依据 Error 日志定位项目 Bug领导可以看到促销活动的成交情况。仓库中与之对应的是flink-learning-monitor-storage与flink-learning-monitor-dashboard两个子模块前者提供了将日志、指标数据写入 ElasticSearch 的 SQL 模板flink_log_2es.sql、flink_metrics_2es.sql后者负责可视化展示而日志数据的完整流式处理管道可以参考 LogMain从 Kafka 读取原始日志OriginalLogEventSchema→OriLog2LogEventFlatMapFunction结构化解析 → 告警分支LogAlert.alert→ 写入 ESLogSink2ES.sink2es一整套「采集—计算—下发」链路一目了然。整个流程从数据采集到数据计算再到数据下发任何一环出现问题都会影响最终效果因此对实时性的要求非常高。实时计算场景四类典型业务归类文档总结了实时计算的常见应用场景包括交通信号灯数据、道路车流量统计拥堵状况、公安视频监控、服务器运行状态监控、金融证券实时跟踪股市波动计算风险价值、数据实时 ETL、银行或支付公司的金融盗窃预警等。作者调研到的行业实际使用场景还包括业务数据处理聚合、统计、流量日志、ETL、安防公安视频结构化数据、Flink 图片搜索、风控主要处理结构化数据、业务告警、动态数据监控。归纳起来实时计算场景大致可以分为四类场景类别核心诉求典型业务实时数据存储微聚合、字段过滤、数据脱敏、组建数仓实时 ETL、实时数仓构建实时数据分析接入机器学习框架或算法建模分析商品推荐、广告推荐实时监控告警实时检测异常并通知金融交易风控、车流量预警、服务器监控告警、应用日志告警实时数据报表实时展示经营数据活动营销销售额/销售量大屏、TopN 商品其中「实时数据存储 / 实时 ETL / 实时数仓」在仓库中有专门的项目级实践flink-learning-project-real-time-data-warehouse 子模块正是围绕实时数据仓库场景搭建的案例。离线计算 vs 实时计算理解流处理与批处理流处理与批处理在对比离线与实时计算之前需要先厘清流处理和批处理这一对基础概念流处理处理的数据是源源不断且实时到来的是一种重要的大数据处理手段批处理历史比较悠久、使用场景较多主要操作大容量的静态数据集并在计算过程完成后返回结果。实时计算的流程是不断从 MQ 中读取采集的数据 → 处理计算过滤、聚合等简单操作→ 往 DB 里存储。在计算层你无法感知会有多少数据量过来只能尽快处理并及时下发。而离线计算则是从 DB不限 MySQL还有各种存储介质读取已固定的数据前一天、前一星期、前一个月再做复杂的计算或统计分析最后生成可供直观查看的报表Dashboard。离线计算的特点数据量大且时间周期长一天、一星期、一个月、半年、一年在大量数据上进行复杂的批量计算操作数据在计算之前已经固定不再会发生变化能够方便的查询批量计算的结果实时计算与流式数据的特点离线计算的数据是固定的任务通常是定时的如每晚 0 点计算前一天数据生成报表而实时计算的数据源是流式的。什么是流式数据可以这样理解你在淘宝下单或浏览某件商品后页面会立刻给你推荐同类商品广告和相似店铺这背后就是实时数据处理并作出推荐——系统需要不断从你在网页上的点击动作中获取数据实时分析后给出推荐。流式数据具有如下特点数据实时到达数据到达次序独立不受应用系统所控制数据规模大且无法预知容量原始数据一经处理除非特意保存否则不能被再次取出处理或者再次提取数据代价昂贵实时计算的优势「实时计算一时爽一直实时计算一直爽」。对于持续生成最新数据的场景采用流数据处理非常有利监控服务器运行指标时能根据采集上来的实时数据判断超出阈值立即发出警报通过处理流数据生成简单报告如五分钟窗口聚合数据平均值在流数据中进行多维度关联、聚合、筛选从复杂事件中找到根因应用机器学习算法做复杂的数据分析根据处理结果给出差异化推荐内容千人千面。实时计算面临的四大挑战实时计算虽好落地时却要直面四类技术挑战数据处理唯一性如何保证数据只处理一次至少一次还是最多一次这对应 Flink 的精确一次Exactly-once语义能力数据处理的及时性采集的实时数据量太大可能导致短时间处理不过来如何保证数据及时处理、不出现数据堆积这考验引擎的吞吐与背压Backpressure处理能力数据处理层和存储层的可扩展性如何根据采集的实时数据量大小动态扩缩容数据处理层和存储层的容错性如何保证处理层和存储层高可用出现故障时服务依旧可用这些挑战正是后续 1.2 节重磅介绍 Flink、1.3 节对比 Spark Streaming、Structured Streaming 与 Storm 的重要铺垫——也正是因为有这些需求才催生了不断涌现的实时计算框架。小结与反思本节从实时计算的需求作为切入点分析了完成这类需求所需的完整过程实时数据采集 → 实时数据计算 → 实时数据下发告警 / 存储随后总结了四类典型的实时计算场景实时数据存储、实时数据分析、实时监控告警、实时数据报表并系统对比了离线计算与实时计算的区别数据固定与否、任务定时与否、结果产出方式最后提出了实时计算落地的四大挑战。对照 flink-learning 仓库本节描述的每个需求几乎都能找到源码级的落地案例PV/UV 实时统计见 HyperLogLogUvExample日志告警见 LogEventAlert宕机监控见 OutageAlert完整日志处理管道见 LogMain。读者在动手选型之前不妨先对照本节内容问自己两个问题你们公司有文中讲到的类似需求吗目前的方案是离线批处理还是已经引入了实时计算想清楚这两个问题再进入下一节正式认识 Flink选型之路会清晰很多。赞分享示例工程大数据【免费下载链接】flink-learningflink learning blog. http://www.54tianzhisheng.cn/ 含 Flink 入门、概念、原理、实战、性能调优、源码解析等内容。涉及 Flink Connector、Metrics、Library、DataStream API、Table API SQL 等内容的学习案例还有 Flink 落地应用的大型项目案例PVUV、日志存储、百亿数据实时去重、监控告警分享。欢迎大家支持我的专栏《大数据实时计算引擎 Flink 实战与性能优化》项目地址https://gitcode.com/gh_mirrors/fl/flink-learning点击查看免费下载相关推荐2024年必知的广播技术趋势Awesome Broadcasting核心功能解析2024年必知的广播技术趋势Awesome Broadcasting核心功能解析 广播技术正在经历数字化转型的关键时期 Awesome BroadcastiGitHub_Trending/ai/aie-book技术深度何时需要深入阅读技术细节章节GitHub_Trending/ai/aie book技术深度何时需要深入阅读技术细节章节 在AI工程实践中开发者常面临一个关键问题面对一本涵盖从基础模型人工智能大模型文档Umi-OCR 离线OCR实战指南截图OCR、批量OCR、扫描版PDF转文字Umi OCR 离线OCR实战指南截图OCR、批量OCR、扫描版PDF转文字 Umi OCR 是一款免费、开源、完全离线的本地文字识别工具。OCR 引擎运行在OCR桌面应用上一篇Gatsby 多主题组合实战用 gatsby-theme-blog、gatsby-theme-notes 与组件 Shadowing 构建组合式站点下一篇Agentic Awesome Skills 中的 Angular 状态管理Signal、NgRx 与 RxJS 全模式实战指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考