美团配送系统架构演进实践

美团配送自成立以来,业务经历了多次跨越式的发展。业务的飞速增长,对系统的整体架构和基础设施提出了越来越高的要求,同时也不断驱动着技术团队深刻理解业务、准确定位领域模型、高效支撑系统扩展。如何在业务高速增长、可用性越来越高的背景下实现系统架构的快速有效升级?如何保证复杂业务下的研发效率与质量?本文将为大家介绍美团配送的一些思考与实践。

物流行业的发展离不开商业的发展,近些年,商业的变革为物流发展创造了新的机会。电商的兴起有效带动了快递行业的飞速发展,直接造就了顺丰、四通一达这样的快递公司。而近年来O2O商业模式的兴起,尤其是外卖、生鲜等到家场景的发展促进了同城即时配送的快速发展。

与物流领域下的其他分支不同,同城即时配送具有如下特点:

行业的流程再造一般离不开两个因素:

技术方面,AI与大数据的应用逐步普及,基于人工智能可以对配送难度、ETA、骑手能力精确评估。GPS的快速发展与GIS厂商能力的不断开放,使得基于LBS的应用大大降低了开发成本。基础设施方面,得益于国家的持续投入,移动网络的质量不断提升,成本逐年下降,也间接促使智能手机几乎实现了全民覆盖。

市场方面,由于中国人口具有超大规模性的特点,人群聚集度高,外卖等到家场景在各大城市尤其是一线城市的需求持续增强。用户对于外卖的安全、时效、配送员的服装、礼貌用语等都有更高的要求。

在这两个因素的共同作用下,促成了同城即时配送行业的发展。而对于同城即时配送业务而言,履约能力与运营效率是研发团队要重点解决的两个问题:

美团配送系统架构的演进过程可以分为三个阶段:

试错阶段,需要快速探索业务模式到底是不是一个方向,这个阶段不要期望很多事情都想得很清楚,用户和市场会快速反馈结果。所以,对于技术团队而言,这个阶段最主要的能力是快。抢夺市场,唯快不破。

从系统架构角度,MVP阶段只需要做粗粒拆解,我们按照人、财、物三大领域将系统做了初步服务划分,以保证后续的业务领域都可以从这三个主领域中分离、继承。

顺便提一下当时团队的组织形式,研发团队按项目制组织,大家共同维护一套系统。当时团队中无QA岗位,由PM、RD共同保证开发质量,一天发布二十几次是常态。

进入这个阶段,业务和产品已经得到了市场的初步验证,的确找到了正确的方向。同时,业务发展增速也对研发团队的能力提出了更高的要求,因为这个阶段会有大量紧急且重要的事情涌现,且系统可用性、扩展性方面的问题会逐步凸显,如果处理不当,就会导致系统故障频发、研发效率低下等问题,使研发疲于奔命。

这个阶段从架构层面我们重点在思考三个方面的问题:

解决以上问题的整体思路为化繁为简(理清逻辑关系)、分而治之(专业的人做专业的事)、逐步演进(考虑ROI)。

在整体架构上,我们将配送系统拆解为履约系统、运营系统和主数据平台。

运营系统(图左上侧)方面,需求长期多而杂,架构设计上需要先想清楚配送的运营系统应该管什么、不应该管什么。在长期的项目开发中,我们从业务战略与组织架构出发,在明确业务战略目标和阶段策略下,梳理每个业务团队/岗位的核心职责、考核目标、组织之间的协作流程,最终整理出现阶段配送运营管理的中心为四个领域:

除了履约、运营两个系统的架构设计外,架构设计层面还有一个非常关键的问题,即履约、运营系统的边界与职责如何划分的问题。个人理解这个问题可能是O2O类业务在规模化阶段最关键的架构设计问题,如果不能有效解决将为系统的可用性、扩展性埋下巨大隐患。履约、运营两个方向的业务需求和技术职责有较大差异,且多数数据的生产都在运营系统,最核心最关键的应用在履约系统。虽然各自的领域职责是清晰的,但对于具体的需求边界上不见得简单明了。对此,我们借鉴了MDM思路,提出了主数据平台(图下侧)的概念,重点解决履约系统与运营系统的合作与边界问题。

