从0开始建立一个智能调度系统每天订购40W你敢接受吗

2020-04-01 15:01 来源:科创网

从0开始建立一个智能调度系统,每天40W的订单,你敢接吗?

如果要求您从0开始建立每日订单量为40W的智能调度系统,您敢接受订单吗?你会怎么做?

做过的人会说这很简单,而没做过的人甚至不敢去想。事实上,技术上没有太大的差别。不同之处在于“只做一次”的经历。

听别人讲述自己的经历也是积累经验的好方法。我们邀请了快狗出租车的高级经理胡宪波来告诉我们他的职业生涯。他向我们讲述了快狗出租车调度系统从零到智能的演变过程。

以下是编辑后的文本版本。我希望你能发现它有启发性。

石器时代

单一拆分数据库、业务解耦

由于“快狗出租车”是当时在58个城市孵化出来的N条业务线之一,并且仅在三周内推出,最初的版本包括三个模块:用户侧应用、商户应用和管理背景。

3977d3bc11e34aae9b7e77c121252c3f.jpeg

上图显示了企业潜伏期的整体系统架构。它采用单一数据库模式,与其他企业共享数据库以节省成本。这是为了快速核实市场对该业务的接受程度。

0e13492e4414479c8e35bbc41e11014c.jpeg

上图显示了潜伏期内的调度系统,可以理解为一个单元操作。系统的核心部分是OrderPushJar,在这里处理订单创建、推送和其他调度逻辑。

f0ae3a42d48243f6b2da418e65f4a8f5.jpeg

在这个阶段,订单调度的原理非常简单,也就是说,推送框架MQTT将订单推送到设定范围内的所有驱动程序。司机将会收到手头订单,只有补贴才能迅速占领市场,这对平台来说是一个巨大的浪费。

在推出“快狗出租车”后,市场反应非常好,在短短三个月内,该业务增加了10,000个订单。然而,此时数据库已经达到瓶颈,字段冗余和数据库索引有效性等问题突出。支持多种服务的发展是不可能的。当一个子服务上线或下线时,相应的服务也会受到影响。

3d57b438f2ba4b03927c249157080e81.jpeg

上图是对数据库瓶颈的解决方案,从耦合的业务数据库中分离出快速狗出租车数据库。该方案采用双向同步方式进行数据迁移,不中断服务。

整体迁移后,快狗出租车整体系统大致分为订单、结算、配置、跟踪等模块,每个模块都有相应的独立数据库,很好地避免了业务之间的耦合,跟踪服务数据库异常,不会影响其他业务流程。

铁器时代

双推送通道、象限推送

2015年,快狗出租车进入高速发展阶段,市场上出现了许多类似的竞争对手,如蓝犀、一号货和云雀。

争夺市场的战斗已经进入白热化阶段。快狗出租车使用大量订单补贴来增加其市场份额。产品方面也在争分夺秒地领先市场。

89a1054fd78044409d2ebb77cd8a5161.jpeg

上图展示了高速业务发展时期的系统架构。应用程序、电脑和其他第三方渠道进入订单输入服务器(订单中心)。OrderEnterServer将根据具体职责进入业务模块化,分为结算、支付、推送、驱动任务等模块。

为了保证司机能尽快收到订单,并保证信息推送到达率,快狗出租车采用自主研发的TCP通道,结合了GeTui和MiPush三个通道。根据驱动程序的手机品牌选择GeTui或MiPush通道,并添加自己开发的TCP通道,以保证消息的到达率。

bdb9a4f0bc1a459a9ff11d2a9ce9d620.jpeg

在这一阶段,订单调度最初是根据不同的象限推进的。当订单生成时,满足需求的驾驶员将被发现在X公里附近推动订单。如果没有人抢票,将会增加一些补贴来刺激司机抢票的意愿。

如上图所示,将采用象限推送模式。如果没有人抢到订单,部分补贴将会增加并沿着象限推进。如果抢到订单的人数达到一定限度,部分补贴将会减少。

