查看原文
其他

美团即时物流的分布式系统架构设计

作者 | 宋斌 ,文末延伸:王继祥

来源丨高效开发运维



编者按:即时物流看似简单,表面看仅仅是物流最原始的配送模式,即:点对点配送。但是,在互联网成为基础设施的今天,大数据、云计算、物联网等先进技术都在即时物流配送体系中得到应用,数据驱动,智能调拨已经成为即时物流的核心竞争力。如果即时物流与上游的传统物流体系和智慧供应链对接,将打通传统物流配送最难的末端网络,推动智慧供应链向智慧供应网变革,即时物流的小趋势将推动智慧物流大趋势发展。美团即时物流系统在国内居于领先地位,美团的即时物流的大脑是如何建设的?今天向大家推荐一篇美团资深技术专家宋斌的文章,供大家参考。(王继祥)

团外卖的即时物流分布式高并发系统是如何建设的?   背景   


美团外卖已经发展了五年,即时物流探索也经历了 3 年多的时间,业务从零孵化到初具规模,在整个过程中积累了一些分布式高并发系统的建设经验。最主要的收获包括两点:

  1. 即时物流业务对故障和高延迟的容忍度极低,在业务复杂度提升的同时也要求系统具备分布式、可扩展、可容灾的能力。即时物流系统阶段性的逐步实施分布式系统的架构升级,最终解决了系统宕机的风险。

  2. 围绕成本、效率、体验核心三要素,即时物流体系大量结合 AI 技术,从定价、ETA、调度、运力规划、运力干预、补贴、核算、语音交互、LBS 挖掘、业务运维、指标监控等方面,业务突破结合架构升级,达到促规模、保体验、降成本的效果。

本文主要介绍在美团即时物流分布式系统架构逐层演变的进展中,遇到的技术障碍和挑战:

  • 订单、骑手规模大,供需匹配过程的超大规模计算问题。

  • 遇到节假日或者恶劣天气,订单聚集效应,流量高峰是平常的十几倍。

  • 物流履约是线上连接线下的关键环节,故障容忍度极低,不能宕机,不能丢单,可用性要求极高。

  • 数据实时性、准确性要求高,对延迟、异常非常敏感。

美团即时物流架构

美团即时物流配送平台主要围绕三件事展开:一是面向用户提供履约的 SLA,包括计算送达时间 ETA、配送费定价等;二是在多目标(成本、效率、体验)优化的背景下,匹配最合适的骑手;三是提供骑手完整履约过程中的辅助决策,包括智能语音、路径推荐、到店提醒等。

在一系列服务背后,是美团强大的技术体系的支持,并由此沉淀出的配送业务架构体系,基于架构构建的平台、算法、系统和服务。庞大的物流系统背后离不开分布式系统架构的支撑,而且这个架构更要保证高可用和高并发。

分布式架构,是相对于集中式架构而言的一种架构体系。分布式架构适用 CAP 理论(Consistency 一致性,Availability 可用性,Partition Tolerance 分区容忍性)。在分布式架构中,一个服务部署在多个对等节点中,节点之间通过网络进行通信,多个节点共同组成服务集群来提供高可用、一致性的服务。

早期,美团按照业务领域划分成多个垂直服务架构;随着业务的发展,从可用性的角度考虑做了分层服务架构。后来,业务发展越发复杂,从运维、质量等多个角度考量后,逐步演进到微服务架构。这里主要遵循了两个原则:不宜过早的进入到微服务架构的设计中,好的架构是演进出来的不是提前设计出来的。

分布式系统实践


上图是比较典型的美团技术体系下的分布式系统结构:依托了美团公共组件和服务,完成了分区扩容、容灾和监控的能力。前端流量会通过 HLB 来分发和负载均衡;在分区内,服务与服务会通过 OCTO 进行通信,提供服务注册、自动发现、负载均衡、容错、灰度发布等等服务。当然也可以通过消息队列进行通信,例如 Kafka、RabbitMQ。在存储层使用 Zebra 来访问分布式数据库进行读写操作。利用 CAT(美团开源的分布式监控系统)进行分布式业务及系统日志的采集、上报和监控。分布式缓存使用 Squirrel+Cellar 的组合。分布式任务调度则是通过 Crane。

在实践过程还要解决几个问题,比较典型的是集群的扩展性,有状态的集群可扩展性相对较差,无法快速扩容机器,无法缓解流量压力。同时,也会出现节点热点的问题,包括资源不均匀、CPU 使用不均匀等等。

首先,配送后台技术团队通过架构升级,将有状态节点变成无状态节点,通过并行计算的能力,让小的业务节点去分担计算压力,以此实现快速扩容。

第二是要解决一致性的问题,对于既要写 DB 也要写缓存的场景,业务写缓存无法保障数据一致性,美团内部主要通过 Databus 来解决,Databus 是一个高可用、低延时、高并发、保证数据一致性的数据库变更实时传输系统。通过 Databus 上游可以监控业务 Binlog 变更,通过管道将变更信息传递给 ES 和其他 DB,或者是其他 KV 系统,利用 Databus 的高可用特性来保证数据最终是可以同步到其他系统中。