主数据是企业信息系统中最基础的业务单位数据,对于配送而言是组织、岗位、人员、商家、用户、城市等数据。与之对应的是业务数据,例如:订单、考勤、薪资等。主数据有两个最关键的特征:

主数据管理并非一蹴而就,是伴随业务发展逐步迭代的。早期系统较简单,上游系统直接从DB中读取数据并应用。这种方案在系统逐步复杂之后,容易出现多个团队开发互相影响,不利于系统扩展,并且在可用性上有很大风险。为此我们专门成立的主数据的团队,独立拆分了主数据服务,并把所有对于数据的访问收回到服务上。在此基础上,经过不断的迭代和演进,最终我们吸收了CQRS(CommandQueryResponsibilitySegregation)和MDM(MasterDataManagement)的思想,将整个主数据平台逐步划分成四个部分:

可用性建设是一个长期项目。考虑到ROI,起步阶段重点完成事前的流程建设,即上线规范等一系列线上操作流程,这个工作在早期能够规避80%的线上故障。在流程规范跑通并证实有效之后,再逐步通过系统建设提升人效。

容灾能力建设上,首先思考的问题是系统最大的风险点是什么。从管理的角度来看,职责的“灰色地带”通常是系统质量容易出现风险的地方。因此,早期最先做的容灾处理是核心依赖、第三方依赖的降级,优先保证一旦依赖的服务、中间件出现问题,系统自身具备最基本的降级能力。

第二阶段我们提出了端到端的容灾能力。首先,我们建设了业务大盘,定义了实时监控核心业务指标(单量、在线骑手数等),通过这些指标能够快速判断系统是不是出了问题。其次,我们在核心指标上扩展了关键维度(城市、App版本、运营商等),以快速评估问题有多大影响。最后,我们通过Trace系统,将服务间的调用关系与链路级成功率可视化展现,具备了快速定位问题的根因在哪的能力。

对于一个规模快速增长的业务,系统的容量规划是一个长期命题。容量规划的关键点是评估与扩容。

评估方面,在业务发展早期我们一个架构师就能够完全掌控整个系统,采用静态评估的方式基本可以衡量系统容量。随着系统复杂度逐渐提升,我们逐步引入了Trace、中间件容量监控等工具辅助评估容量,由架构师团队定义容量评估主框架,由各团队细化评估每个子系统的容量。当业务已经变得非常复杂时,没有任何一个人或团队能够保证精确完成容量评估,这时我们启动了场景压测、引流压测、全链路压测等项目,通过流量标记+影子表+流量偏移+场景回放等手段,实现了通过线上流量按比例回放压测的能力,通过系统报告精确评估容量与瓶颈点。

扩容方面,我们分阶段依次实施了冗余备份(主从分离)、垂直拆分(拆分核心属性与非核心属性)、水平拆分(分库分表)、自动归档。

运营系统涉及一个业务运营管理的方方面面,我们在业务领域上除了明确目标、过程、运力、资金四个领域外,打造了一套运营系统集成解决方案集合。研发通过持续投入精力在平台化服务或组件的长期建设上,使每个垂直的运营系统扩展性得到保证,从而不断提升研发效率。以工作流场景为例,通过动态表单+流程平台的方式,统一各类业务流、审批流的工程实现,各类管理动作的效率与质量可量化,找到流程阻塞节点,自动化部分流程环节,通过技术手段不断降低人工成本。

业务发展不断成熟之后,业务的各类运营管理动作会趋于精细化。这个阶段,业务对于产品技术有更高要求,期望通过产品技术创新不断打造技术壁垒,保持领先优势。配送的业务特点天然对AI应用有很强的需求,大到供给调整,小到资源配置,都是AI发挥效力的主战场。对于工程层面,需要持续思考的问题是如何更好地实现AI的业务应用。为此我们重点提升了几方面的能力:

