双十二实时订单大屏上线方案

订单实时大屏,是数据团队实时计算能力的呈现,也是实时计算全链路打通并准备上线的第一个项目,同时也涉及到数据产品、数据同步中间件、塔内 Flink 平台、DataV 等多方协作与努力,为了让整个链路稳定运行,规避风险,容错保障,让实时大屏在经受住双十二期间流量的考验及对产品的检验,提出此方案。

以下是大屏实时任务部分关键节点:

下图为数据流传递,各组件、任务整体流程,涉及关键节点为标黄部分

一、同步中间件

Java 同步中间件,拉取 SQL Server 业务库数据,根据 ts 变化,通过定时拉取,间隔 1-2 分钟,无法做到数据精准拉一次,存在数据重复。

物化数据链路:

风险点:

  • 数据延迟增加:目前 Top10 ,12min~178min(可调整),99%延迟 1 分钟内。数据双十二数据激增,业务库压力较大的情况下,调大拉取间隔,或超过 2 分钟。
  • 数据重复率:目前的情况看,重复率约占百分之三十,任务异常中断或停止,分析具体原因,手动回拉跨度不确定

保障方案:

  • 10 分钟自动恢复
  • 人工干预预案……(需要补充,信息对齐)

读取 kafka 中订单源表数据,根据 co_id,o_id,ts 三个字段去重,业务状态外置到 Aerospike,无状态任务,容错率高。

数据物化链路:

任务最低资源配置(临界点,低于这个值,日常流量会产生挤压)
JM 资源配置TM 资源配置吞吐量峰值日常均值单 CPU 处理能力(仅供参考)
1C1G24P*2C4G24P*12W/s1W/s1W
正常推荐配置:
JM 资源配置TM 资源配置吞吐量峰值日常均值单 CPU 处理能力(仅供参考)
1C1G24P*2C8G24P*12W/s1W/s1W
双十二推荐配置:
JM 资源配置TM 资源配置吞吐量峰值日常均值单 CPU 处理能力(仅供参考)
1C1G24P*4C16G24P*12W/s0.7W/s1W

2. SQL 维表关联中间层(无状态任务)

读取去重表数据,关联维度表信息,丰富订单信息,无状态任务,容错率高。

物化数据链路:

  • 任务风险点:
    • 维表信息变化不及时/维表信息关联更新
任务最低资源配置(待完善…)
JM 资源配置TM 资源配置吞吐量峰值日常均值单 CPU 处理能力(仅供参考)
-----
正常推荐配置(待完善…)
JM 资源配置TM 资源配置吞吐量峰值日常均值单 CPU 处理能力(仅供参考)
-----
双十二推荐配置(待完善…)
JM 资源配置TM 资源配置吞吐量峰值日常均值单 CPU 处理能力(仅供参考)
-----

3. SQL 结果层-平台、省份、物流维度  统计结果层(大状态任务)

读取明细中间层数据,根据大屏统计指标计算结果,结果写入 hologres,需要保留当天订单数的状态。

物化数据链路:

任务最低资源配置(待完善…)
JM 资源配置TM 资源配置吞吐量峰值日常均值单 CPU 处理能力(仅供参考)
-----
正常推荐配置(待完善…)
JM 资源配置TM 资源配置吞吐量峰值日常均值单 CPU 处理能力(仅供参考)
-----
双十二推荐配置(待完善…)
JM 资源配置TM 资源配置吞吐量峰值日常均值单 CPU 处理能力(仅供参考)
-----

4. SQL 结果层-每秒折线图及核心指标(大状态任务)

读取明细中间层数据,根据大屏统计指标计算结果,结果写入 hologres,需要保留当天订单数的状态。

物化数据链路:

任务最低资源配置(待完善…)
JM 资源配置TM 资源配置吞吐量峰值日常均值单 CPU 处理能力(仅供参考)
-----
正常推荐配置(待完善…)
JM 资源配置TM 资源配置吞吐量峰值日常均值单 CPU 处理能力(仅供参考)
-----
双十二推荐配置(待完善…)
JM 资源配置TM 资源配置吞吐量峰值日常均值单 CPU 处理能力(仅供参考)
-----
5. SQL 结果层-创建订单数(大状态任务)

读取明细中间层数据,根据大屏统计指标计算结果,结果写入 hologres,需要保留当天订单数的状态。 物化数据链路:

任务最低资源配置(待完善…)
JM 资源配置TM 资源配置吞吐量峰值日常均值单 CPU 处理能力(仅供参考)
-----
正常推荐配置(待完善…)
JM 资源配置TM 资源配置吞吐量峰值日常均值单 CPU 处理能力(仅供参考)
-----
双十二推荐配置(待完善…)
JM 资源配置TM 资源配置吞吐量峰值日常均值单 CPU 处理能力(仅供参考)
-----
6. DataStream 结果层(大状态任务)

读取明细中间层数据,根据大屏统计指标计算结果,结果写入 hologres,需要保留当天订单数的状态。 物化数据链路:

任务最低资源配置(待完善…)
JM 资源配置TM 资源配置吞吐量峰值日常均值单 CPU 处理能力(仅供参考)
-----
正常推荐配置(待完善…)
JM 资源配置TM 资源配置吞吐量峰值日常均值单 CPU 处理能力(仅供参考)
-----
双十二推荐配置(待完善…)
JM 资源配置TM 资源配置吞吐量峰值日常均值单 CPU 处理能力(仅供参考)
-----

无状态任务

  • 风险点:

    • 流量激增:评估资源,预留 buffer,背压自适应
    • 脏数据容错率导致任务中断
    • 平台稳定性:未知风险
  • 保障方案:

    • 钉钉告警
    • 观察图表性能指标
  • 容灾恢复

    • 从 savepoint 恢复,自动重启平台任务启动时间 2 分钟/人工干预重启恢复 5 分钟内
    • 丢失 checkpoint,人工干预,指定 timestamp offset 重复消费,人工重启 2~10 分钟

有状态任务

  • 风险点:

    • 流量激增:评估资源,预留 buffer,背压自适应
    • 脏数据容错率导致任务中断
    • 平台稳定性:未知风险
  • 保障方案:

    • 钉钉告警
    • 观察图表性能指标
  • 容灾恢复

    • 自动重启成功,单次重启耗时 5 分钟起步,具体还要看状态累计的时间
    • 自动重启失败,人工干预,会丢失 checkpoint,指定 timestamp offset 重复消费,无法从状态恢复,必须从当天 0 点开始追数据,增加资源追数据

三、 DataV 容错

目标:双十二,结果层会有双跑容错,会向 holo 写两套数据,表结构相同,不需要改造 SQL,表名不一样,DataV 需要对接两套数据,大屏走数异常,在紧急情况下可以进行无感切换

  • 保障方案:

    • 双十二值班观察大屏动态
  • 容灾恢复

    • 切换版本,重新发布?……(需要补充)

四、容错链路

五、值班计划

待完善…

六、总结

截至目前 12 月 4 日(周六),个人判断最大的风险点

  • 来自于对阿里云 Flink 可控能力较弱,问题锁定难
    • 比如监控数据突然没有,并没有给出原因
    • 比如异常退出原因,并没有合理解释或者建议,问题排查困难
  • 任务稳定性:
    • 几个大状态统计任务稳定性,有出现 TM 异常退出、checkpoint 失败风险
    • 对于异常退出,阿里 Flink 平台重启策略可能会导致任务需要追天级别的数据(最坏的情况)