摘要:云原生技术与大数据的结合,带来了物流行业的诸多的变化。
本文分享自华为云社区《云原生底座之上,顺丰智慧供应链领跑的秘密》,作者:闫跃龙。
假设你是一个大闸蟹的商家,在即将到来的旺季,肯定是既喜又忧,既希望能利用机会打一个销售的漂亮仗,又担心物流的瓶颈,影响用户体验。
是的,大闸蟹是一个特殊的商品,既要在运输过程中保活,又要确保用户对时效性的需求,这一切对物流的仓储和配送都极具挑战。
如何解决这个挑战?最近,在“千行百业共话云原生——探访顺丰科技”的视频中,有了答案,那就是:数字化。
上面提到的大闸蟹商家所遇到的挑战,比起顺丰来小得多。
顺丰这么大规模的线路和车辆,如何进行规划和运营?每年的618和双11大促,业务高峰超过平时几倍甚至几十倍,如何进行高效的资源保障?数据分散于各个独立的组织中,彼此共享数据困难,如何打破数据孤岛?这些都是看似不能解决的难题。
正是在这样的背景下,顺丰科技聚焦用科技改变物流体验,将顺丰带向数字化转型的深水区。

“顺丰高速发展的背后,各领域的数据问题成为精细化运营的困境,主要体现在几大核心业务线跨领域数据共享困难、数据服务时效性不足、数据质量问题、分析口径不统一和缺乏对数据的深度分析和挖掘。” 顺丰科技大数据总监蔡适择这样说。
数据是数字时代的石油,也是数字化、智能化的基础,因此,这样的数据孤岛是顺丰实现数字化转型首先要解决的问题。由此,顺丰科技启动了数据中台项目,以打通内部数据的使用效率。
这是一个强大的数据中台。据蔡适择在全球架构师峰会上透露,顺丰科技的数据中台全景图“1+1+N+X”体系,其中一个物流数据底盘即基于第四代大数据框架的云原生实时数据湖,产品整体包括:弹性资源层、融合计算层、数据洞察层和安全中心,可以提供更简单、更安全、更高效的数据湖服务。
可以说,云原生实时数据湖在顺丰科技的大数据平台中扮演了重要作用。顺丰科技的云原生实时数据湖充分展现出云原生的核心特性,具有存算分离、实时数仓、湖仓一体三大核心能力。
例如,在顺丰科技探访视频中,就展现出存算分离的巨大优势,在面对618和双11大促业务高峰时,传统大数据平台是存算融合,无法进行资源的定向伸缩,会带来很大的资源浪费,而云原生数据湖的存算分离,从根本上解决了存和算独立伸缩的问题,业务高峰时可以按需获取公有云算力等资源,高峰过后,资源就能释放,资源利用率从平时的50%提升到了80-90%!
顺丰科技找到了用云原生破解物流供应链难题的钥匙。
现在有了云原生大数据平台,上面提到的大闸蟹物流难题也迎刃而解了。
在物流配送过程中,顺丰科技云原生大数据平台充分发挥“提前预测、实时规划”的能力,可以对每个环节中收派件的时间和空间维度精准记录分析,帮助快递员建设起精细化、智能化排班,以及实时调度分配的信息管理体系。同时,通过件量预测、分仓管理、路线规划等数据分析,为配送商品精准匹配物流小哥、运输车、飞机等,预测判断哪条线路的运输效能最优,实现物流领域的全民数字化管理和智慧决策过程。
其中的路径规划,体现得更为明显。上面提到,顺丰拥有庞大的干支线线路、车辆,要实现人、车、货的精准匹配和智能调度,单靠人工规划极其困难。而基于云原生大数据平台,加上大数据算法,顺丰的车辆调度系统实现路径规划和车辆调配的智能化。据顺丰科技相关人士透露,这种智能规划比人工规划可以提升约10-30%的车辆利用率。

