第一章 拼多多诞生记:从水果拼团小网站到全民电商平台
2015年9月的一个周三下午,杭州某小学三年级二班的家长群里突然跳出来张老师发的消息:「各位家长,今天门口水果摊的奶油草莓当季刚上市,零售价15块钱一斤,我昨天跟摊主聊了,要是能凑够30斤整箱拿,批发价只要8块钱一斤,咱们班40个同学,要是都买半斤的话,零售要花300块,拼团的话每人只要4块,省下来的钱还能当班费买文具,有没有想拼的家长接龙?」不到10分钟,接龙就满了30斤,当天下午草莓就送到了学校,每个小朋友都拿到了又大又甜的草莓,还比平时买的便宜了一半。这是2015年秋天发生在杭州的一个真实的小故事,也是拼多多最早的核心玩法——「拼团」最生动的现实原型。
这个发生在班级里的小拼团,和拼多多2015年上线时的第一个功能一模一样:2015年9月,拼多多的第一个版本正式上线,首页唯一的品类就是草莓拼团,页面上没有复杂的分类、没有搜索框、没有推荐算法,只有一张新鲜的草莓图片、8元一斤的拼团价,以及两个大按钮:「开团」和「参团」。规则也和张老师的拼团一模一样:一个人开团后,需要至少邀请2个朋友参团,3个人凑齐后商家就会发货,要是24小时没凑够人数,团就会自动解散,钱退还给用户。整个产品极简到极致,甚至没有用户注册功能,只要微信授权就能登录,不用填任何信息。
做出这个极简产品的团队,当时只有十几个人,核心创始人是黄峥和陈磊。黄峥在创办拼多多之前,已经在互联网行业摸爬滚打了十几年:他曾经是谷歌中国的早期工程师,参与过谷歌中国搜索和广告系统的研发<sup>1</sup>,后来回国创办了电商代运营公司乐其,给宝洁、联合利华等国际大品牌做电商运营。在运营乐其的几年里,黄峥跑遍了全国的县城和农村,发现了一个很有意思的现象:一二线城市的消费者已经在淘宝、京东上买遍全球了,但三四线城市、县城和农村的消费者,要么买不到便宜的正品,要么买到的假货比真货还贵。
「那时候县城里的超市,一瓶宝洁的洗发水比杭州超市贵5块钱,一件名牌T恤贵20块,不是他们愿意多花钱,是中间商太多了,货从厂家运到县城,要经过省代理、市代理、县代理,每层都要加价,最后到消费者手里就贵了一大截。」黄峥后来在一次采访中回忆。除此之外,当时的电商平台对下沉市场也非常不友好:淘宝京东的物流只送到县城,村里的人拿快递要走好几公里,很多人甚至不会用支付宝,只会用微信支付,注册账号、绑定银行卡这些步骤对很多农村用户来说太复杂了。
黄峥当时就想:能不能做一个专门给下沉市场用户用的电商?不用复杂的操作,就用微信就能登录,用拼团的方式把同样的东西卖给更多人,拿到更低的批发价,还能砍掉中间商,让农户和消费者都受益?这个想法后来成了拼多多的核心逻辑,而第一个验证这个逻辑的品类,就是草莓。
<!-- 纸书:此处配图1-1 2015年拼多多首页截图,只有草莓拼团的简单页面 --> <!-- 电子版:<a href="#early-homepage">点击查看2015年拼多多首页高清大图</a> --> <!-- Markdown:标签:早期产品、拼团模式、下沉市场 -->
创业团队最缺的就是钱,当时拼多多只拿到了几百万的天使轮融资,服务器预算每个月只有1000块钱,根本买不起高大上的服务器。团队的技术负责人陈磊(后来成为拼多多的CEO)想了一个办法:找云服务商申请了3台入门级云服务器,每台的配置只有4核CPU、8G内存、1M公网带宽,一个月成本才300多块钱。很多人觉得3台服务器怎么可能撑得住10万用户?但陈磊做到了,靠的就是「极简」两个字。
我们先来看这3台服务器的具体分工,你可以把整个拼多多的技术架构想象成一个班级的小组织,每个人只干一件事,效率特别高:
```mermaid graph TD A[用户端<br>(微信/浏览器)] --> B[CDN节点<br>(静态资源缓存,相当于班级的「公共储物柜」)] B --> C[前端Web服务器<br>(Nginx,4核8G,相当于班级的「通知委员」)] C --> D[应用服务器<br>(PHP/Python,4核8G,相当于班级的「组织委员」)] D --> E[Redis缓存<br>(内存数据库,相当于桌面上的「草稿本」)] E --> F[数据库服务器<br>(MySQL,4核8G,相当于班级的「作业本」)] D --> G[微信支付接口<br>(跳转支付,不存支付数据,相当于班费的「代管老师」)] F --> H[商家发货系统<br>(订单同步给农户/商家,相当于「采购委员」)] ```
<!-- 纸书:此处配图1-2 早期拼多多技术架构示意图 --> <!-- 电子版:<a href="#tech-architecture">点击查看架构图高清版</a> --> <!-- Markdown:标签:早期技术架构、服务器分工 -->
第一台是「前端Web服务器」,装的软件叫Nginx,这个软件现在全球有超过30%的网站都在用,它特别轻量,处理静态页面的速度特别快,就像班级里专门发通知的生活委员,动作麻利不会耽误事。早期的拼多多页面只有HTML、CSS、草莓图片这些静态资源,没有现在这么复杂的动画和交互,所以这台服务器只需要负责把页面发给用户就行,压力特别小,10万用户访问的时候,它的CPU占用率从来没超过30%。而且团队还把图片、视频这些静态资源都放到了CDN(内容分发网络)里,CDN就像你在全国各地都放了小仓库,用户要拿图片的时候,直接从离他最近的仓库拿,不用从杭州的总服务器寄,速度能快好几倍,也减轻了前端服务器的压力。
第二台是「应用服务器」,是真正处理业务逻辑的地方,比如你开团、参团、系统判断有没有凑够3个人、扣库存这些逻辑,都是在这台服务器上跑的。早期团队用的是PHP和Python两种编程语言,这两种语言开发速度特别快,就像你用乐高搭积木,不用从零开始做,拿现有的模块拼一下就能用,特别适合创业团队快速试错:今天想加个苹果的拼团,明天就能上线,不用写太多代码。这台服务器上还装了一个叫Redis的内存数据库,你可以把它当成你桌面上的草稿本,要算题的时候直接拿过来用,比去书桌里翻练习本快多了。团队把热门的拼团页面、库存、用户信息都存在Redis里,不用每次都去查硬盘上的数据库,速度能快100倍:比如你打开草莓拼团页面,系统直接从Redis里拿价格和库存,只需要几毫秒,几乎感觉不到延迟。
第三台是「数据库服务器」,用的是MySQL,这个是开源免费的关系型数据库,就像你的作业本,放在书桌里,要交作业、查成绩的时候才拿出来,适合长期保存数据。早期的拼多多功能极简,没有搜索、没有推荐、没有用户画像,只有订单、用户、商品三类数据,10万用户的时候,整个数据库的大小才不到10G,比现在你手机里的一张高清电影还小,所以查询速度特别快,根本不会有压力。
很多人会问:3台入门级服务器,怎么可能扛得住10万用户?这里就有一个很多人不知道的细节:早期拼多多的用户不是同时在线啊!拼团的周期是24小时,大部分用户只是点开链接参个团,几秒钟就关掉了,同一时间访问服务器的用户最多也就几千人,而且大部分请求都能被Redis缓存挡住,不用去查数据库,每个请求的处理时间只有几毫秒,3台服务器完全够用。而且早期的拼多多没有搜索、没有推荐、没有复杂的算法,每个页面的请求量都特别小,根本不像现在的电商平台,要处理几百万个并发请求。
上线第一个月,拼多多的用户就突破了10万,第二个月破了50万,第三个月破了100万,这样的增长速度在当时的所有电商平台里都是最快的。我们可以用一个柱状图来看早期的增长数据:
```mermaid bar title 拼多多早期用户增长数据(2015.9-2015.12) x-axis 月份 y-axis 用户数(万) bar 9月:10 bar 10月:50 bar 11月:120 bar 12月:300 ```
<!-- 纸书:此处配图1-3 拼多多早期用户增长柱状图 --> <!-- 电子版:<a href="#growth-data">点击查看动态增长图表</a> --> <!-- Markdown:标签:用户增长、早期数据 -->
为什么增长会这么快?靠的就是拼团模式的社交裂变
增长会这么快?靠的就是拼团模式的社交裂变。我们可以把拼团的传播过程想象成你往平静的湖面扔了一块石头,石头激起的波纹会一圈一圈往外扩散,越传越远,最后整个湖面都会动起来。拼多多的早期增长就是这样的:第一个用户开团后,邀请2个朋友参团,这2个朋友觉得便宜,又各自开团邀请2个朋友,每轮传播用户数就会翻3倍,这就是我们常说的「裂变系数」——每个用户平均能带来的新用户数量。我们可以用一个简单的数学公式来计算这种指数增长的威力:$$N_t = N_0 \times R^t$$,其中$N_t$是t轮传播后的总用户数,$N_0$是初始用户数,R是裂变系数,t是传播轮次。比如早期拼多多的裂变系数R稳定在2.8左右,接近3,初始用户$N_0$是10万,经过3轮传播(也就是每个用户都邀请了2次朋友),总用户数就能达到$10万 \times 3^3 = 270万$,这就是为什么上线3个月就能突破100万用户的核心原因。
这种裂变模式在当时的所有电商平台里都是独一份的:淘宝京东是「搜索电商」,你得主动搜想要的东西,才会下单;而拼多多是「社交电商」,你不需要主动找商品,只要朋友分享链接给你,点进去参团就能买到便宜的好东西,操作步骤最多3步:点链接→支付→等发货,比淘宝京东的注册、登录、搜索、下单、支付5步流程简单了一半,对很多不会用智能手机的下沉市场用户特别友好。比如当时很多农村的老人不会用支付宝,但是会用微信支付,只要点开子女或者亲戚分享的链接,输个支付密码就能买东西,门槛极低。
创始团队的创业故事:13个人,3台服务器,从民宅里跑出来的电商平台
做出这个极简拼团产品的团队,当时只有13个人,全部挤在杭州西溪路边一个三室一厅的民宅里办公,没有独立的会议室,没有茶水间,甚至连前台都没有,黄峥的办公桌就放在进门的地方,谁来都能直接和他聊。核心创始人有三个人:黄峥是老板,负责战略和供应链;陈磊是技术负责人,后来成为拼多多的CEO;还有一个合伙人叫范洁真,负责用户运营,三个人都是黄峥之前在谷歌和乐其的老部下,默契度特别高。
黄峥在创办拼多多之前,已经在互联网行业做了12年:2004年加入谷歌中国,是谷歌中国最早的工程师之一,参与过谷歌搜索和广告系统的研发,后来跟着李开复回国创业;2010年创办了电商代运营公司乐其,给宝洁、联合利华、欧莱雅这些国际大品牌做淘宝、京东的店铺运营,每年流水做到几十个亿。在运营乐其的几年里,黄峥每个月都要跑好几次三四线城市的县城和农村,帮品牌做线下推广,他发现了一个非常矛盾的现象:一二线城市的消费者已经在淘宝京东上买遍全球了,但下沉市场的消费者要么买不到便宜的正品,要么买到的假货比真货还贵。
「2013年的时候我跑到河北的一个县城做推广,县城里最大的超市,一瓶宝洁的飘柔洗发水卖39块钱,比杭州超市贵了12块,一件李宁的T恤卖199,比杭州贵50块,不是他们愿意多花钱,是中间商太多了。」黄峥后来在一次内部分享里回忆,「货从厂家出来,先到省代理,加价20%,再到市代理,加价20%,再到县代理,加价20%,最后到超市,还要加价30%,到消费者手里就贵了快一倍。」除此之外,当时的电商平台对下沉市场也非常不友好:淘宝京东的物流只送到县城,村里的人拿快递要走3-5公里,很多人甚至不会注册淘宝账号,觉得流程太复杂,只会用微信支付,绑定银行卡这些步骤对他们来说门槛太高了。
黄峥当时就在想:能不能做一个专门给下沉市场用户用的电商?不用复杂的注册流程,微信就能登录,用拼团的方式把同样的东西卖给更多人,拿到更低的批发价,还能砍掉中间商,让农户和消费者都受益?这个想法后来成了拼多多的核心逻辑,而第一个验证这个逻辑的品类,就是草莓。
为什么选草莓?因为草莓是生鲜里最适合做拼团的品类:第一,草莓是季节性水果,当季产量大,价格低,农户急着卖,愿意给更低的批发价;第二,草莓是消耗品,买的人多,复购率高,适合做社交传播;第三,草莓重量轻,快递费便宜,物流成本低。2015年夏天,黄峥带着团队跑到山东烟台的大棚里,找了10多个草莓种植户,一家一家谈,最后谈成了3家供应商,直接和农户签协议,不用经过批发商,批发价只要2块钱一斤,比超市的进货价便宜了一半。
当时拼多多的第一个版本,是乐其内部的一个创业项目,团队只给了3个月的测试预算,如果3个月用户不到10万,项目就砍掉。团队一开始只做了草莓拼团一个功能,没有分类,没有搜索,没有推荐算法,页面只有一张草莓的大图,8块钱一斤的拼团价,两个大按钮:「开团」和「参团」,规则也特别简单:一个人开团后,需要至少邀请2个朋友参团,3个人凑齐后商家就会发货,24小时没凑够人数,团自动解散,钱原路退回。整个产品从设计到上线,只用了2周时间,代码量才不到1万行,比现在一个普通APP的启动页代码还少。
上线第一天,只来了100多个用户,都是乐其内部员工的亲戚朋友,第一天只卖出了10几斤草莓,团队都有点泄气,觉得是不是模式跑不通。结果第二天,有个杭州本地的美食博主在微博上发了拼多多的草莓拼团链接,说「比超市便宜一半,还新鲜」,一下子来了几万用户,当天就卖出了1000多斤草莓,3个种植户的库存当天就卖光了,黄峥当时看到后台的订单数据,激动得拍桌子,说「这个模式成了!」
极简技术架构的底层逻辑:3台服务器怎么扛住10万用户?
很多人听到「3台服务器扛10万用户」都会觉得不可思议,毕竟现在一个普通的公司官网都要好几台服务器,拼多多怎么做得到的?核心就是两个字:「极简」。早期的拼多多没有任何冗余的功能,所有设计都是围绕「支撑拼团核心流程」来的,没有任何多余的东西。
我们可以把整个技术架构想象成一个班级的小组织,每个人只干一件事,效率特别高,没有任何闲人:
```mermaid graph TD A[用户端<br>(微信/浏览器)] --> B[CDN节点<br>(全国分布式缓存,相当于班级的「公共储物柜」,全国各地都有小仓库)] B --> C[Nginx前端服务器<br>(4核8G,动静分离,相当于班级的「通知委员」,只发通知不干别的)] C -->|静态请求(图片/页面)| D[直接返回给用户<br>(90%的请求在这里被挡住)] C -->|动态请求(开团/参团)| E[应用服务器<br>(4核8G,PHP/Python,相当于班级的「组织委员」,只处理拼团逻辑)] E --> F[Redis内存缓存<br>(8G内存,相当于你桌面上的「草稿本」,常用的东西随手拿)] F -->|缓存命中(90%的请求)| G[直接返回数据给用户] F -->|缓存未命中(10%的请求)| H[MySQL数据库服务器<br>(4核8G,相当于班级的「作业本」,只存长期数据)] H --> I[返回数据给应用服务器] E --> J[微信支付接口<br>(跳转支付,不存支付数据,相当于班费的「代管老师」,钱直接给商家)] E --> K[商家发货系统<br>(订单自动同步给农户/商家,相当于「采购委员」,直接通知拿货)] ```
<!-- 纸书:此处配图1-2 早期拼多多技术架构示意图,标注每个组件的功能 --> <!-- 电子版:<a href="#tech-architecture">点击查看架构图高清版,还有每个组件的详细介绍</a> --> <!-- Markdown:标签:早期技术架构、服务器分工、极简设计 -->
第一台是「前端Nginx服务器」,它的核心工作只有两个:一是接收用户的请求,二是把静态资源(页面、图片、视频)直接返回给用户,根本不处理任何业务逻辑。团队把所有的静态资源都放到了CDN(内容分发网络)里,CDN相当于你在全国各地都放了小仓库,用户要拿草莓的图片的时候,直接从离他最近的仓库拿,不用从杭州的总服务器寄,速度能快5-10倍,也完全不用消耗服务器的带宽。早期拼多多的页面只有一张草莓图、几行文字,整个页面的大小才100多K,比现在一张手机照片的1/10还小,所以这台服务器处理10万用户的访问,CPU占用率从来没超过30%,就像你让一个生活委员只负责发通知,当然轻松。
第二台是「应用服务器」,这是唯一处理业务逻辑的地方,所有的拼团规则都在这里:你开团、参团、系统判断有没有凑够3个人、扣库存、生成订单,这些逻辑都是在这台服务器上跑的。早期团队用的是PHP和Python两种编程语言,这两种语言最大的特点就是「开发速度快」,就像你用乐高搭积木,不用从零开始做砖头,拿现有的模块拼一下就能用,特别适合创业团队快速试错:今天想加个苹果的拼团,明天就能上线,不用写太多代码。团队的核心拼团逻辑代码才200多行,比你现在写的一篇作文还短,所以处理速度特别快,每个请求只需要几毫秒,几乎感觉不到延迟。
这台服务器上还装了一个叫Redis的内存数据库,你可以把它当成你书包里的铅笔盒,常用的铅笔、橡皮直接放在铅笔盒里,要用的时候直接拿,不用翻整个书包,快多了。团队把最常用的数据都存在Redis里:热门拼团页面的价格、库存、已经开团的团信息、用户的基本信息,这些数据不用每次都去查硬盘上的数据库,速度能快100倍。比如你打开草莓拼团页面,系统直接从Redis里拿价格和库存,只需要2毫秒,几乎感觉不到延迟,只有当你支付成功、生成订单的时候,才会把数据写到硬盘的MySQL数据库里。
第三台是「MySQL数据库服务器」,相当于班级的作业本,只用来长期存数据,比如订单、用户信息、商品信息,这些数据需要长期保存,所以存在硬盘里,虽然速度慢一点,但是容量大,不会丢。早期的拼多多功能极简,没有搜索、没有推荐、没有用户画像,只有订单、用户、商品三类数据,10万用户的时候,整个数据库的大小才不到10G,比你现在手机里的一张高清电影还小,所以查询速度特别快,根本不会有压力。
很多人会问:3台入门级服务器,怎么可能扛得住10万用户?这里的关键是「请求的潮汐效应」:拼团的周期是24小时,大部分用户只是点开链接参个团,几秒钟就关掉了,同一时间访问服务器的用户最多也就几千人,而且90%的请求都是静态请求,直接被Nginx和CDN挡住了,只有不到10%的动态请求到应用服务器,其中90%的动态请求又被Redis缓存挡住了,只有不到1%的请求需要查数据库,3
很多人会问:3台入门级服务器,怎么可能扛得住10万用户?这里的关键是「请求的潮汐效应」:拼团的周期是24小时,大部分用户只是点开链接参个团,几秒钟就关掉了,同一时间访问服务器的用户最多也就几千人,而且90%的请求都是静态请求,直接被Nginx和CDN挡住了,只有不到10%的动态请求到应用服务器,其中90%的动态请求又被Redis缓存挡住了,只有不到1%的请求需要查数据库,3
台服务器的压力其实比你想的小得多。我们可以算一笔简单的账:10万用户里,假设每天只有10%的人会打开拼多多,也就是1万活