跳到主要内容

实时与离线采集

问题

实时采集和离线采集有什么区别?分别在什么场景使用?

答案

核心对比

维度实时采集离线采集
延迟秒级 ~ 分钟级小时级 ~ T+1
技术Kafka + FlinkSqoop / DataX / CDC
成本高(常驻资源)低(定时启动)
数据质量可能重复/乱序批量处理,质量可控
适用实时监控、实时推荐离线报表、数据仓库

架构对比

如何选择

场景选择原因
实时大屏/监控实时秒级刷新
风控/反欺诈实时毫秒决策
每日运营报表离线T+1 即可
数仓 DWD 建设离线优先,关键表实时成本与时效平衡
推荐系统离线 + 实时离线训练模型,实时更新特征
趋势:流批一体
  • Flink SQL 既能处理实时流,也能处理离线批
  • 同一套 SQL 复用,减少维护成本
  • 实时+离线用同一套逻辑产出数据,保证一致性

常见面试问题

Q1: 实时数据如何保证不丢不重?

答案

  • 不丢:Kafka 副本机制 + acks=all
  • 不重:Flink Exactly-Once + 下游幂等写入
  • 实践中:at-least-once + 下游去重(成本更低)

Q2: 实时和离线数据不一致怎么办?

答案

  • 设计对数机制:定期比对实时和离线结果
  • 离线数据为准(离线处理更完整、更准确)
  • 实时层作为快照,离线层作为最终事实

相关链接