写点什么

达达 CTO 谈众包物流系统的复杂性

  • 2015-10-25
  • 本文字数:2666 字

    阅读完需:约 9 分钟

达达是一个聚焦最后三公里物流的众包平台,连接兼职配送员和有配送需求的商户,目前已拥有 50 万兼职配送员,服务超过 15 万家商户,日订单量达 90 万单的庞大体量。

InfoQ 记者采访了达达 CTO 杨骏,一位来自硅谷的 growth hacker、Facebook 早期的华人工程师,与他探讨了众包物流平台。本文根据采访整理而成。

InfoQ:相对于其他业务,物流业务有哪些独特的地方?

杨骏:物流是一个很大的行业。这个行业中有很多细分,比如干线物流,同城物流,也有像我们专注的最后三公里物流。三公里并不是一个非常严格的数字,它指的是城市毛细血管的物流。从另外一个角度来看,伴随电商而兴起的传统物流往往是计划性的。即使淘宝、天猫、京东这样的电商平台上的配送速度越来越快,其订单还是计划性的。相比之下,达达配送的订单都是即时性的,是实时产生的外卖、水果、生鲜等商品的配送,而且往往要求在 1 个小时内完成。

因此,我们专注的物流业务具有很强的区域性和即时性。这样的物流需求随着各类 O2O 电商而爆炸性增长,但又无法被传统物流满足。我们用了众包的模式很好地解决了这个问题,在很短的时间内实现了业务的飞速发展。

InfoQ:这些独特的地方肯定有一些技术进行支撑的,业务的快速发展给技术带来一些什么样的挑战呢?

杨骏:首先我们是完全搭建在移动互联网上的。我们的模式跟滴滴很类似,商家通过 App 发出配送需求,配送员通过 APP 可以看到附近商家的需求,通过抢单的模式来匹配这个需求并完成配送。这一切都通过移动互联网来完成。

我们面临的挑战会有以下两方面:一方面是面对快速增长的业务,如何确保系统的稳定性和可用性。面对海量业务的增长,我们在后台架构上做了很多的升级改进,以和时间赛跑的速度去 Hold 住单量的飞速增长,这块是很大的挑战。另外一方面是效率的挑战,简单来说就是如何让配送员每小时完成更多的配送订单。我们的技术团队做了大量的合并订单(把取货地和目的地接近的单子合并在一起,由一个配送员来完成),订单的推荐和指派,路径规划等方面的工作,使配送的效率随着规模得以提高。

对于这两方面的挑战,首先保证的是稳定性,因为效率是节省和浪费的问题,但是稳定性是关系到是否可用的问题。当规模迅速发展的时候,我们首先用稳定性扛住规模,而规模又提供了效率上的优化空间,使我们建立起规模和效率的双重壁垒。

InfoQ:达达在构建技术架构方面有哪些探索?

杨骏:面对上述所说的挑战。首先是研发团队的构建,在面对挑战的时候,找到合适的人比选择某项技术更显得重要。

其次我们做了很多数据库架构方面的优化,包括数据库的主从分离,读写分离,垂直分库,以及正在进行中的水平分库 (sharding) 等。简单的说,就是当一台数据库无法支持巨大的访问量时,我们把数据库中不同的表,甚至是同一表中的不同数据,拆分到不同的逻辑数据库中,实现了数据的分布式读写。这也为后续的业务发展提供了可扩展性。

我们也对上层的调用代码做了很多修改,并且做了服务的隔离,以保证核心业务和不核心的业务完全隔离开,这样不核心业务出现的问题不会影响到核心业务。

还有就是缓存的服务。面对这么高的访问量,我们基于 Redis 搭建了缓存系统,把大部分原先通过数据库的访问都用缓存来解决,以减轻数据库的压力。

我们现在已着手建设灾备机房,以保证有任何不可抗拒因素出现时我们的服务还能够可用。

InfoQ:从达达的角度来说,移动技术带来的最大不同是什么?

杨骏:移动技术使达达的商业模式成为可能。正因为有了移动互联网,我们才能用众包的模式去解决最后三公里配送,来匹配数以十万计的配送员和他们身边不断涌现的即时性的配送需求。这一点和滴滴和 Uber 都是相似的。

InfoQ:从达达官网提供的信息我们可以知道,达达的业务已经分布在非常广的区域。请问达达是怎么做服务的本地化的?

杨骏:从两个方面看这件事情。首先,我们的模式具有非常强的复制性的。互联网公司飞速发展的一个关键能力是低成本的扩张,就是说你能用非常低的代价非常快地复制自己。达达的商业模式和产品都能被迅速复制到一个新的城市,也就是说我们的可复制性很好。

其次每个城市在经济、互联网普及程度都不一样。我们在后台有一套很好的运营系统,可以对包括定价、配送时效等各种运营参数按城市级别进行配置,符合对每个城市的特点。具体实施时我们会和每个城市的的团队沟通,明确所在城市特殊的地方,同时快速在系统中做出修改和配置。我们把整个运营中所有的参数都做成了工具,很容易的由一个非工程师做配置,而不需要一个工程师做配置。

InfoQ:我们知道服务的可用性对于达达的业务来说是非常重要的,在技术方面达达是如何保证服务的“全天候”可用?

杨骏:首先是我们在数据库架构上做了非常多的优化,上面已经提及了。除此之外我们还做了服务的可降级化,也就是说在服务压力非常大的时候,我们能够牺牲掉一些不是核心的服务,保证核心业务的可用性。另外,我们还大量使用缓存,尽可能的让重复读写操作在缓存中被消耗掉,而不影响数据库。

