热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

最佳实践_双11实时物流订单最佳实践

篇首语:本文由编程笔记#小编为大家整理,主要介绍了双11实时物流订单最佳实践相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了双11实时物流订单最佳实践相关的知识,希望对你有一定的参考价值。



简介:随着双11的开启,物流业也迎来了年度大考。2021年双11期间,递四方作为物流仓储服务方,布局仓库和分拣点超40+个,50w+平米作业场地,单日订单峰值达千万级别,海量购物订单由递四方配送到家,消费者由尾款人秒变收货人。



作者 | 梅酱
来源 | 阿里技术公众号

随着双11的开启,物流业也迎来了年度大考。2021年双11期间,递四方作为物流仓储服务方,布局仓库和分拣点超40+个,50w+平米作业场地,单日订单峰值达千万级别,海量购物订单由递四方配送到家,消费者由尾款人秒变收货人。


一 业务介绍

递四方成立于2004年,创业在深圳,是国内最早的国际物流和全球仓储服务物流供应链服务商,主要为从事跨境电商的客户、平台以及普通用户提供仓储物流服务,以GPN(直发订单)和GFN(海外仓储)两张网络为客户提供更好的全球跨境电商优质生态环境,致力于帮助中国企业走向全球,目前在全球超过100+家分支机构,服务全球约100万家跨境电商商户与超过2亿跨境电商终端用户。


二 业务挑战

为了应对双11单日峰值达到千万级别订单的状况,递四方运用大数据合理优化资源,提前做好全球仓储人力、物力、运力配置,保障仓储各流程高效、有序进行。从今年10月中下旬开始,上海转运中心和东莞转运中心相继启动。截至目前,递四方陆续在华东、华北、华南新建、扩建超级枢纽、揽收仓至40余个,继续加大在全国的布局;在国内拥有40个+分公司/分拨服务网点,全国50万+平方米办公/作业场地面积。

在业务方面,递四方借助自主研发分拣系统和云技术,快速进行条码识别,按指令分拣,实现称重分拣一体化全面覆盖,保证每一票货物都可自动识别、精准分拣出库。称重及分拣,已从传统人工模式升级为100%人工管控模式。此外,递四方信息科技的黑科技硬件——红光在此次“双11”首次亮相。在分拣效率不变的情况下,递四方信息科技用光幕等技术手段,对分拣机落格包裹进行核验,将库内错分率降低至万分之三,达到业界领先水平。尤其针对仓库环节,不断加大对库内的自动化、数字化、智能化建设,结合大数据、AI算法、云计算等手段进行系统的研发升级,引进高科技设备来提升产能、保障时效。

随着双11期间订单量剧增、应用的复杂度提升,我们的业务系统也经受着严峻的挑战,原来的实时数仓架构已经不能满足业务当前的需求。在寻找新的解决方案时,我们对比了业界常用的大数据实时查询数据库,比如HBase、ClickHouse、Druid,但在千亿级别数据多表连接查询时都遇到了瓶颈,无法满足业务实时性、服务稳定性的要求。

实时数仓在递四方的应用场景应用主要有以下几个方面:揽收、库内操作、仓间调拨、清关交邮预警监控,这里面包含着单票运转操作的每一个步骤。这些场景都需要做到实时监控,并且实时做出决策来提高物流的的整体时效。尤其是在双十一高峰期的情况下,如果人力或资源分配不足,很容易使某一环节堵塞,进而影响整体物流的时效。在技术的层面,我们有很多个业务系统,这些系统之间既有一致性也有独立性,一个复杂指标涉及到多个系统多张表,因此我们实时数仓对表连接查询能力非常强,而且对数据的更新插入速度也有着很高的要求。

今年双11,我们对支撑业务的实时数仓系统进行了升级,通过新一代基于flink+hologres的实时数仓系统,在物流订单量相较于去年增加多倍的情况下,仍然能够实时监控每一票订单的物流情况、每一个仓库的作业情况,并且实时数仓整体成本下降50%,真正做到了“多、快、好、省”。

下面我们将会具体介绍递四方实时数仓的升级演进之路。


三 递四方实时数仓之路

1 实时数仓1.0

在刚开始做第一版实时数仓的时候,时间窗口比较紧,我们要把有限的精力放到数据建模以及业务开发中,所以在对比了数据库的吞吐性以及处理能力后,我们选择了ADB。ADB在数量大很大的情况下,查询速度、插入速度都很快,而且支持DTS、OTTER等数据同步接入,同步性能很好。



数据源是阿里云的PolarDB、MySQL、RDS等数据库,采用阿里云的DataWork数据同步,把增量数据实时同步到ADB中,然后在ADB中做数据实时的计算,数据的任务调度在DataWork中完成。

但是当时遇到了一个非常大的问题,就是ADB的并发有限,计算任务耗费了大量的资源。在各种大屏、实时报表拉取数据的时候,高并发的情况下,ADB的延迟很高,给我们实时服务稳定性带来了非常大的挑战。

