随着双11的开启,物流业也迎来了年度大考。2021年双11期间,递四方作为物流仓储服务方,布局仓库和分拣点超40+个,50w+平米作业场地,单日订单峰值达千万级别,海量购物订单由递四方配送到家,消费者由尾款人秒变收货人。
为了应对双11单日峰值达到千万级别订单的状况,递四方运用大数据合理优化资源,提前做好全球仓储人力、物力、运力配置,保障仓储各流程高效、有序进行。从今年10月中下旬开始,上海转运中心和东莞转运中心相继启动。截至目前,递四方陆续在华东、华北、华南新建、扩建超级枢纽、揽收仓至40余个,继续加大在全国的布局;在国内拥有40个+分公司/分拨服务网点,全国50万+平方米办公/作业场地面积。
在业务方面,递四方借助自主研发分拣系统和云技术,快速进行条码识别,按指令分拣,实现称重分拣一体化全面覆盖,保证每一票货物都可自动识别、精准分拣出库。称重及分拣,已从传统人工模式升级为100%人工管控模式。此外,递四方信息科技的黑科技硬件——红光在此次“双11”首次亮相。在分拣效率不变的情况下,递四方信息科技用光幕等技术手段,对分拣机落格包裹进行核验,将库内错分率降低至万分之三,达到业界领先水平。尤其针对仓库环节,不断加大对库内的自动化、数字化、智能化建设,结合大数据、AI算法、云计算等手段进行系统的研发升级,引进高科技设备来提升产能、保障时效。
随着双11期间订单量剧增、应用的复杂度提升,我们的业务系统也经受着严峻的挑战,原来的实时数仓架构已经不能满足业务当前的需求。在寻找新的解决方案时,我们对比了业界常用的开源大数据实时查询数据库,在千亿级别数据多表连接查询时都遇到了瓶颈,无法满足业务实时性、服务稳定性的要求。
实时数仓在递四方的应用场景应用主要有以下几个方面:揽收、库内操作、仓间调拨、清关交邮预警监控,这里面包含着单票运转操作的每一个步骤。这些场景都需要做到实时监控,并且实时做出决策来提高物流的的整体时效。尤其是在双十一高峰期的情况下,如果人力或资源分配不足,很容易使某一环节堵塞,进而影响整体物流的时效。在技术的层面,我们有很多个业务系统,这些系统之间既有一致性也有独立性,一个复杂指标涉及到多个系统多张表,因此我们实时数仓对表连接查询能力非常强,而且对数据的更新插入速度也有着很高的要求。
今年双11,递四方对支撑业务的实时数仓系统进行了升级,通过新一代基于flink+hologres的实时数仓系统,在物流订单量相较于去年增加多倍的情况下,仍然能够实时监控每一票订单的物流情况、每一个仓库的作业情况,并且实时数仓整体成本下降50%,真正做到了“多、快、好、省”。
那么,递四方实时数仓的升级演进之路又是怎样的呢?我们一起来听听递四方资深数据架构师的介绍吧~
在刚开始做第一版实时数仓的时候,时间窗口比较紧,我们要把有限的精力放到数据建模以及业务开发中,所以在对比了数据库的吞吐性以及处理能力后,我们选择了ADB。ADB行列混存,全字段索引,在数量大很大的情况下,查询速度、插入速度都很快,而且支持DTS、OTTER等数据同步接入,同步性能很好。
数据源是阿里云的PolarDB、MySQL、RDS等数据库,采用阿里云的DataWork数据同步,把增量数据实时同步到ADB中,然后在ADB中做数据实时的计算,数据的任务调度在DataWork中完成。
我们所有部门都在使用该架构的时候,遇到了一些瓶颈,该架构不满足我们的实时数仓,后来我们的实时数仓选择了另外一个方案。
经历了第一个版本的实时数仓后,我们总结了实时数仓的两个重要特性,一是实时,二是服务的稳定性。
第一个版本的实时数仓不能很好地满足稳定性,我们决定对新的实时数仓进行一个深入的研究和探索,在阿里云上看到了很多关于Hologres的应用,其性能表现极其出色,带来了不错的效果。在对比了业界不同的实时数仓架构后,我们最终选择了Flink+Hologres组合作为实时数仓。
这里一共有2条路径:
· 第一条路径,是通过DTS把Binlog数据同步到DataHub,然后使用Flink从DataHub中消费数据,把计算结果存储在Hologres中,这条路径主要是用于计算一些访问频率高且数据量大的数据,比如待揽收单量、入库单量、待完成单量等。
· 第二条路径,是业务系统的Binlog数据通过DataWorks同步到Hologres中。Hologres中分了3层,ODS层用于存放原始数据,直接加载原始日志、数据,数据保持原貌不做处理。一般情况下,以增量的方式从业务系统导入到ODS层,数据模型和粒度都与业务系统保持一致。DWD层数据明细层,对ODS层数据进行清洗。DWS为汇总层,主要存放宽表。这里主要是考虑到粒度的不一样,在Hologres中多表连接查询能够发挥其最大的作用。整个架构的任务调度依赖于DataWorks。
本次采用的批流一体即席计算查询混合模式,既发挥了Flink流计算的能力,也充分利用了Hologres强大的连表查询能力。互联网普遍运用的开源的实时查询数据库,但我们的业务复杂度是互联网的若干倍,这些实时数据库并不能完全满足我们的需求,架构互有优劣,但我们的架构是未来五六年内业务高速增长的最佳选择
那么为什么会选择Hologres呢?通过调研发现它有几个特点,比较适合实际情况。
· 第一是Hologres的实时能力,满足目前递四方的实时数仓需求,支持百亿级表与亿级表之间的JOIN,秒级查询响应,还支持实时写入、批量数据导入,拥有超高导入性能,且并发能力极强。
· 第二是Hologres 采用存储计算分离架构,数据存储在阿里云分布式文件系统pangu中(类比开源HDFS),方便按需单独扩展计算或者存储。对快速行业来说,大促和日常所需要资源不一样,能够快速扩缩容,满足业务的动态需求。同时Hologres支持异构数据源交互分析以及离线数据和实时数据的联邦查询,Hologres已经和MaxCompute无缝打通,能够直接在Hologres中加速查询MaxCompute离线表。
· 第三是维护成本低、运行稳定,Hologres作为实时数仓存储成本大约是ADB的1/3。资源灵活性高,可以像MaxCompute一样灵活的升降配置,与阿里云大数据组件兼容性高,能降低运维成本和提高研发效能,不会对技术架构带来很大负担。
在面向分析OLAP系统里面,Hologres承担了实时和离线数据的查询,由于Hologres既支持高并发写入,又能够满足及时查询,同时还能够支持OLAP分析,在我们的不同粒度的表进行连接的时候,能够充分发挥其优势。下面列举2个不同的场景对其做一个详细的说明。
· 场景一:库内操作场景
实时的数据从Binlog解析到ODS层,同时微批任务将分钟级别(范围可调)的统计数据计算到DWS宽表,同时跟离线的数据进行插入更新,就可以得到实时的全量数据表,调度采取DataWorks的调度,每5分钟调度1次。
·场景二:仓间调拨场景
对于一些数据量小的表,依赖于Hologres强大的Join能力,通过视图来构建DWS中间层,如下图所示:
DWD是对ODS层过滤的视图,DWS层是DWD层聚合层的宽表,每次查询DWS层的时候,就相当于所有表重新查询了一次。这种查询语句是非常复杂的,对于关系型数据库来说,可能有性能瓶颈会非常缓慢。但是对于Hologres来说,毫秒级别查询完成毫无压力,做到了实时响应,并且节省了调度资源,同时也提升了查询的灵活性。
在使用Hologres期间也发现的一些不满足实际需求的地方:一是非空列不能建立索引,多个亿级别表连接在没有索引的情况下,查询速度下降。二是Hologres兼容Postgre生态,但支持的函数不多,在开发上与MaxCompute相比有一定的难度。
物流“智能化”
整个双11期间,递四方通过升级实时数仓技术,基于Flink+Hologres搭建的实时数仓支撑了实时大屏的高频刷新访问,实时监控物流动态,促进了业务高效运行,让消费者的快递更快到家。
整个架构升级给业务带来的价值有以下几个方面:
· 稳定:基于Hologres持续高稳定的输出,整体双11期间不论是实时数据写入、还是数据的读取都表现出了极强的稳定性。整个双11期间,真正做到了0故障率。
· 实时:实时的揽收、库内操作、中转调拨等实时大屏,对我们的运营提供了非常强有力的实时数据支撑,整体时效比去年提高了不少,给用户带来良好的物流体验,提高了公司的服务水平。
· 云原生:除了上面两个核心价值之外,由于双11期间是流量高峰期,比日常流量高出上千倍,通过Hologres可以实现动态扩缩容,满足我们对资源的不同需求,从而也降低了运维成本
这是递四方参与的第7个双11狂欢节,递四方在这次的物流大考中交出了满意的答卷。随着业务迅猛增长,递四方也在不断演进背后的实时数仓技术来支撑更丰富的仓储物流场景,让物流从“手工化”逐渐转变为“智能化”。