1 Flink实践之延迟统计
流计算是基于消息触发计算的,若没有消息到达到则无法计算,这类指标恰好是要求在指定的超时时间计算出有多少未达到的消息。
1.1 常见场景
1.1.1 菜鸟-物流单配送超时统计
实时数仓的建设难度: 链路复杂、实操节点多、汇总维度多、考核逻辑复杂的特点
仓配实时数据已覆盖了绝大多数场景,但是有这样一类特殊指标:“晚点超时指标”(例如:出库超 6 小时未揽收的订单量),仍存在实时汇总计算困难。
这类指标对于指导实操有着重要意义,可以告知运营小二当前多少订单积压在哪些作业节点,应该督促哪些实操人员加快作业,这对于物流的时效 KPI 达成至关重要。
1.1.2 财付通-资金流账龄超时监控
1.2 解决方案
1.3 方案一: MQ延迟发送
菜鸟的解决方案图
graph LR T1[订单表] T2[清洗表] T3[订单延迟表] T4[结果表] J1(任务一: 数据清洗) J2(任务二: 延迟6小时) J3(任务三: 汇总计算) T1 --> J1 J1 --> T2 T2 --> J2 J2 --> T3 T3 --> J3 T2 --> J3 J3 --> T4
简化版:
graph LR T1[订单表] T3[Datagen 定时数据表
每秒生成一条数据:
以当前时间作为事件时间] T4[结果表
需支持数据回撤] J1(清洗/过滤) T1 --> J1 subgraph 计算任务 J2(指定事件时间) J3(T1 left join T3
) J1 --> J2 T3 --> J3 J2 --> J3 end J3 --> T4
1.4 方案二: FlinkState+TimeService
1.5 方案三:Flink CEP
1.6 方案四: OLAP
1.7 [参考文献]:
利用Flink实现实时超时统计场景
