近日《外卖骑手,困在系统里》一文揭示了不少外卖系统背后存在的问题,一时间引发了大量有关骑手安全问题的讨论。 总体来看,既然骑手问题的直接诱因是时间问题,那么修改或放宽骑手配送的时间,就是一个看起来很直接有效的方式。 但值得注意的是,系统为骑手设定的配送时间,是根据用户、场景等多种因素考虑得出的。 因为外卖服务是非常复杂的,从角色来说,外卖涉及商家、平台、骑手、用户四方,从服务过程来看,从用户下单到商家出餐再到骑手配送,涉及众多角色众多环节,每天数千万单的量一叠加,系统只能用算法解决可以解决的问题 在优化系统措施上,美团表示调度系统会留给骑手8分钟的弹性时间,让骑手可以等电梯,在路口慢一点。此外,在恶劣天气下,美团还表示系统会延长配送时间,甚至停止接单。 除了以上系统优化和安全保障措施外,美团还将改进骑手奖励模式,加入安全指标考核标准,同单量区间组成新考核标准。这意味着,安全和快速将成为同样重要的考核标准,这样的改变将有效强化骑手的安全配送意识。
那么,一个完整的外卖跑腿配送开发项目,到底应该如何构建?本文将从平台架构、订单系统、骑手调度、配送逻辑、地图定位、高并发处理等方面,详细解析外卖跑腿配送开发的核心技术实现。 ↓配送完成在外卖跑腿配送开发中,订单系统不仅仅要处理支付,还需要同时处理:配送距离配送时间骑手状态商家出餐时间配送范围四、外卖跑腿配送开发订单数据设计订单系统通常是整个平台最核心的数据模块。 北京市朝阳区'})配送距离计算function calcDistance(lat1, lng1, lat2, lng2){ // Haversine算法}外卖跑腿配送开发中,距离计算会直接影响:配送费派单逻辑骑手路线八 消息队列处理订单用户下单 ↓进入MQ队列 ↓库存系统处理 ↓骑手系统处理这样可以提升系统吞吐能力。 十一、总结一个完整的外卖跑腿配送开发项目,本质上并不仅仅是做一个点餐系统。而是构建:用户系统商家系统骑手系统调度系统配送系统数据运营系统组成的完整本地生活生态。
但很多人理解的外卖系统,只是一个“点餐页面”。实际上,一个成熟的外卖平台,背后包含订单系统、配送调度、商家管理、骑手协同、营销体系等多个核心模块。那么,外卖系统小程序开发到底应该怎么做? 商家后台主要用于:商品管理库存调整营业时间设置订单处理配送范围设置查看经营数据对于多门店平台,还需要支持门店独立管理。然后是骑手配送端。配送系统其实是整个外卖系统小程序开发中最核心的一部分。 、外卖系统小程序开发中的下单流程一个完整的外卖订单流程通常如下:用户下单 ↓生成订单 ↓支付成功 ↓通知商家 ↓进入配送队列 ↓骑手接单 ↓配送完成这里面最关键的是:订单状态流转高并发处理配送协同尤其在高峰期 五、外卖配送系统如何实现自动派单很多人认为外卖系统开发最难的是页面。实际上,真正复杂的是配送调度逻辑。例如系统需要判断:哪个骑手距离最近哪个骑手当前空闲哪个骑手顺路哪个骑手即将超时这些都需要算法参与。 十、外卖系统如何实现实时消息通知外卖平台中,消息通知非常关键。例如:用户支付成功商家接单骑手到店骑手配送中订单完成这些状态都需要实时推送。通常会使用:WebSocket + 消息队列实现实时通信。
怎么在配送体验和配送成本之间取得最佳的平衡,是即时配送平台生存的根基和关键所在。在用户满意度持续提升的同时,降低配送成本、提高骑手满意度、驱动配送系统的自动化和智能化,是外卖配送团队要解决的难题。 Note: 招募更多的配送员,配送成本很高,应该想办法减少成本,即用更少的骑手配送更多的订单。 2. 系统派单具备如下优势: 系统可以在全局层面上掌握和配送有关的骑手、商家、用户、订单等各类信息,在此基础上,可以做出全局较优的方案,从而提升配送效率和配送体验,减少配送成本; 显著减轻人工调度员的工作,从而降低人工成本 即时配送订单分配场景下的数据包括两类: 直接通过业务系统采集可获取的数据,例如订单数据、骑手负载数据、骑手状态数据等。 Note: 批量分配算法,二分图匹配问题,简单速度快,第2种需要集群。
但真正做过外卖跑腿配送开发的人会发现:即时配送平台真正难的,并不是做一个下单页面。而是:如何在高并发场景下,让订单、骑手、商家、地图、支付、调度系统稳定协同运行。 尤其在:午餐高峰晚餐高峰节假日活动期间,大量订单同时涌入,如果系统架构不合理,很容易出现:系统卡顿骑手调度混乱商家漏单配送超时用户支付失败因此,一个成熟的外卖跑腿配送开发平台,本质上更像是一个“高并发实时调度系统 本文将从平台架构、订单系统、骑手调度、高并发处理、地图定位以及系统稳定性等方面,详细解析如何构建高效稳定的即时配送平台。 : '北京市朝阳区'})配送距离计算function calcDistance(lat1, lng1, lat2, lng2){ // Haversine算法}在外卖跑腿配送开发中:配送距离会直接影响 九、总结一个真正成熟的外卖跑腿配送开发平台,本质上并不仅仅是做一个下单系统。而是需要同时构建:用户系统商家系统骑手系统调度系统地图系统支付系统数据运营系统共同组成完整的即时配送生态。
做外卖配送系统,如果没有调度算法,本质上只是一个“下单+通知工具”。真正决定平台履约效率的,不是页面,而是调度机制。 一套成熟的外卖配送系统,核心要解决三个问题:订单如何快速匹配骑手如何降低配送总时长如何平衡骑手负载与平台效率下面直接讲实现思路。一、调度模型基础设计调度系统的本质是一个“多约束条件下的最优匹配问题”。 这种方式的好处是:防止某个骑手被疯狂派单提高整体配送均衡性可根据运营策略动态调整权重四、批量订单优化(进阶)当系统进入高峰期,不能再用“单单匹配”,而要使用批量调度。 很多外卖配送系统只做到“抢单模式”,把调度交给骑手自己。这种方式适合早期平台,但一旦订单上量,履约效率一定下降。 真正成熟的外卖配送系统,一定具备:智能调度能力批量订单处理能力可调权重策略高并发容错机制调度算法决定配送效率,配送效率决定用户体验,用户体验决定复购率。
Note: 机器学习系统:例如ETA预估 调度系统:根据订单进行骑手的分配 LBS系统:路径规划 定价系统:根据时间、天气、运力情况进行动态定价 规划系统:可以使用行政区域划分,在此基础上再进行调整 2 区域规划项目要解决的问题:1.配送区域里的商家不聚合;2.区域奇形怪状,空驶严重;3.站点的大小不合理。什么是好的区域规划方案?基于统计分析的优化目标设定。 优化的三要素是:目标、约束、决策变量。 2.3 骑手路径规划 骑手的路径规划问题,不是简单的路线规划,一个骑手身上有很多配送任务,这些配送任务存在各种约束,怎样选择最优配送顺序去完成所有任务,这是一个NP难问题。 系统派单、系统改派,都依赖路径规划算法。在骑手端,给每个骑手推荐任务执行顺序。路径规划算法核心的诉求是优化效果必须是稳定的好。不能这次的优化结果好,下次就不好。另外,运行时间一定要短。 对于骑手来说,平台没法规定每个骑手的任务执行顺序。骑手在配送过程中可以自由发挥,所以骑手执行顺序的不确定性也一直存在。 Reference 美团智能配送系统的运筹优化实战
因此我们内部把配送的AI系统,简称为“超脑”配送系统。 ? 多传感器:提供室内定位 、精细化场景刻画、骑手运动状态识别 正确理解和准确预测 时间预估:提供所有配送环节时间的准确预估 其他预估:销量预估、运力预估等 完成复杂决策 调度系统:多人多点实时调度系统,完成派单决策 定价系统:实时动态定价系统,完成定价决策:用户收多少钱?给骑手多少钱? 规划系统:配送网络规划系统,完成规划决策:站点如何划分?运力如何运营? 首先看一下目前主要问题:用户位置信息有很多错误,比如: 用户选择错误 上图左,一个小区会有1期2期~N期等,用户在选择POI的时候就可能发生错误(比如1期的选了2期),两者地理位置相差非常远,很容易造成骑手去了错误的地方 ;(2)数据去噪;(3)数据聚合;(4)置信度打分。
《人物》杂志发表了《外卖骑手,困在系统里》一文,文中从外卖骑手的视角出发,探究了目前外卖生态中外卖骑手送餐只能越来越快、越来越不顾自身安全的困局,引起大家对于外卖平台以及其所设计出来的算法的批判,并且在引言中发起一个思考 一、关于算法造成骑手困局的逻辑 《外卖骑手,困在系统里》一文中透露出来的逻辑,或者说大家脑海里关于算法造成骑手困局的逻辑是这样的: ? 回到上面简单的例子,假如现在平台上有两名骑手,自愿或者被动地加快了送餐速度,其中一名骑手送2公里的餐食只用了20分钟,一名骑手送3公里的餐食只用了25分钟,那么对于算法来说,继续使用【配送时间 = 距离 订单信息:包括订单的空间因素(用户、餐厅的坐标,城市、配送区块的ID等)、订单的时间因素(小时时刻、是否工作日等)、订单大小(菜品数量和价格等); 2. 引用: [1] 人物.外卖骑手,困在系统里[EB/OL].https://mp.weixin.qq.com/s/Mes1RqIOdp48CMw4pXTwXw,2020-09-08. [2] Lin Zhu
AI 研习社按:互联网影响着社会的方方面面,作为 O2O 和共享经济的代表,美团外卖经过几年高速发展,以每天配送超过千万份订单、几十万骑手的规模,成为世界上最大的配送平台。 以下是采访内容: Q:美团智能配送系统每天要处理千万级的订单,管理近50万骑手,对于这种复杂问题的求解和优化很多大公司都还无从下手,你能否简单地向读者介绍下美团智能配送系统的技术框架? 通过实时调度系统,实现订单和骑手的动态最优匹配,大大提升了配送效率;同时,通过定价系统,实现对用户端、骑手端、商户端的合理定价,为即时配送的各参与方建立良好的生态系统,实现了多方共赢的目标。 ,配送调度系统也需要保持以客户为中心,提供让客户更满意、让骑手更高效的服务。 为此,我们做了很多方面系统改造,比如在订单调度系统中加入了骑手偏好和运营奖励等因素,有效增加了骑手对平台的粘性。
如今,即时配送行业正在快速发展,越来越多企业开始关注“外卖配送系统开发搭建”。很多人认为,外卖系统只是一个点餐页面,但真正完整的平台,其实涉及用户端、商家端、骑手端以及后台管理系统之间的大量实时联动。 用户下单之后,系统需要同步通知商家接单、骑手配送、后台调度,并实时更新订单状态。整个过程如果任何一个环节出现延迟,都会直接影响用户体验。 一、外卖配送系统整体架构设计一个完整的外卖配送平台,通常会包含:用户端小程序/App商家管理端骑手配送端平台运营后台API接口服务数据库与缓存系统消息推送服务整个系统的数据流转,大致如下:用户下单 ↓接口服务接收订单 ↓订单系统生成订单 ↓消息系统通知商家 ↓商家接单出餐 ↓骑手接单配送 ↓后台统一监控订单状态很多外卖系统真正难的地方,其实是:“多端实时同步”。 九、总结一个完整的外卖配送系统开发搭建,本质上是:“多角色、多终端、多状态实时联动的平台”。从用户下单,到商家接单,再到骑手配送以及后台调度,每一步都依赖系统实时同步。
饿了么对 AI 研习社表示,智能调度系统「方舟」是饿了么外卖即时配送领域中最核心的环节,该系统替代了调度员大部分的工作,减少了人力介入的程度,实现了自动化、智能化派单。 在外卖的午间与晚间高峰,「方舟」会以运单效率为第一准则,在高峰期优先对高等级骑手分派订单,以提升配送效率。数据显示,「方舟」系统每秒处理订单的峰值可以达到 80 单。 Part2 「老马识途」:为每位骑手规划最优路径 「方舟」智能调度系统通过分析餐厅历史出餐数据,骑手接单时,系统会优先指向出餐更快的餐厅,让骑手减少在餐厅等餐的时间。 数据显示,在智能调度系统的帮助下,饿了么每单配送时长已缩短至 28.62 分钟,准时率和用户好评率都高达 99%。 但是由于配送员的行为可能不会按照系统给的最优配送路径,比如电动车没电或者配送员想走另外一条路,因此这种获取订单最优解的方案虽然有效,但满足不了业务需求。 之后,他们升级到蓄水分单:蓄水时长内最优。
本文从系统架构、核心模块设计和关键代码实现三个层面,拆解配送外卖系统源码是如何帮助平台降低技术和运营成本的。 ;privateLonguserId;privateLongshopId;privateBigDecimaltotalAmount;privateIntegerstatus;//0待支付1已支付2配送中 三、智能派单机制降低人工调度成本在没有系统支撑的情况下,很多平台早期会依赖人工派单或简单规则派单,这会直接导致:客服人力成本高派单效率低骑手体验差配送外卖系统源码通常内置自动派单逻辑。 80%以上的派单工作,平台可以明显减少:客服介入频率骑手投诉订单流转时间四、统一多端系统,减少重复开发与维护很多平台一开始会踩的坑是:用户端一套逻辑商家端一套逻辑骑手端再写一套而配送外卖系统源码通常采用统一后端服务 ,可以实现:日结/周结自动生成商家、骑手自助查看财务只做审核不做计算六、从“能跑”到“能规模化”的关键真正拉开平台差距的,并不是有没有外卖系统,而是:系统能不能低成本扩展业务增长后技术是否扛得住配送外卖系统源码通过
美团“超脑”配送系统的由来 美团内部把配送的AI系统,简称为“超脑”配送系统。 2. 多传感器:提供室内定位以、精细化场景刻画、骑手运动状态识别 正确理解和准确预测 时间预估:提供所有配送环节时间的准确预估 其他预估:销量预估、运力预估等 完成复杂决策 调度系统:多人多点实时调度系统 定价系统:实时动态定价系统,完成定价决策:用户收多少钱?给骑手多少钱? 规划系统:配送网络规划系统,完成规划决策:站点如何划分?运力如何运营? 5. 配送系统的核心参数ETA ETA(Estimated Time of Arrival,时间送达预估)是配送系统中非常重要参数,与用户体验、配送成本有直接关系,而且会直接影响调度系统和定价系统的最终决策。 交付点挖掘的技术实战:挑战 在数据挖掘实际过程中,整个挖掘过程,分为以下几个步骤:(1)基于地址分组;(2)数据去噪;(3)数据聚合;(4)置信度打分。
美团智能配送系统架构 美团配送业务场景复杂,单量规模大。下图这组数字是2019年5月美团配送品牌发布时的数据。 ? 更直观的规模数字,可能是美团每年给骑手支付的工资,目前已经达到几百亿这个量级。 所以,在如此大规模的业务场景下,配送智能化就变得非常重要,而智能配送的核心就是做资源的优化配置。 ? 资源优化配置 外卖配送是一个典型的O2O场景。既有线上的业务,也有线下的复杂运营。 智能配送系统架构 根据智能配送的这三层体系,配送算法团队也针对性地进行了运作。如上图所示,右边三个子系统分别对应这三层体系,最底层是规划系统,中间层是定价系统,最上层是调度系统。 同样非常重要的还包括图中另外四个子系统,在配送过程中做精准的数据采集、感知、预估,为优化决策提供准确的参数输入,包括机器学习系统、IoT 和感知系统、LBS系统,这都是配送系统中非常重要的环节,涉及大量复杂的机器学习问题 排班时间节省:2h/每站点每次。 这种算法也在自营场景做了落地应用,跟那些排班经验丰富的站长相比,效果基本持平,一线的接受程度也比较高。
据当时负责系统搭建的同学回忆说,在派单系统上线之前通常情况是先组建外卖配送群,然后一有单来,每个站点的派单员再往群里分销,有人接就接,没人接派单员就通过电话等方式直接指定骑手配送。 缺陷也是天然的。 当时饿了么已经成立5年,重兵都在外卖配送,到2015年百度也已叫响O2O,说要先花200亿砸出份额。 说起搞外卖,美团不仅是新玩家,他们自己内部也是新业务。 所以想要后来居上,打法就变得关键。 要搭建一个满足如此复杂的外卖业务需求的配送系统,需要考虑的维度太多了,比如: 在派单系统未上线前,在订单的配送过程中,骑手在商家、用户处的取餐和交付时间会占到整个订单配送时长的一半以上。 在配送领域,还有比外卖更在意即时性的品类吗?外卖以外,B2C零售可送、生鲜宅配可送、服装可送,甚至任何可跑腿代购的领域,没有不能切入的,这也是美团正在做的事情。 这家从千团大战中胜出,笑傲外卖O2O江湖,如今长成中国第四大市值的科技公司。 你说美团的核心是什么? — 完 —
希望通过本文,帮助一线的机器学习算法工程师和爱好者们了解饿了么即时配送系统中压力平衡系统的构建,以及如何利用常见机器学习算法有效地解决O2O场景下的实际问题。 三、压力平衡系统 3.1 系统目标 压力平衡系统要解决的问题是:当配送供给(骑手)与用户需求(订单)出现日内的异常不匹配时,为了保证用户体验不受到过大损伤,及时有效地使用调控手段来平衡需求与供给。 图2 压力平衡系统目标 造成用户需求和配送供给日内异常不匹配的原因有很多:比如遇到恶劣的天气、商家搞一些临时性的大活动,骑手运力本身不充足等。 = 团队负载 2)qn = 该团队第n位骑手的个性化最大背单量(使用骑手最大背单模型计算的数值) 团队压力系数的定义简洁有效,直接支持了饿了么即时配送相关10多个相关业务系统:包括智能派单, 五、总结展望 通过本文,我们希望读者能够对饿了么即时配送体系中的压力平衡系统以及如何利用常见的机器学习算法有效解决O2O场景下的实际问题有所了解。
在实际的外卖配送小程序开发过程中,真正决定系统上限的,从来不是下单页面或商品展示,而是隐藏在后端的两套核心能力:调度系统与订单分发机制。前者决定配送效率,后者决定系统稳定性与骑手体验。 一、为什么调度系统是外卖配送小程序开发的核心难点表面上看,配送只是“把订单给骑手”,但本质上是一个典型的多约束实时优化问题:多订单(同时产生)多骑手(状态动态变化)多约束条件(距离、时间、负载、优先级) 2. 四、多订单路径优化(核心难点)现实中骑手不会只送一单,而是多单合并配送。 八、总结在外卖配送小程序开发中:订单系统只是基础调度系统决定效率分发机制决定稳定性路径优化决定规模能力如果这三块没有做好,再多功能也只是“表面完整”。
第二:商家、出餐者,店铺的相关权限为通知骑手来取餐、出餐。 第三:骑手,骑手的权限为送餐。 第四:平台系统,平台系统的功能为短信服务、奖惩机制、运力分配等相关功能。 前端订单展示 前端订单系统主要包括2大块的展示:订单信息和订单状态,其实用户更多的是关心订单状态。 1. 订单信息: 配送信息: 配送服务、配送骑手、骑手距离、预计到达时间、期望时间、配送地址;是必须展示的要素,来提升用户体验,便于用户查看,实时准确得知食物信息。 配送地址、联系方式是骑手送达的根据。 订单信息: 订单号码、下单时间、支付方式;是必须展示的要素,便于用户核对订单。 2. 用户投诉:用户选择投诉原因,就要考虑是商家还是骑手的原因。我们可以规定一个商家出餐的平均值时长,如果商家出餐超过这个时间,我们就判定为投诉商家,否则断定为投诉骑手。 2.
本文从技术角度,完整拆解从用户下单到骑手配送完成的整体系统设计思路。 待接单 1 已接单 2 配送中 3 已完成 4 已取消3 下单核心代码示例@PostMapping("/create")public Result createOrder(@RequestBody OrderDTO 1 调度流程获取附近骑手 计算距离 排序筛选 推送订单2 Redis GEO 实现附近骑手查询骑手实时位置写入 Redis:redisTemplate.opsForGeo() .add("rider_geo 配送完成@PostMapping("/finish")public Result finish(Long orderId){ orderMapper.updateStatus(orderId, 2 如果你正在搭建同城配送或本地生活服务平台,选择成熟的开源跑腿系统源码,往往比从零开发或模板系统更稳、更快、更可控。技术基础打牢,业务才能走得更远。