仿真平台的核心是打造“沙箱环境”,配送的服务业属性要求用户、商家、骑手深度参与服务过程,因此算法的线上试错成本极高。对于仿真平台的建设上,我们删减掉调度系统的细枝末节,粗粒度的构建了一套微型调度系统,并通过发单回放、用户、商家、骑手实体建模、骑手行为模拟等方法模拟线上场景。每次仿真会产出算法的KPI报告,实现算法效果的离线预估。

算法策略的效果,主要依赖于算法模型和特征数据的质量。为此我们围绕模型和特征,打造了一站式算法数据平台,提供从数据清洗、特征提取,模型训练、线上预测到算法效果评估的全方位数据闭环解决方案,为机器学习和深度学习算法模型在配送各个业务线落地提供支撑。

本文为美团配送技术团队的集体智慧结晶,感谢团队每一名成员的努力付出。如果你对业务分析、领域模型感兴趣,欢迎联系yinyongjun@meituan.com。

THE END
1.网站架构规划:一个成功网站的骨架(网站架构规划方案)了解目标受众的兴趣、行为和偏好,以定制网站架构。 3. 进行内容审核 盘点现有内容,确定哪些内容需要保留、更新或删除。 4. 创建网站地图 绘制网站结构的视觉表示,显示页面的层次和导航路径。 5. 设计导航系统 创建直观且易于使用的导航系统,允许用户轻松找到所需信息。 https://www.ulidc.com/2024/12/17/%E7%BD%91%E7%AB%99%E6%9E%B6%E6%9E%84%E8%A7%84%E5%88%92%EF%BC%9A%E4%B8%80%E4%B8%AA%E6%88%90%E5%8A%9F%E7%BD%91%E7%AB%99%E7%9A%84%E9%AA%A8%E6%9E%B6-%E7%BD%91%E7%AB%99%E6%9E%B6%E6%9E%84%E8%A7%84%E5%88%92/
2.李琛轩亿级流量系统架构设计与实战博客李琛轩 亿级流量系统架构设计与实战 博客 阶段一、单机构建网站 网站的初期,我们经常会在单机上跑我们所有的程序和软件。此时我们使用一个容器,如tomcat、jetty、jboos,然后直接使用JSP/servlet技术,或者使用一些开源的框架如maven+spring+struct+hibernate、maven+spring+springmvc+mybatis;最后再选择一个数据库管理系统https://blog.51cto.com/u_16213693/12868846
3.系统架构设计师大型网站系统架构演化实例网站架构方案【系统架构设计师】大型网站系统架构演化实例 第一阶段:单体架构 单体架构是软件开发初期的常见形态,整个应用程序被打包成一个单独的部署单元。在这个阶段,所有的业务逻辑、数据库访问、前端展示等都被封装在同一个应用程序中。单体架构的优点是开发简单、部署便捷,但随着业务的发展,系统变得庞大复杂,维护和扩展变得困难https://blog.csdn.net/weixin_44231544/article/details/140913859
4.网站结构设计包含哪些内容如何设计网站架构→MAIGOO知识我们在进行页面布局的时候,一定要考虑到这个页面布局的是哪些关键词,做好相关文章,相关推荐、相关频道页的设计;这样我们网站整体的结构设计及结构优化才更趋于合理,才能更加满足用户的需求。 常用的系统架构有哪些 一、分层模式 二、客户端-服务端模式 三、主从模式 https://m.maigoo.com/goomai/219343.html
5.大型网站架构技术一览(文末送书)腾讯云开发者社区4.存储层架构 提供数据、文件的持久化存储访问与管理服务。 分布式文件 网站在线业务需要存储的文件大部分都是图片、网页、视频等比较小的文件,但是这些文件的数量非常庞大,而且通常都在持续增加,需要伸缩性设计比较好的分布式文件系统。 关系数据库 大部分万丈的主要业务是基于关系数据库开发的,但是关系数据库对集群伸缩https://cloud.tencent.com/developer/article/1068997
6.站长必学:高效网站架构设计与优化实战指南云计算网网站架构设计是网站建设的基石。一个合理的网站架构应该能够清晰地展示网站的内容结构,使用户能够方便快捷地找到所需信息。在设计网站架构时,站长需要充分考虑用户的需求和习惯,合理规划网站导航、栏目设置以及页面布局。同时,网站架构还需要考虑到搜索引擎的爬虫机制,以便让搜索引擎更好地抓取和索引网站内容。 https://www.0753zz.com/html/xinwen/chuanmei/2024-12-13/321479.html
7.大型网站演变全过程与架构设计详解–mikechen对网站架构而言,只要能通过增加一台服务器的方式改善负载压力,就可以以同样的方式持续增加服务器不断改善系统性能,从而实现系统的可伸缩性。 应用服务器实现集群是网站可伸缩架构设计中较为简单成熟的一种,如下图所示: 通过负载均衡调度服务器,可以将来自用户浏览器的访问请求分发到应用服务器集群中的任何一台服务器上https://youzhixueyuan.com/large-website-architecture-design.html
8.架构怎么考?软考系统架构设计师考试报名网站是什么?软考系统架构设计师采用机考的方式进行,报名条件不限学历、资历和年龄。软考系统架构设计师考试报名网站为中国计算机技术职业资格网,考生须在规定时间完成报名工作。 针对架构怎么考?软考系统架构设计师考试报名网站是什么?的问题,希赛小编将软考系统架构设计师考试的相关信息整理如下:https://www.educity.cn/rk/5322641.html
9.Web信息架构——设计大型网站(第3版)第3章:用户需求及其行为 本章为信息架构设计设定舞台,可以帮我们了解人们如何与信息交互。 第一优先考虑:他们需要信息,用户想要什么? 完美的捕捉:找正确的答案 捕捉龙虾的陷阱:答案不止一个,无论是什么都是有用的 乱撒网:到处闲逛 第2部分:信息架构基本原理。讨论信息架构的基本组件,举例说明这些系统之间的相互关系https://www.jianshu.com/p/229e5af5ff33
10.《企业网站设计网页系统框架全解析》《企业网站设计网页系统框架全解析》 一、企业网站架构重要性及类型概述 企业网站架构重要,影响性能和用户体验。良好架构可提高可抓取性等,常见框架类型有“ASP+SQL Server”“php+MySQL”“JSP+MySQL”“VUE+JAVA”,各有特点,企业应根据自身情况选择以构建优良网站。https://www.phpweb.com.cn/news/html/32757.html
11.网站设计方案(通用17篇)5、学校安排一名校领导(胡良校长)担任我校网站信息审核员,审核员要经常进行管理,发现不适合发布的信息“取消审核”,并通知网管进行删除。 四、站务管理规定 1、信息教师全面提供学校网站的建设与管理,系统构思、设计网站的架构,配合各部门及时、准确地将学校重大工作(活动)入网,为师生提供校园信息。 https://www.ruiwen.com/shejifangan/7234563.html
12.网站建设策划书(通用18篇)完成包罗平台系统数据库、空间、域名、站点的治理和监控;完成平台系统架构的散布摆设;完成硬件及平台功能数据的准时采集和监控;完成硬件及平台功能采集数据定制化剖析、器量和预警。为Asp运营商供应一个首要完成空间、域名、站点的半主动化治理、系统功能数据的准时主动采集、定制化功能器量、预警等功用的系统级治理平台。https://www.unjs.com/fanwenku/430944.html
13.架构师之路三系统可用性业务所处的阶段:起步阶段&发展阶段&成熟阶段 如果你的业务刚刚起步就要求你的系统可用性需要达到4个9,那么随之而来的是需要构建一整套的监控体系以及考虑跨机房等手段来保障这个目标,资源和人力成本会巨幅增加。在不知道业务死活的前提下就给系统定那么高的可用性指标显然是不合适的,所以要求架构师在做架构设计时一定https://developer.aliyun.com/article/1253015
14.基于JavaWeb企业门户网站的设计(SpringBoot,Thymeleaf,Bootstrap本文综合应用Spring Boot、Thymeleaf、HTML5、Bootstrap开发技术,采用MVC,即Model(模型)-View(视图)-Controller(控制层)设计模式,B/S架构设计,极大解耦了代码之间的依赖关系,使网站便于开发和维护。在企业门户网站功能上,完成了用户注册与登录功能,企业产品、新闻动态、员工风采、招聘信息的添加、修改、查找与删除功能,https://www.2bysj.cn/Article/jsp/202101/19224.html
15.后端架构计算机系统知识数据库计算机网络设计模式超过1000本的计算机经典书籍、个人笔记资料以及本人在各平台发表文章中所涉及的资源等。书籍资源包括C/C++、Java、Python、Go语言、数据结构与算法、操作系统、后端架构、计算机系统知识、数据库、计算机网络、设计模式、前端、汇编以及校招社招各种面经~ - 1049540https://github.com/1049540165/CS-Books
16.网络中心a)数字校园不仅包括技术系统,还包括组织体系。技术系统涉及多部门、多系统,需要进行顶层设计,进行数据标准编制和系统架构设计,处理好各系统之间关系,实现良好的系统集成,便于系统联通、数据融合共享,构建一体化信息服务平台。组织体系涉及利益调整、组织变革,需要建成运行良好的数字校园规划、实施、运行管理、安全保障的体制http://www.xtzy.com/wlzx/detail.jsp?public_id=153330
17.由浅至深推荐进阶java书籍(附PDF下载)5. 大型网站系统与Java中间件实践 作者是蘑菇街技术副总曾宪杰,曾长期负责淘宝主站。通过这本书可以了解大型网站架构变迁过程中的较为通用的问题和解法,并了解构建支撑大型网站的 Java 中间件的实践经验。 对于有一定网站开发、设计经验,并想了解大型网站架构和支撑这种架构的系统的开发、测试等的相关工程人员,本书有很https://www.w3cschool.cn/java/java-book.html
18.中国结算公司2024年招聘进行中!具体招聘岗位看这里岗位要求:计算机科学与技术类、数学类、电子与信息类、信息与通信工程类、软件工程类等相关专业,大学本科及以上学历;熟悉企业级信息系统主流技术框架及架构设计方法;扎实掌握计算机软硬件、数据库、中间件、网络、安全等专业知识,熟悉分布式服务框架及IaaS、PaaS等云平台技术;具有2年以上企业核心应用软件技术架构规划设计开https://www.gaodun.com/jr/1568890.html
19.基于STM32和ZigBee的无线校园火灾报警系统设计AET基于ZigBee技术的智能型火灾报警系统提高了管理系统中数据的可靠性,对每个终端节点所监控的区域内发生的火灾险情能及时判断并通过无线网络通知管理人员。系统整体架构如图1所示。 2 无线火灾报警系统的节点硬件设计 2.1 微处理器(MCU)控制模块 在本系统中,采用意法半导体公司(ST)推出的STM32系列微控制芯片STM32F103R8为http://www.chinaaet.com/article/185995
20.软通动力电信服务系统在技术上必须具备前瞻性,根据未来技术的发展趋势,考虑整个软硬件系统的体系架构,选择先进的软硬件系统平台、基于最佳实践的应用系统设计,保证在一定时期内整个系统技术的先进性。 系统稳定性 系统应具备长期高稳定性、高可靠性运行的能力。必须具有高吞吐量、强大处理能力及无差错传输的能力。能满足业务高峰处理的需要https://maimai.cn/article/detail?fid=732606385&efid=RcF_-sSrs_RBYaeJw8kXeQ
21.深圳UI设计网站网页交互软件系统界面设计维仆设计公司,提供UI设计、原型交互设计、软件系统界面设计等服务,服务华为、华星光电、洲明、雷迪奥、TCL、大金空调、Supreme、KMG科特勒咨询公司等大牌明星企业。https://www.shishangjue.com/index.php
22.PathWave系统设计软件(SystemVue)是德科技用于系统架构、设计和验证的单一平台 超越数学建模方式,采用完整的射频感知设计工作流程,结合数十年来是德科技在射频仪器领域积累的深厚测量技术,可以帮助工程师从容应对设计工作。 PathWave 系统设计软件可以为复杂的射频系统提供先进的原型设计平台,仿真速度更快,保真度近似于电路,并配有雷达、电子战、卫星、5G 和 WiFihttps://www.keysight.com/cn/zh/products/software/pathwave-design-software/pathwave-system-design-software.html