这只是顺丰智慧供应链的冰山一角,我们不妨化身一个化妆品商家,看看一瓶化妆品从用户下单到最终收到货的过程,就能更清晰地看到其中的痛点以及解决过程。
当用户下单购买一瓶化妆品时,一定希望能有好的购物体验:尽快收到货,而且货的准确性、完整性都足够好。站在商家的角度,为了实现这一点,就需要进行销量预测,根据不同区域消费者行为习惯,预测不同区域的销量,将合适的商品调配到距离消费者最近的仓库。而且,化妆品很大程度也属于快消品,商家还需要规划不同仓库中的货品数量,以免商品过期或者跟不上消费需求。而且,商家还需要有好的补货策略等等。
上面这些行为,对于传统商家来说都是痛点,因为靠人工规划不仅仅是效率低,实际上已经行不通了。这时候,顺丰的智慧物流供应链就有了用武之地,无论是消费者画像分析,还是机器学习销量预测,或是智能库存补货,以及智能仓库选址、仓库之间的库存调拨策略、线路规划等,大数据技术都能扮演重要角色。
具体来说,有了智慧物流供应链,一瓶化妆品的旅程是这样的:当你下单前,大数据平台已经根据区域的消费习惯,洞察到了区域可能购买的行为,提前将化妆品调拨到了你附近的仓库,当你下单后,配送员会迅速取货、极速送达,在配送过程中,路线规划也是智能的,既保证配送时效,又保障综合配送成本做到最低。
更重要的是,有了大数据平台,整个物流供应链就变成了会思考、能进化的智能生命体,可以不断生长。据顺丰科技相关人士透露,顺丰的智慧供应链是基于运筹优化技术的应用,在持续不断的优化。为了更好满足市场变化和消费者对履约时效的需求,顺丰的供应链在持续优化中转场和网点的选址以及班次规划,优化前置网点布局、运输时效,为客户提供更优质的供应链物流服务。
在调研顺丰科技的云原生大数据平台过程中,我深刻感受到了云原生所扮演的底盘作用。
顺丰,用数据化实现人、车、货的智能调配,大数据平台起到了重要的支撑作用。这时候,“上云”不是指把底盘直接搬到云上,而是要让底盘云化、对应用透明,即云原生化。信通院调查数据显示,超过四成用户已经将云原生用于核心生产业务,顺丰就是其中的领跑者。
用蔡适择的话来说,“我们的技术会升级换代,每次升级,不可能将整个底盘重新刷一遍。云原生化后,可以理解为体系变成了操作系统+软件的模式,操作系统不用随着技术升级换代而改变,我们只需要做软件更新就可以了。”
是的,正是这种云原生的稳固底盘,不仅大幅降低了顺丰的IT开发和运维成本,也让顺丰科技可以将精力集中在真正助力核心业务的工作上,实现资源高效、应用敏捷、业务智能。

