对 Lambda 架构问题的深入理解

感谢 GPT,对很多问题的理解有机会更深。

大家攻击 Lambda 架构,常说的一个点就是 "实时离线指标存在差异"。"实时离线指标存在差异",是一个真实困扰运营方的问题吗?

答案:是的,这是一个真实生活中的痛点。

原因如下,特别是第一条,会让业务运营存在不确定性,为了应对这种不确定性,可能需要预留出业务余量,造成浪费。

  1. 实时数据偏差引发错误判断

    • 运营团队可能在实时看板上看到用户注册数为 900,以为目标还没达成,于是推送通知、加大预算。

    • 结果第二天离线数据跑完,真实注册是 1100,实际早就达成了。

    • 这会造成 资源浪费、判断误差。

  2. 数据不一致影响信任

    • 运营问:"实时看板显示新增 900,日报却说新增 1100,这是哪个错了?"

    • 数据团队解释:"实时数据有水位延迟、数据乱序、去重不完整......"

    • 非技术同学听不懂,久而久之就对系统失去信任。

  3. 多方依赖相同指标,版本不一致

    • 实时系统和离线系统往往使用不同代码、不同计算链路:

    • 实时:Kafka → Flink → Redis/ClickHouse

    • 离线:Hive/Spark → HDFS → 数据仓库

    • 一点小的业务逻辑差异、时间处理方式不同、清洗策略不同,就会让指标产生偏差。

附1:实时指标为什么可能不对?

答:因为 Flink 的计算有时间窗口的概念,比如:每个整点,计算上一个小时的销售额。因为队列延迟、网络出错、重试导致数据重复等原因,会让 Kafka 等队列中的数据不能完全被信任,上一个小时的数据不一定真的全了,可能有一些数据要等几分钟才到,也有可能永远不到。

为了解决这个问题,一般会延迟几分钟,等等跑慢了的数据。但也不能无限等下去。理论上总是可能有数据来晚了。

附2:批处理系统(离线) + 流处理系统(实时) + Serving 层合并结果为什么不准?

简而言之:因为实时数据不准确,那么 Serving 的到的数据肯定也不准确。

Lambda 架构:批处理系统(离线) + 流处理系统(实时) + Serving 层合并结果

我之前的疑问:Serving 层如何合并?如何保证离线+实时,得到准确的全量数据?

一般大家说得不到,原因就在于

(1)流处理系统拿到的数据可能是不准确的

(2)离线、实时数据的边界可能有模糊的地方。

相关推荐
A 计算机毕业设计-小途4 小时前
大四零基础用Vue+ElementUI一周做完化妆品推荐系统?
java·大数据·hadoop·python·spark·毕业设计·毕设
不羁。。7 小时前
【撸靶笔记】第八关:GET - Blind - Boolian Based - Single Quotes
数据库·sql·mybatis
AwhiteV8 小时前
利用图数据库高效解决 Text2sql 任务中表结构复杂时占用过多大模型上下文的问题
数据库·人工智能·自然语言处理·oracle·大模型·text2sql
m0_595199858 小时前
Redis(以Django为例,含具体操作步骤)
数据库·redis·缓存
爱尚你19938 小时前
MySQL 三大日志:redo log、undo log、binlog 详解
数据库·mysql
君不见,青丝成雪8 小时前
Flink双流join
大数据·数据仓库·flink
小猿姐9 小时前
KubeBlocks AI:AI时代的云原生数据库运维探索
数据库·人工智能·云原生·kubeblocks
好好先森&10 小时前
Linux系统:C语言进程间通信信号(Signal)
大数据
EkihzniY10 小时前
结构化 OCR 技术:破解各类检测报告信息提取难题
大数据·ocr
吱吱企业安全通讯软件10 小时前
吱吱企业通讯软件保证内部通讯安全,搭建数字安全体系
大数据·网络·人工智能·安全·信息与通信·吱吱办公通讯