第三是我们一直在花精力解决的事情,就是保障集群高可用,主要从三个方面来入手,事前较多的是做全链路压测评,估峰值容量;周期性的集群健康性检查;随机故障演练(服务、机器、组件)。事中做异常报警(性能、业务指标、可用性);快速的故障定位(单机故障、集群故障、IDC 故障、组件异常、服务异常);故障前后的系统变更收集。事后重点做系统回滚;扩容、限流、熔断、降级;核武器兜底。


单 IDC 的快速部署 & 容灾


单 IDC 故障之后,入口服务做到故障识别,自动流量切换;单 IDC 的快速扩容,数据提前同步,服务提前部署,Ready 之后打开入口流量;要求所有做数据同步、流量分发的服务,都具备自动故障检测、故障服务自动摘除;按照 IDC 为单位扩缩容的能力。


多中心尝试


美团 IDC 以分区为单位,存在资源满排,分区无法扩容。美团的方案是多个 IDC 组成虚拟中心,以中心为分区的单位;服务无差别的部署在中心内;中心容量不够,直接增加新的 IDC 来扩容容量。

单元化尝试

相比多中心来说,单元化是进行分区容灾和扩容的更优方案。关于流量路由,美团主要是根据业务特点,采用区域或城市进行路由。数据同步上,异地会出现延迟状况。SET 容灾上要保证同本地或异地 SET 出现问题时,可以快速把 SET 切换到其他 SET 上来承担流量。

智能物流的核心技术能力和平台沉淀

机器学习平台,是一站式线下到线上的模型训练和算法应用平台。之所以构建这个平台,目的是要解决算法应用场景多,重复造轮子的矛盾问题,以及线上、线下数据质量不一致。如果流程不明确不连贯,会出现迭代效率低,特征、模型的应用上线部署出现数据质量等障碍问题。

JARVIS 是一个以稳定性保障为目标的智能化业务运维 AIOps 平台。主要用于处理系统故障时报警源很多,会有大量的重复报警,有效信息很容易被淹没等各种问题。此外,过往小规模分布式集群的运维故障主要靠人和经验来分析和定位,效率低下,处理速度慢,每次故障处理得到的预期不稳定,在有效性和及时性方面无法保证。所以需要 AIOps 平台来解决这些问题。

未来的挑战

经过复盘和 Review 之后,我们发现未来的挑战很大,微服务不再“微”了,业务复杂度提升之后,服务就会变得膨胀。其次,网状结构的服务集群,任何轻微的延迟,都可能导致的网络放大效应。另外复杂的服务拓扑,如何做到故障的快速定位和处理,这也是 AIOps 需要重点解决的难题。最后,就是单元化之后,从集群为单位的运维到以单元为单位的运维,也给美团业务部署能力带来很大的挑战。


作者简介

宋斌,美团资深技术专家,长期参与分布式系统架构、高并发系统稳定性保障相关工作。目前担任即时物流团队后台技术负责人。2013 年加入美团,参与过美团外卖 C 端、即时物流体系从零搭建。现在带领团队负责调度、清结算、LBS、定价等业务系统、算法数据平台、稳定性保障平台等技术平台的研发和运维。最近重点关注 AIOps 方向,探索在高并发、分布式系统架构下,如何更好的做好系统稳定性保障。

==========

延伸阅读:美国的即时物流技术(本号编辑整理)


最近几年,即时配送业务在全球范围内掀起了一波快速发展的浪潮,全球各地都出现了很多创业公司,其中国外知名的包括美国的Uber Eats(全球)、英国的Deliveroo、印度的Swiggy、Zomato(分别被美团和阿里投资),印尼的go-jek等等。


在美国多数城市都使用汽车配送,使用汽车配送不会发生国内这种频发的交通事故、安全性相对较高,但是遇到的第一个问题是配送密度低、地域广泛,导致配送的时间长,还经常遇到堵车、没有地方停车,停车费和罚单高的离谱等问题。汽车和短途交通工具结合,美国能够从事最后一公里配送的可用劳动力非常稀少。因此,美国科技企业纷纷加大科技研发方面的投入, 希望用新技术,降低“最后一公里”物流成本,并进一步加快运送速度,提高服务质量。


美国即时物流配送,运用算法+大数据分析+人工智能,实施分布式系统的架构升级,对配送过程进行优化,降低配送成本,提高配送速度。即时物流业务对故障和高延迟的容忍度极低,在业务复杂度提升的同时也要求系统具备分布式、可扩展、可容灾的能力。围绕成本、效率、体验核心三要素,即时物流体系大量结合AI技术,从定价、ETA、调度、运力规划、运力干预、补贴、核算、语音交互、LBS挖掘、业务运维、指标监控等方面,业务突破结合架构升级,达到促规模、保体验、降成本的效果。即时物流业务对故障和高延迟的容忍度极低,在业务复杂度提升的同时也要求系统具备分布式、可扩展、可容灾的能力。