2 实时数仓2.0

经历了第一个版本的实时数仓后,我们总结了实时数仓的两个重要特性,一是实时,二是服务的稳定性。

第一个版本的实时数仓不能很好地满足稳定性,我们决定对新的实时数仓进行一个深入的研究和探索,在阿里云上看到了很多关于Hologres的应用,其性能表现极其出色,带来了不错的效果。在对比了业界不同的实时数仓架构后,我们最终选择了Flink+Hologres组合作为实时数仓。



这里一共有2条路径:


  • 第一条路径是:通过DTS把Binlog数据同步到DataHub,然后使用Flink从DataHub中消费数据,把计算结果存储在Hologres中,这条路径主要是用于计算一些访问频率高且数据量大的数据,比如待揽收单量、入库单量、待完成单量等。

  • 第二条路径是:业务系统的Binlog数据通过DataWorks同步到Hologres中。Hologres中分了3层,ODS层用于存放原始数据,直接加载原始日志、数据,数据保持原貌不做处理。一般情况下,以增量的方式从业务系统导入到ODS层,数据模型和粒度都与业务系统保持一致。DWD层数据明细层,对ODS层数据进行清洗。DWS为汇总层,主要存放宽表。这里主要是考虑到粒度的不一样,在Hologres中多表连接查询能够发挥其最大的作用。整个架构的任务调度依赖于DataWorks。

本次采用的批流一体即席计算查询混合模式,既发挥了Flink流计算的能力,也充分利用了Hologres强大的连表查询能力。互联网普遍运用的HBase、ClickHouse、Druid等作为实时查询数据库,我们的业务复杂度是互联网的若干倍,这些实时数据库并不能完全满足我们的需求,架构互有优劣,但我们的架构是未来五六年内业务高速增长的最佳选择。


四 递四方与实时数仓Hologres

1 为什么选择Hologres

那么为什么会选择Hologres呢?通过调研发现它有几个特点,比较适合实际情况。



  • 第一是Hologres的实时能力,满足目前递四方的实时数仓需求,支持百亿级表与亿级表之间的JOIN,秒级查询响应,还支持实时写入、批量数据导入,拥有超高导入性能,且并发能力极强。

  • 第二是Hologres 采用存储计算分离架构,数据存储在阿里云分布式文件系统pangu中(类比开源HDFS),方便按需单独扩展计算或者存储。对快速行业来说,大促和日常所需要资源不一样,能够快速扩缩容,满足业务的动态需求。同时Hologres支持异构数据源交互分析以及离线数据和实时数据的联邦查询,Hologres已经和MaxCompute无缝打通,能够直接在Hologres中加速查询MaxCompute离线表。

  • 第三是维护成本低、运行稳定,Hologres作为实时数仓存储成本大约是ADB的1/3。资源灵活性高,可以像MaxCompute一样灵活的升降配置,与阿里云大数据组件兼容性高,能降低运维成本和提高研发效能,不会对技术架构带来很大负担。

2 Hologres应用场景

在面向分析OLAP系统里面,Hologres承担了实时和离线数据的查询,由于Hologres既支持高并发写入,又能够满足及时查询,同时还能够支持OLAP分析,在我们的不同粒度的表进行连接的时候,能够充分发挥其优势。下面列举2个不同的场景对其做一个详细的说明。

场景一:库内操作场景



实时的数据从Binlog解析到ODS层,同时微批任务将分钟级别(范围可调)的统计数据计算到DWS宽表,同时跟离线的数据进行插入更新,就可以得到实时的全量数据表,调度采取DataWorks的调度,每5分钟调度1次。

场景2:仓间调拨场景

对于一些数据量小的表,依赖于Hologres强大的Join能力,通过视图来构建DWS中间层,如下图所示:



DWD是对ODS层过滤的视图,DWS层是DWD层聚合层的宽表,每次查询DWS层的时候,就相当于所有表重新查询了一次。这种查询语句是非常复杂的,对于关系型数据库来说,可能有性能瓶颈会非常缓慢。但是对于Hologres来说,毫秒级别查询完成毫无压力,做到了实时响应,并且节省了调度资源,同时也提升了查询的灵活性。

3 Hologres目前的不足

在使用Hologres期间也发现的一些不满足实际需求的地方:一是非空列不能建立索引,多个亿级别表连接在没有索引的情况下,查询速度下降。二是Hologres兼容Postgre生态,但支持的函数不多,在开发上与MaxCompute相比有一定的难度。


五 业务价值

整个双11期间,递四方通过升级实时数仓技术,基于Flink+Hologres搭建的实时数仓支撑了实时大屏的高频刷新访问,实时监控物流动态,促进了业务高效运行,让消费者的快递更快到家。整个架构升级给业务带来的价值有以下几个方面:

