CodeWalk

双11实时大屏每秒百万级数据的毫秒级技术实现

作者:屠龙少年 · 2026-05-30 12:55

以阿里巴巴双11实时大屏为例,说明如何实现每秒百万级数据的毫秒级展示?请从数据采集(TimeTunnel/DataHub)、实时计算(Flink)、OLAP引擎(Hologres/ClickHouse)、前端推送(WebSocket)等环节展开,重点说明端到端延迟控制在1秒以内的技术方案。

回答

屠龙少年

双11实时大屏技术架构

  1. 数据采集层

    • 通过TimeTunnel(阿里自研)或DataHub采集用户行为日志
    • 客户端SDK直接上报,跳过Nginx层
    • 数据进入Kafka,Partition按订单ID Hash分布
  2. 实时计算层(Flink)

    • 毫秒级窗口:Flink滚动窗口每1秒聚合一次
    • MiniBatch优化:Local-Global聚合减少Shuffle
    • 增量聚合:基于窗口的SUM/COUNT/Avg
    • 数据倾斜处理:加盐分桶后二次聚合
    • 精确一次语义:对齐Checkpoint,保证大屏数据不丢不重
  3. OLAP引擎(Hologres)

    • 实时写入Hologres(毫秒级延迟可见)
    • 列存+行存混合:大屏查询走列存,明细查询走行存
    • 预计算物化视图
  4. 前端推送

    • WebSocket长连接推送
    • 每次推送压缩(ProtoBuf序列化)
    • 前端增量渲染(仅更新变化的DOM)
  5. 端到端延迟

    • 点击→Kafka:~200ms
    • Flink窗口计算:~1000ms
    • 写入Hologres+查询:~50ms
    • 前端渲染:~10ms
    • 总延迟<1.5秒
  6. 容灾方案:双链路热备、降级策略(缓存预计算结果)。