在配送系统优化过程中,美国和国内几乎都面临着相同问题,如果处理不好,会严重影响优化的效果:


1,用户的需求存在着极大的波动。以外卖为例,午饭和晚饭时间的订单数目会远远高于其他时间。在低峰期,如果有较多的司机会导致的运力浪费;相反,在高峰期,较少的司机又会导致订单的延误。


2,法律以及配送人员本身的行为会影响对于运力的分配。例如配送人员会因为接收订单数过多,配送时间长,每单运费较低而选择离职去其他平台,因此需要为他保证每日适度的接收订单数目和每单不低于10美元的收入。同时,如何合理的分配订单,减少司机的绕路情况;多送订单给予奖励,使得他们更愿意接收订单,这一点也很重要。


3,因为配送服务的性质越来越多地向即时服务过渡,所以系统的响应时间必须足够短。往往要求系统在几分钟内,就要给出合理的调度方法,充分利用每一个配送人员,并对新信息及时给出回应。这意味着算法在合理的基础之上要更简洁,进一步加大了计算分析的难度。


4,参与建设商家的IT系统变得异常重要。配送除了和平台直接关联的司机有关外,还与合作商家有关系,合作商家的对it系统的熟练使用程度会大大降低调度的响应时间。同时,商家it系统是建立在对商家业务形态非常熟悉的基础完成上的,这样才会与配送环节高度匹配。


对于配送系统的优化,由于系统的复杂程度很高,算法设计上具有难度,具有很高的知识与技术门槛,对于设计人员来讲,需要较强的物流建模能力和数据分析能力。


在美国即时配送平台GEOSOO就是很好的例子。这家公司根据O2O即时物流的市场情况,将配送人员根据雇佣方式、服务时长、经验多少;客观条件交通路线、语言熟练度、城市分布、商家分布区域;商家产品标准化流程等做了分类,通过整数规划模型,对分单过程和配送过程分别建模,建立算法数据和计算平台,同时考虑了用户和司机的行为,并针对模型建立对世界深度感知,并对O2O即时配送平台运营进行了机器学习优化。


GESOO即时配送的解决方案是,采用一套“分布式存储+AI中心调度”协作的同城物流模式,实现UBER+达达的结合,达到降本提速的作用。利用和国内美团类似的分布式架构,通过:


LBS系统:提供正确位置(用户/商户/司机)以及两点之间正确的驾驶导航。


多传感器:提供室内定位以、精细化场景刻画、司机运动状态识别


时间预估:提供所有配送环节时间的准确预估


调度系统:多人多点实时调度系统,完成派单决策:谁来送?怎么送?


定价系统:实时动态定价系统,完成定价决策:用户收多少钱?给司机多少钱?


规划系统:配送网络规划系统,完成规划决策:站点如何划分?运力如何运营?


实现最后一公里时效性的有效保障,通过此种模式已经将配送时间从2小时缩短到1小时,和国内的速度持平,这在美国即时配送领域非常难得,美国目前多数城市都不能实现同城当日达,对于即时配送更是可望不可求。GESOO即时配送省去了仓储分拣,通过GESOOAI智慧大脑,对1000多众包司机进行实时的智能调度和管控,以即时响应各类配送场景和订单需求,将门店发货的配送时长控制在30分钟之内。并通过全自动调度降低整体运营成本,将配送信息与车辆信息、路况信息实时动态匹配,从系统整体层面做优化,同城服务半径可达 50迈,2小时可送达,在运输距离较远的情况下依然能保证高时效。


技术赋能时代,即时物流离不开大数据、人工智能、GPS+GIS定位、移动互联网、智能手机等的支撑,例如人工智能能预测运力需求,提高配送效率,智能调配订单,降低资源浪费;大数据能够积累配送单量、路线、时间等数据;GPS+GIS定位协助配送员完成路线规划,实时监督配送员;移动互联网为实时信息传递提供通路;智能手机将线下配送员纳入到共享信息环境。


版权申明:内容来源网络,版权归原作者所有。如有侵权烦请告知,我们会立即删除并表示歉意。谢谢。


正文结束



推荐阅读 ↓↓↓

1.不认命,从10年流水线工人,到谷歌上班的程序媛,一位湖南妹子的励志故事

2.如何才能成为优秀的架构师?

3.从零开始搭建创业公司后台技术栈

4.“37岁,985毕业,年薪50万,被裁掉只用了10分钟”

5.37岁程序员被裁,120天没找到工作,无奈去小公司,结果懵了...

6.副业&接私活必备的 10 个开源项目!

7.你知道哪10大算法统治着全球吗?

8.15张图看懂瞎忙和高效的区别!

一个人学习、工作很迷茫?


点击「阅读原文」加入我们的小圈子!

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存