稳定:基于Hologres持续高稳定的输出,整体双11期间不论是实时数据写入、还是数据的读取都表现出了极强的稳定性。整个双11期间,真正做到了0故障率。

实时:实时的揽收、库内操作、中转调拨等实时大屏,对我们的运营提供了非常强有力的实时数据支撑,整体时效比去年提高了不少,给用户带来良好的物流体验,提高了公司的服务水平。

云原生:除了上面两个核心价值之外,由于双11期间是流量高峰期,比日常流量高出上千倍,通过Hologres可以实现动态扩缩容,满足我们对资源的不同需求,从而也降低了运维成本。

这是递四方参与的第7个双11狂欢节,递四方在这次的物流大考中交出了满意的答卷。随着业务迅猛增长,递四方也在不断演进背后的实时数仓技术来支撑更丰富的仓储物流场景,让物流从“手工化”逐渐转变为“智能化”。

原文链接
本文为阿里云原创内容,未经允许不得转载。 





推荐阅读
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 关于CMS收集器的知识介绍和优缺点分析
    本文介绍了CMS收集器的概念、运行过程和优缺点,并解释了垃圾回收器的作用和实践。CMS收集器是一种基于标记-清除算法的垃圾回收器,适用于互联网站和B/S系统等对响应速度和停顿时间有较高要求的应用。同时,还提供了其他垃圾回收器的参考资料。 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • MySQL中的MVVC多版本并发控制机制的应用及实现
    本文介绍了MySQL中MVCC的应用及实现机制。MVCC是一种提高并发性能的技术,通过对事务内读取的内存进行处理,避免写操作堵塞读操作的并发问题。与其他数据库系统的MVCC实现机制不尽相同,MySQL的MVCC是在undolog中实现的。通过undolog可以找回数据的历史版本,提供给用户读取或在回滚时覆盖数据页上的数据。MySQL的大多数事务型存储引擎都实现了MVCC,但各自的实现机制有所不同。 ... [详细]
  • 上图是InnoDB存储引擎的结构。1、缓冲池InnoDB存储引擎是基于磁盘存储的,并将其中的记录按照页的方式进行管理。因此可以看作是基于磁盘的数据库系统。在数据库系统中,由于CPU速度 ... [详细]
  • 本文主要介绍了MySQL中子查询的基本用法和三种用法,包括生成参考值、内层查询与外层查询的比较操作以及使用事件号在成绩表中找到学生的分数记录。通过详细解析子查询的实例,帮助读者更好地理解和应用子查询。 ... [详细]
  • MySQL数据库锁机制及其应用(数据库锁的概念)
    本文介绍了MySQL数据库锁机制及其应用。数据库锁是计算机协调多个进程或线程并发访问某一资源的机制,在数据库中,数据是一种供许多用户共享的资源,如何保证数据并发访问的一致性和有效性是数据库必须解决的问题。MySQL的锁机制相对简单,不同的存储引擎支持不同的锁机制,主要包括表级锁、行级锁和页面锁。本文详细介绍了MySQL表级锁的锁模式和特点,以及行级锁和页面锁的特点和应用场景。同时还讨论了锁冲突对数据库并发访问性能的影响。 ... [详细]
  • MySQL多表数据库操作方法及子查询详解
    本文详细介绍了MySQL数据库的多表操作方法,包括增删改和单表查询,同时还解释了子查询的概念和用法。文章通过示例和步骤说明了如何进行数据的插入、删除和更新操作,以及如何执行单表查询和使用聚合函数进行统计。对于需要对MySQL数据库进行操作的读者来说,本文是一个非常实用的参考资料。 ... [详细]
  • 深入理解Java虚拟机的并发编程与性能优化
    本文主要介绍了Java内存模型与线程的相关概念,探讨了并发编程在服务端应用中的重要性。同时,介绍了Java语言和虚拟机提供的工具,帮助开发人员处理并发方面的问题,提高程序的并发能力和性能优化。文章指出,充分利用计算机处理器的能力和协调线程之间的并发操作是提高服务端程序性能的关键。 ... [详细]
  • 云原生应用最佳开发实践之十二原则(12factor)
    目录简介一、基准代码二、依赖三、配置四、后端配置五、构建、发布、运行六、进程七、端口绑定八、并发九、易处理十、开发与线上环境等价十一、日志十二、进程管理当 ... [详细]
  • 第七课主要内容:多进程多线程FIFO,LIFO,优先队列线程局部变量进程与线程的选择线程池异步IO概念及twisted案例股票数据抓取 ... [详细]
  • 有意向可以发简历到邮箱内推.简历直达组内Leader.能做同事的话,内推奖励全给你. ... [详细]
  • 构建LNMP架构平台
    LNMP架构的组成:Linux、Nginx、MySQL、PHP关于NginxNginx与apache的作用一样,都是为了搭建网站服务器,由俄罗斯人lgorsysoev开发,其特点是 ... [详细]
author-avatar
濮阳土著_480
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有