在分配司机的过程中,根据司机抢订单的距离、优惠评价率、历史订单完成率等核心评价指标进行优先级分配。这种简单的方法不仅减少了在平台上分发无效补贴的浪费,而且有效避免了快速抓取订单的恶意竞争,从而提高了整个平台的订单完成率。

智能时代

大数据平台引入到智能化

2016年,快狗出租车将成为行业领导者,并进入稳定期。此时,将更多地考虑平台补贴如何有效,如何发挥真正补贴的作用,如何尽可能满足用户的需求,以及如何分配司机的利益。

之后,效率提升成为今年的总体目标,主要是通过引入大数据平台、智能调度算法和智能分配框架。

第一步:数据收集

eda8825aa7a7442496bf513f6aabc869.jpeg

如上所示,应用程序用户使用数据和H5端日志操作,而服务器用户请求通过日志中心组收集和报告日志和其他数据,收集到日志中心,并通过Flume和Kafka与大数据平台同步。数据库也通过数据传输系统和渠道引入大数据平台。

第二步:智能模型训练

f851cd501ef640aeb52ef709178189b3.jpeg

如上所示,这是智能模型的训练逻辑。最低级别是收集信息:

订单信息,包括:产地、目的地和价格;

关于用户的信息,包括用户的位置和对价格的敏感度;

驾驶员信息,包括:接受订单的意愿等。

客户和驾驶员之间的关系信息,包括:两者能够匹配的标准;

整体订单的推送和订单接收场景等信息。

采用归一化桶分裂、XGBoost、特征组合、编码等大数据方法进行模型训练。目前,在整个业务流程中使用了大约800,000个数据模型。

接下来,将通过具体场景来说明大数据智能调度系统的应用,包括定价、推送订单和调度订单。

1)场景一:计价

首先共享定价方案,因为出租车用户和司机都对价格非常敏感。

2d6ab001690949d8b94232d5471aa4ee.jpeg

具体来说,用户首先进行查询,并根据查询信息给用户一定的优惠人民币A。同时,对司机给予人民币乙元的补贴。另外,在人民币丙元定价的基础上,快狗出租车司机还应使用一定金额的人民币丁来保证平台的运行。

如何计算ABCD之间的关系?显然,在保证整体订单抓取率的情况下,a和b应该尽可能的小。

ff51bf4d87e24d928b24e10bb9a6f84e.jpeg

换句话说,在尽量减少平台补贴的前提下,订单攫取率将根据给定补贴的预算情况而增加。

4e66d48bd8fa451da44bf9aac079c241.jpeg

根据以上两种定价模型,不难发现:为了保证订单的完成率,应该保证至少有两个司机抢占订单:通过司机和用户的行为分析,应该掌握订单的大概接受价格;同时,模型的有效性将通过接受订单的驾驶员的数量来验证。

467fcb9459ac4a36a8fc941802a66814.jpeg

上述优惠模型是分析用户损失率的一种手段。根据用户的日常活动和对订单价值的贡献,可以得知用户可能会因为某些原因而有损失的风险,应该通过在平台上发行优惠券来激励他返回给用户。

2)场景二:推单

1940f6d7ff28432198f91b23b5ce638f.jpeg

上图是接收订单的场景。向愿意接受订单的司机推送订单不仅可以减少用户的等待时间,提高用户满意度,还可以通过订单形成率增加司机的兴趣。

48421e8e1fcf4eaa97a9bc1e69185df1.jpeg

那么司机接受命令的意愿来自哪里呢?这包括订单和司机之间的距离、订单价格、小费补贴以及起止点。

通过大规模的逻辑回归,该平台可以计算附近司机接受订单的意愿,并将订单推给相应的司机。

3)场景三:中单

d318c9cb6c6b4ec097d13edc594b4b11.jpeg

在中间和单个场景中,如果有50名司机争夺彩票,谁能以最合适的策略赢得彩票,如有利的评价率、距离、服务态度和免费携带彩票的意愿?