同样,顺丰科技的案例也体现出云原生的另一个精髓:“一切皆服务”。据了解,在云原生领域,顺丰科技和华为云开展了深度的技术合作和联合创新,推动应用的云原生改造。蔡适择表示,“华为云面向全行业提出了云原生2.0的理念,为顺丰的大数据平台提供了很贴心的服务,让我们能够轻松获取云原生能力,可以像操作系统一样,在上面开发出任何自己想要的能力。” 换句话说,顺丰科技云原生大数据平台的背后,有着华为云“基础设施即服务”的助力。
同样,借助云原生,顺丰科技也在加速实现“经验即服务”,将自己智慧供应链的能力和数字化转型的经验开放出来,以服务的方式赋能千行百业。
华为云Marketing部长董理斌也表示:云原生技术与大数据的结合,带来了物流行业的诸多的变化;华为云将秉持一切皆服务的宗旨,与顺丰一起,将云上的能力、云上的技术、云上的服务赋能给更多物流企业。
今年6月28日,顺丰云原生实时数据湖通过信通院数据平台建设服务商能力成熟度评估,专家集中评审认为顺丰在资源评估、规划设计、实施方案、实施执行、实施验证、交付、资源运维、运维管理等能力都合乎企业级大数据服务要求,这是对顺丰云原生实时数据湖的权威认可,也是顺丰大数据服务市场化过程的里程碑。目前,顺丰科技大数据平台已经在零售、冷链、医疗、金融、农业、食品等多个领域得到应用。
据了解,顺丰科技可以提供从采购到消费者末端交付的一体化智慧供应链解决方案,包括传统的仓储管理、运输管理软件,以及基于企业经营数据的大数据平台等。基于这些大数据及数据处理能力,一方面能够帮助企业建立智慧化经营的底层平台,另一方面可以提供基于物流供应链的驾驶舱,能够在物流供应链方面做到一体化的管理、有计划的管理、可视化管理。
在顺丰,云原生不仅掀起了一场技术革命,更是掀起了一场生产力革命与公司模式的革命。顺丰,以云原生为底盘将智慧供应链推进到新高度,跨越了数字鸿沟。同样,自身也在基于云原生加速成为千行百业数字化转型的底盘,迈入增长的新范式。
目录SpringBootStarter是什么?以前传统的做法使用SpringBootStarter之后starter的理念:starter的实现: 创建SpringBootStarter步骤在idea新建一个starter项目、直接执行下一步即可生成项目。 在xml中加入如下配置文件:创建proterties类来保存配置信息创建业务类:创建AutoConfiguration测试如下:SpringBootStarter是什么? SpringBootStarter是在SpringBoot组件中被提出来的一种概念、简化了很多烦琐的配置、通过引入各种SpringBootStarter包可以快速搭建出一
我在供应商css文件引用的供应商文件夹下有很多供应商图像。我正在使用Heroku和S3进行生产,像background-image:url("../images/sprite.png");之类的东西正在开发中,但不在生产中,因为图像url指向S3url。它也没有被预编译,所以不确定我是否应该将它作为Assets预编译的一部分,但我想远离它,因为我需要手动将所有图像文件复制到assets/images文件夹并更改css文件中的引用,方法是将其更改为scss和asset_url(这似乎工作正常)有没有办法只从供应商css文件中引用S3url我还使用asset_syncgem上传到S3
我有一个共同的基本路径;说:get/base我需要执行基本身份验证并为该路径下的所有子调用工作。说:get/base/foo和get/base/bar。查看http://www.sinatrarb.com/intro.html#Helpers建议我应该能够通过使用助手来做到这一点。我正在查看pass帮助程序并在文档中触发新路由下使用call。但是,我读到的另一个建议是使用正则表达式IE%r{/base/?:(path)?}或类似的动态路由。那么:def'/base'#dosomefunkybasicauthstuffhere#toworkwithallrequesttothiscomm
2022年伊始,默安科技联合数世咨询举办以“软件供应链安全的时与势”为主题的访谈活动,由数世咨询创始人李少鹏主持,邀请贝壳安全研发负责人李文鹏、北京邮电大学副教授张文博、默安科技副总裁沈锡镛三位行业大咖做客网安小酒馆,从产业、企业、学术的不同维度,共同探讨软件供应链安全建设的新思路,为业界呈现了一场开年网安盛宴。随着全球软件供应链安全事件频发,软件供应链安全逐渐成为业界关注焦点,也成为影响国家重要信息系统安全与关键信息基础设施安全的重要因素,以及网络安全保障体系和能力建设的重要环节。嘉宾们围绕软件供应链安全发展的主要驱动力、关基行业中的实施现状和落地难点、产学研成果转化、软件供应链安全的重要性
我在/usr/local/lib中安装了一些本地库。我现在正在尝试安装一个需要这些的gem,以便正确构建,但是gem构建失败,因为它找不到图书馆。gem的extconf.rb文件试图确认它可以找到库have_library()但由于某种原因失败了。我尝试设置一堆环境变量,但似乎没有任何效果:irb(main):003:0>require'mkmf'=>trueirb(main):004:0>have_library('gecodesearch')checkingformain()in-lgecodesearch...no=>falseirb(main):005:0>ENV['LD_LI
我创建了一个带有供应商目录的gem,其中包含来自bootstrap-sass的样式表和javascripts并自行引导。目录结构为bootstrap-sass-gem/vendor/assets/javascripts和bootstrap-sass-gem/供应商/Assets/样式表我在测试项目中需要gem,但每当我尝试从该gem中请求某些东西时,我都会收到Sprockets::FileNotFound错误。例如,我在application.css中添加了*=requirebootstrap。bootstrap位于bootstrap-sass-gem/vendor/assets/st
文章目录Kubernetes(k8s)工作负载一、Workloads二、Pod三、Deployment四、RC、RS、DaemonSet、StatefulSet五、Job、CronJob1、Job2、CronJob六、GCKubernetes(k8s)工作负载一、Workloads什么是工作负载(Workloads)工作负载是运行在Kubernetes上的一个应用程序。一个应用很复杂,可能由单个组件或者多个组件共同完成。无论怎样我们可以用一组Pod来表示一个应用,也就是一个工作负载Pod又是一组容器(Containers)所以关系又像是这样工作负载(Workloads)控制一组PodPod控制
我想知道为什么ruby给and、or的优先级低于&&、||和赋值运算符?有什么理由吗? 最佳答案 我猜这是Perl的直接继承。运算符or和and是后来在Perl5中添加的,用于需要较低优先级的特定情况。例如,在Perl中,我们希望||具有较低的优先级,这样我们就可以这样写:trytoperformbiglonghairycomplicatedaction||die;并确保||不会吞噬部分操作。Perl5引入了or,这是||的一个新版本,它具有低优先级,正是为了这个目的。Ruby中可以使用或但不能使用||的示例:value=pos
我正在学习Sinatra,我想知道是否有人知道使用Sinatra为项目制作MVC结构的好方法。我有一些想法,但对我来说它们似乎太麻烦了。 最佳答案 Sinatra已经是“VC”——您的View与您的路由(Controller)分离。如果愿意,您可以选择将其分成多个文件;有关更多信息,请参阅此答案(我的):UsingSinatraforlargerprojectsviamultiplefiles要添加“M”(模型),请选择一个数据库框架。有些人喜欢ActiveRecord.有些人喜欢DataMapper.还有更多可供您选择。我个人非常
我正在试验iPhoneSDK并在Nic博士的rbiPhoneTest项目中做一些TDD。我想知道有多少人(如果有的话)成功地使用了这个或任何其他iPhone/Cocoa测试框架?更重要的是,我想知道如何最好地断言专有的二进制请求/响应协议(protocol)。这个想法是通过网络发送二进制请求并接收二进制响应。请求和响应是使用byteand'ing和or'ing创建的。我正在使用黄金副本模式来测试我的请求。这是我到目前为止所拥有的。不要笑,因为我是ObjectiveC和Ruby的新手:requireFile.dirname(__FILE__)+'/test_helper'require'