行业挑战
物流行业,特别是跨境进出口是非常复杂的业务,链路长、环节多、业务场景复杂。在物流履行时效不断加快的当下,物流服务一步步向次日达甚至当日达迈进,离线日报的日更频率早已无法满足业务需求。而实时监控、实时展示履行进度及节奏,及时发现各环节异常情况变得至关重要。把实时数据做好,将有助于业务同学及时作出判断,调配相关资源,从而实现精细化控制。
由于物流行业本身业务特点,在构建实时数仓时会遇到如下问题:
- 业务模式多,数据模型扩展难度高:物流业务模式有 GFC 模式、集货模式、保税模式、大贸模式等,每种业务模式差异大,导致数据模型扩展困难。
- 履行数据链路长:物流履行链路,特别是进口物流履行链路,涉及系统多、履行链路长、订单周期多变,给实时数据开发带来了较大困难。
- 统计指标依赖明细:类似于“晚点超时指标”(例如:出库超 12 小时未揽收的物流订单量),在基于明细表计算的方案下,每次查询都要涉及到全表扫描,对数据库会造成巨大压力,尤其是在大促期间需要重点关注超时尾单,频繁的查询极易拖垮数据库。
解决方案
基于实时计算 Flink 版构建物流行业实时数仓,通过梳理物流数据模型架构,结合 Flink 特点及应用技巧,可完美解决以上问题。
整体架构
物流行业实时数仓建设的整体架构依然离不开最基础的架构模型:
从数据通道中读取物流订单信息,并与外部系统交互,构建实时 ETL 部分。与其他行业相比,难点在于如何将不同业务模式抽象成统一的数据模型,并且与 Flink 特性相结合,在满足业务需求的情况下,减少重复计算,节省成本。
业务梳理
建立统一数据模型
只有在概念上对履行链路进行统一,才能实现数据模型上的真正统一。首先需要对物流领域不同模式的履行要素进行拆解并重组,用一条最复杂的可能的履行链路,涵盖当前所有业务模式,并尽可能适配未来可能产生的业务模式,最终形成贯穿一笔订单的全生命周期、适用于物流行业所有业务模式的逻辑履行链路。
数仓模型分层
数据模型分层架构:
- 第一层是数据采集,支持多种数据库中的数据采集,同时将采集到的数据放入消息中间件中;
- 第二层是事实明细层,基于消息通道的实时消息产生事实明细表,然后再写入消息通道中,通过发布订阅的方式汇总到第三、四层,分别是轻度汇总层和高度汇总层。
- 第三层轻度汇总层,适合数据维度、指标信息比较多的情况,如大促统计分析的场景,该层的数据一般写入 OLAP 系统,用户可以根据自己的需求筛选出目标指标进行聚合;
- 第四层高度汇总层,沉淀了一些公共粒度的指标,并将其写入 HBase 中,支持大屏的实时数据显示场景,如媒体大屏、物流大屏等。
物流场景中,很多功能需求非常类似,构建公共数据中间层,可大大减少资源的浪费,抽象出横向的公共数据中间层(左侧蓝色),然后各个业务线在此基础上分流自己的业务数据中间层(右侧黄色)。
Flink 特性
建立逻辑履行链路后,需要结合 Flink 计算引擎的特性及实时计算 Flink 版的商业功能来解决整个实时数仓构建过程中的难点。
· 难点一:履行重算
*
当物流订单的上游某个节点延迟时,履行系统会自动重算该笔订单下游所有节点的预计时间。小数据量情况下,可以通过 OLAP 数据库来解决这类场景,然而在大数据量场景中,OLAP 方案的成本、性能都是很大的问题。
解决方案:使用 Flink Retraction 机制,解决变 Key 统计类问题。
· 难点二:维表关联
供应链业务的实体角色非常多(仓、配、分拨、站点、小件员、货主、行业、地区等),实体繁多,这意味着我们在建设实时明细中间层时,会使用大量的维表关联,这对 Flink 在维表关联的性能上提出了更高的要求。
解决方案:实时计算 Flink 版在维表关联性能上做了 Async IO / 缓存 / Distribute by 等大量优化,大大提高维表关联效率,减轻维表系统查询压力,降低业务延时。
· 难点三:超时统计
物流场景中有这样一类特殊指标:“晚点超时指标”(例如:出库超 6 小时未揽收的订单量),这类指标对实操有着重要指导意义,可预警订单积压等异常现象。对于这类超时指标的统计一直是物流履行场景的一大难点。
解决方案:使用 Flink 的 ProcessFunction,操作 Flink State,控制超时消息下发的时机。
成功案例
菜鸟是一家互联网科技公司,专注于搭建四通八达的物流网络,打通物流骨干网和毛细血管,提供智慧供应链服务。通过技术创新和高效协同,菜鸟与合作伙伴一起提高物流效率,降低社会物流成本,提升消费者的物流体验,为制造业创造更大利润空间。
菜鸟的目标是与物流合作伙伴一道,加快实现“全国 24 小时,全球 72 小时必达”。为此,我们正在推进“一横两纵”战略,建设整个物流行业的数字化基础设施,搭建面向未来的、基于新零售的智慧物流供应链解决方案,打造一张全球化的物流网络。
经过三年的建设,菜鸟网络基于实时计算 Flink 版构建了实时数仓,目前效果:
- 准确:实时数据准确度提升到了 99.99% 以上;以极低的成本避免了时序、乱序等诸多过程性数据问题;
- 全面:当前实时数仓覆盖的业务范围,已经覆盖进口所有业务线、所有物流模式(包括大贸、中心仓及外单等)的实时数据;
- 高效:与离线数仓相同,采用逻辑链路的设计方案,新增物流模式也会非常高效;
- 降本: 经过不断迭代,最新版本基于 Flink 的实时数仓计算成本下降 60%,降低 80% 的服务压力;
- 快速: 0 点起跳由 1 分钟多压缩到了 15S 内,数据接入成本低,新场景接入仅需 1 天。
阿里云实时计算Flink - 解决方案:
https://developer.aliyun.com/article/765097
阿里云实时计算Flink - 场景案例:
https://ververica.cn/corporate-practice
阿里云实时计算Flink - 产品详情页:
https://www.aliyun.com/product/bigdata/product/sc