be1874dabc9145b9b829e2ca6aac2abe.jpeg

这里的服务模式相对简单,主要涉及距离、等级、得分、耦合度等指标。

为了防止一些假司机扰乱站台秩序,快狗乘出租车通过设备穿越、订单追踪、客户公司金额分配、虚拟身份识别等手段来识别秩序中的欺骗概率。如果发现欺诈订单,该平台将惩罚用户和司机。

4)场景四:整体运营

fc727188b4b44fbc9e1b60904bc0b06c.jpeg

如上所示,这是整个应用场景。

当用户下订单时,快速狗乘出租车并使用订单的定价模型来确定用户是否需要价格调整、折扣或补贴;

当系统推送时,快速狗乘出租车预测司机接受命令的意愿和推送的顺序;

当司机抓住订单时,快速狗会打车来预测订单接受者的总数。一旦数量达到上限,就会通过减少订单补贴等方式进行动态微调。

当命令被分配时,快速狗也将预测驾驶员的完成概率,并获得驾驶员的质量。

订单完成后,快狗出租车将预测用户是否会丢失,并根据他们的保留价值决定是否给他更多折扣。

246417733e2c4d3ba47e9584b670e678.jpeg

上图显示了整个学校的片面结构。核心在于策略应用服务端、公共逻辑服务层和底层数据服务端的划分。

47b58b2f96584f689ab473fcfd0faaaa.jpeg

上图显示了智能调度的核心流程。左边的核心模块是特征数据,通过数据采集和训练得到相应的特征数据值。通过特征匹配系统,数据被应用到整个业务系统。

同时,订单队列引擎和驱动程序队列引擎根据订单状态的实时变化将订单推送给驱动程序。

675b8717011e486fb01c7cc268500c9e.jpeg

此外,通过业务监管平台,确保新模型或算法在线时被分流和监控。具体来说,根据用户设备的特性,模拟流量分布,并实时获得数据报告。

例如,用户是否只有在查询阶段完成后才丢失。如果流失率很高,新的在线流设置将通过实时报告关闭。

接下来,我们将共享监控平台,供快速狗乘坐出租车。具体定义如下:

该算法需要稳定的系统支持。

业务的波动应该在第一时间知道。

提高解决问题的效率就是挽回损失。

92cdab985484405882a6ad53aa550dfe.jpeg

如上图所示,这是快狗打车侧三维监控部分的截图,包括关键字监控、界面监控、流量、端口、JVM、CPU、线程、缓存、数据库等监控。

业务指标的监控包括订单和补贴的整体波动。

订单波动是指监控平均司机数量的波动,并在附近推送订单。补贴波动是为了监控用户和驾驶员给出的补贴的实时数据。

对这些核心业务指标的监控需要实时反馈和首次波动预警。

例如,为什么优惠券订单的数量突然飙升?为什么补贴订单数量突然下降?对这些核心业务指标的监控需要实时反馈。

总结

从2014年至今,快速移动的狗和出租车团队一直在不断扩大,业务也在不断迭代和优化。最后,总结了以下几点:

该体系结构与团队和业务保持一致,以保持服务的持续发展来响应业务的快速变化。

建议使用双推送通道,以确保推送的到达率。

监控非常重要,首先发现问题,减少影响;

持续改进,团队能力,跟上业务的步伐。

作者,王雪艳

来源:51CTO技术堆栈(标识:Blog51CTO)

dbaplus社区欢迎所有技术人员提交他们的贡献。提交的电子邮件地址是editor@dbaplus.cn

今晚八点孙冲轮科技项目负责人将带来 《从技术转管理后,我在敏捷转型上的试错与收获》 ,谈如何处理2次失败后的转移管理。衡量职能转型的利弊,的关键点是什么?我们应该注意哪些坑?团队和项目带不动

3714b3d74d644d74b85ecda8ff7df495.jpeg

标签: 进行 订单 业务