除了上述两方面,我们还会通过一定的激励政策使团队中的每一个成员都去关注后台的稳定性。

InfoQ:刚才你说你们的主要业务都是基于云的,那开放平台会带来哪些不同?

杨骏:为了满足不同规模的商户,我们很早就创建了开放式平台 (OpenAPI)。通过这个平台,各类 O2O 电商可以很方便的实现和达达的系统对接,通过系统发出配送的需求,并完成订单跟踪、反馈、结帐等一系列动作。OpenAPI 让我们把线下的配送服务变成了线上的一系列标准化的 API。对于一些比较大的 O2O 电商,我们还会做很多定制服务,比如通过出仓扫码可以把出仓的动作直接反馈到我们平台上去,使双方的效率都得到了很大的提高。

InfoQ:您对 12 月份开幕的 ArchSummit 北京 2015 有什么寄语?

杨骏:一直在关注这个大会,大会为技术人员提供了一个很好的学习交流的平台。如果时间允许的话,我希望有时间去大会向国内的很多同行学习,也做一个交流。我之前一直在美国工作,我觉得在美国这十多年看到的情况是中国和美国的差距在迅速被缩小,甚至在某些领域已经出现了反超的情况。在商业模式上,其实中国有非常多创新的地方,同时在技术上我觉得两边的距离已经很接近,或者说几乎不可分辨了。我以前在美国也待过不少创业公司,他们的技术架构,和我今天在达达以及我所知道的中国其他这些公司的架构上没有什么区别,大家用的都是非常先进的技术,每次有新技术出现时都会很快的去采用。甚至中国在某些领域上,对于新技术的采用其实走在了美国一些公司的前面,因为中国新的公司非常多。其实我是很希望去那儿跟同行有一个很好的交流,也学习一下国内的很多经验。

2015-10-25 19:004998

评论

发布
暂无评论
发现更多内容

普通本科,毕业六年,复盘一个月,mybatis一级缓存和二级缓存面试题

Java 程序员 后端

月薪60k的Java开发在阿里是什么级别?对技术能力有哪些要求?

Java 程序员 后端

推荐这款牛掰的 API 敏捷开发工具,java程序设计教程课后题答案

Java 程序员 后端

提升开发效率N倍的20+命令行神器,赶紧收藏了,mybatis原理图

Java 程序员 后端

数据结构的栈和队列(这不进来看一看),计算机java语言入门

Java 程序员 后端

本科毕业斩获字节offer的我做了什么准备?大厂面试经验试题分享(1)

Java 程序员 后端

数据源的概念是什么?Springcloud+Mybatis如何使用多数据源

Java 程序员 后端

最新版SpringBoot开发实战:阿里技术官从基础到项目综合实战pdf

Java 程序员 后端

有个厉害的程序员老婆是什么体验?,mysql性能优化面试题

Java 程序员 后端

排除MySQL中常见错误的实用招术,什么是微服务扩展性和高可用、可扩展性

Java 程序员 后端

推荐一款技术人必备的接口测试神器:Apifox,不愧是大佬

Java 程序员 后端

数据库索引的原理,springcloud视频百度云

Java 程序员 后端

斯坦福高效睡眠法-读书笔记,这可能是目前最全的

Java 程序员 后端

最新基准测试:Kafka、Pulsar-和-RabbitMQ-哪个最快,阿里Java笔试题目

Java 程序员 后端

拼多多3面+余额宝4面+蚂蚁金服5面,Java自学宝典

Java 程序员 后端

数据结构系列第六部分:排序,Github爆火的《高并发秒杀顶级教程》

Java 程序员 后端

数论 - 约数基础 【 试除法求所有约数 + 约数个数和约数之和

Java 程序员 后端

新人问一般都用哪些 Linux 命令,我把这个扔了过去,linux基础及应用教程课后答案

Java 程序员 后端

拿捏了!ConcurrentHashMap!,宝塔linux建站教程

Java 程序员 后端

数据库中间件MyCat实战笔记(第一步),arm架构linux系统

Java 程序员 后端

是什么Java面试题PDF被Git全面封杀?刷完这套题已经拿完9个Offer!

Java 程序员 后端

是什么让普通的链表也能达到二分查找的效率,你知道吗?

Java 程序员 后端

最近被安排搞搜索接口优化,压测了4次,才勉强达到要求

Java 程序员 后端

拜读!程序员60K+高薪技术,spring整合mybatis原理

Java 程序员 后端

无论你是什么职业,这篇职场生存法则都是你必备的,java微服务架构技术

Java 程序员 后端

技术干货:单体,SOA,微服务,分布式,集群架构详解,java开发面试简历

Java 程序员 后端

技术站最全MySQL数据库实战规范,java程序语言基础王锦盛

Java 程序员 后端

抱歉!没有这 28 款插件的 Chrome 是没有灵魂的,mysql自增主键实现原理

Java 程序员 后端

数据库ACID四大特性到底为了啥,一文带你看通透,java支付宝支付接口教程

Java 程序员 后端

普通程序员就不能有拥有架构师光环?想要建立架构思维,这份京东架构技术精髓一定不能错过

Java 程序员 后端

服了!阿里资深架构师发布SpringCloud笔记,在GitHub标星已达81

Java 程序员 后端

达达CTO谈众包物流系统的复杂性_移动_龙永昕_InfoQ精选文章