目录
美团的商业模式是一种O2O(Online to Offline)的模式,通过网络平台和移动应用程序,为消费者提供餐饮、外卖、酒店预订、旅游、票务、本地服务等服务,并为商家提供在线销售和营销工具,通过收取佣金和广告费等方式盈利。美团的商业模式可以分为以下几个方面:
其主要业务通过线上平台,用户可以方便地查找、订购、支付本地的各种服务和商品,而线下商家则可以通过美团平台来扩大知名度和销售额。美团主要通过以下几种赚钱方式:
关于美团商业模式的内容见参考链接文献1-6获取更多的了解,本博客案例根据 ArchSummit 北京 2015 大会上美团网现任技术委员会主席夏华夏的演讲《从技术细节看美团架构》整理。
主要从美团技术架构演变、业务架构流程优化、在O2O背景结合美团业务技术优化三方面总结整理。更新的其他技术相关内容可看美团公开网站《美团技术团队》查看。
以华夏的演讲为背景,可以看到美团初期的架构演变简单如下图:
技术架构初期时候非常简单,是一个比较典型的LAMP 架构,前端加上Apache/PHP,后端是MySQL,一开始这种简单架构很好用,但当业务量大了之后,我们发现整个系统的性能跟不上了。然后就做了一些简单的优化,比如在Nginx 和Apache 之间加一些Varnish 缓存,在后端可能用Memcached 减少MySQL 的压力,这些都是缓存,整个架构还是没有太大的变化,还是一个优化了的LAMP 架构。
然后到2011 年的时候,美团开始做移动端,这时候架构还是没有太大的变化,只不过是在Apache 这种已有服务的API 前面又包了一层。就是在提供给PC 端的同时,我们也包了一层移动的API,这样我们可以继续给手机端的用户提供服务。这个时候其实也就是简单地把LAMP 架构做了一点点扩展,但是已经可以支撑很多用户和容量了。
美团一开始起步是个团购公司,后来开始扩展新业务,比如酒店业务、电影业务等,直到现在的美团外卖的业务。在上面架构基础上当我们去做很多不同业务的时候,我们发现做每一个业务似乎需要添加一些新的部分,这样一个部分一个部分堆积,对很多技术的同学来说,这是不能容忍的,那我们怎么去改进它呢?我们希望把中间的很多的公共的东西,与业务无关的东西抽取出来,形成一些公共的技术的组件,这样可以为很多的不同的业务来使用,发展到现在,形成这样一个看起来稍微复杂的架构。简单如下图:
所以在这种架构下面,当我们再要去做一个新的业务的时候,我们就关注在中间业务逻辑这一块就可以了,可以很快地去拓展新的业务逻辑,而且每一个人每一个团队,只关注真正最有价值的那一部分的软件开发,当然两边会有涉及运维和安全的工作。
当前的架构相对最适合美团现阶段的技术架构,那从一开始的最简单的LAMP,到现在可能我们分了很多很多个组件、很多很多层,这些架构看起来是非常不一样的。但是我们现在回想起来并不觉得说,原来的就不好,现在的就好。公司在发展的不同的阶段,一开始就最适合那种最简单的情况,如果说一开始美团2010年成立的时候就上这种很复杂的架构的话,那可能2010年底才把软件开发完,那时候上线已经有五千多家团购网站在线上了,所以这是不切实际的。所以整体来说,整个技术架构演变过程中,要时刻满足业务发展需求。
整个的架构里面,大量应用了一些开源的东西,从最初的LAMP架构的时候,包括MySQL、Apache,到现在一些很复杂的架构里面,比如搜索现在会用到Lucene,会用到Solr,在云主机、云平台这一块,会用到OpenStack的一些个组件,包括比如存储的Swift等等,开源产品拿过来当然会加速我们的这种开发的周期,但是开源产品我们也不仅仅是单单把它拿过来,因为任何一个开源的产品,如果要拿到一个比较复杂的业务里,你就会发现它不是那么匹配的,比如要与系统的集成,或者很多开源产品在大规模、高并发的情况下,考虑地并不是那么周到。
所以需要在开源的基础上做大量优化,一方面能让整个系统能更好地水平扩展,进行系统扩展和优化,同时也不断满足用户体验。
跳离演讲内容的讲解,从整体其他文献来看美团的技术架构演变是一个长期的历程,以下是大致的阶段和发展趋势(具体参考见参考链接6-7):
早期的美团只是一个比较简单的团购网站,技术架构也比较简单,主要关注如何快速地上线和迭代产品,采用了LAMP技术栈(Linux、Apache、MySQL和PHP)。
2012年,美团开始推出O2O服务,进入到新的领域,这也要求公司的技术架构能够支持更高的并发量和更复杂的业务流程。美团在这一阶段采用了一系列技术手段,如分布式存储、分布式缓存、消息队列等,来支持系统的高并发和高可用性。
2016年,美团开始大力发展数据智能和人工智能技术,以应对数据量的快速增长和业务的复杂性。为了支持大数据分析和处理,美团采用了分布式存储和计算框架,如Hadoop、Spark和Flink等,并推出了自研的大数据平台MPD(Meituan Big Data Platform)。
2018年,美团在上市后进入了平台化阶段,开始大力发展开放平台和生态系统,与第三方开发者和合作伙伴共建一个完整的生态系统。为了支持这一战略目标,美团提出了“三位一体”的技术架构思想,即“平台化技术架构、数据智能架构、基础架构和运营架构”。这一架构旨在构建一个高效、灵活、可扩展和安全的技术平台,支持不同业务线的快速迭代和创新。
业务架构对于电商来说是很复杂的生产系统,复杂业务架构的后果就是会让整个流程非常复杂,当流程复杂了,自然而然整体效率便会低下,所以要求技术团队需要不断地去优化业务架构,不断地让流程简单,让效率更高。
上述业务流程复杂举例包括但不限于以下场景:生产商谈单模块(谈单流程、在线上单、在线审核)、拉动新用户以及新商家的业务营销模块等、商品上单模块、订单营销会员等模块
这里,我们可以提供一套简单的业务架构优化方法论,简单如下:
一个很复杂的业务架构,我们希望对它做很多理解和梳理,梳理的过程中,我们就会发现一部分步骤其实是不需要的,可以省略的,这是一种简化;
还有一个就是,当我们梳理完了,发现每一个步骤都需要的时候,我们会尽量地把一个复杂的东西拆成很多比较小块的,易于把控的一些东西,这就是一个把复杂东西简单化的一个过程。
当把一个复杂的东西拆成了简单的小的东西之后,我们就容易地去对这个简单的模块简单的功能进行标准化。
所谓的标准化,就是去制订一个标准:这个东西该怎么做,应该实现什么目的,做了之后我们怎么去衡量。(就是我要去做什么,我怎么做,然后怎么去衡量。)
如果把每一个简单的东西都处理好了之后,这个简单的东西就成了一个标准的东西,标准的东西在很多时候就比较容易去推广,这就是标准化的过程。
如果整个的标准比较完善了,那我们就希望把这个标准固化下来,固化下来就是说整个的工作就会变成一个很简单的流程。
招几个新的员工,然后给他们一个手册,告诉他们,照着这个手册一步一步,第一步做什么,第二步做什么,第三步做什么,这就是流程化的东西。
让标准的时间流程化后,其实复杂的东西已经可以比较高效地往下运作了。
对于计算机来说,最擅长的东西就是处理这种简单的流程,所以我们如果做到流程化,就有了一个自动化的基础,我们可以用计算机来把这些固化的流程完成,这样最终就把复杂的事情能够尽量地做到自动化。
所谓单子就是比如一个餐馆售卖的东西,就是本地服务的一个产品,我们叫一个单子。
所谓上单就是销售同学和商家谈生意,最终要上到我们的整个网站里边。
整个流程,从签订合同开始,到最后用户能够看到这个单子,这之间的时间是 7 到 10 天,熬时过长并引流过慢,需要优化。
按以上流程优化后,销售团队填写合同直接填写指定表格数据,数据完成后系统会自动地审查生成一个单子,然后立刻可以给商家做确认,商家确认之后,就可以上线给用户了。这样以来就可以把中间的很多环节和步骤全部去除,同时节省很多编辑的同学和审核的同学,降低成本的同时可以促使整个的流程更加顺畅、高效、便捷。
跳离演讲内容的讲解,从整体其他文献来看美团的业务架构演变,美团的业务架构经历了从单一业务到O2O业务再到平台化业务的演变(具体参考见参考链接9-12):
早期的美团成立于2003年,最初是一家以团购为主要业务的网站。在餐饮团购业务上的成功,也让美团成为了中国领先的餐饮团购网站。
2012年,美团推出外卖业务,进入O2O领域,随后逐步拓展至其他领域,如旅游、酒店、电影等。在这一阶段,美团逐渐形成了以外卖为核心的多元化O2O业务模式,并通过整合供应链、建设配送体系等方式,打造了一整套O2O业务闭环。
2017年,美团上市,开始了平台化业务的阶段。这一阶段,美团将更多的精力放在了技术和平台的建设上,通过大数据、AI等技术手段来提高服务效率和用户体验。此外,美团还逐步推出了多元化的平台服务,如社交电商、云服务等,形成了一个以本地生活服务为核心的综合性服务平台。
O2O: Online+Offline,就是线下加线上。
明确技术不分线上、线下,需要贯穿线上线下。举两个例子看我们怎么去用技术来优化线下的一些东西,线上的就不举了,因为技术都是在优化线上的东西。
用如下两个案列分析应用,一个是在商家端,一个是在用户端,其实不管怎么样,我们在线下技术可以做很多很多的优化,让线下效率做很多的提升,正是所有这些一个一个的优化加起来就可以把美团整个的生产效率提升上去,把成本降下来,增强美团的竞争力。
主要经历阶段如下:
2013 年的 11 月 13 号美团外卖上线,最初的时候很原始,用户在手机 APP 上下单后,美团外卖相关人员(包括一些客服的同学和很多技术的同学)打电话通知商家产生一个订单,并说明订单信息(某某定了一个什么单子,然后他的地址是什么,电话是什么),商家用纸笔记下来,通知厨师做饭,饭做完后把小纸条给配送的同学,配送的同学给用户送外卖。但是一天从一单十几单到几百单,大家很快发现承受不了,单子增长很快,人力跟不上,商家也很痛苦,因为打电话的时候,很多的信息是说不准确的,他要记电话号码,如果记不清的话,他还要再打过来问刚才那个单子电话是什么,包括地址,有些地址字还比较难写。
解放自己,给商家开发一个 APP,每个商家使用APP获取接单信息。一旦有用户下单, APP 实时通知上架,这时候要求老板根据 APP 上的信息,拿张纸,找个笔,把它写下来,然后给厨师。但是商家的工作,他虽然抄得准确一点,不用从电话里抄,直接从 APP 上抄,但是还是要做大量的工作,包括这个小纸条传来传去,有的人写得笔迹不是那么清楚。
商家APP更版与打印机直接交互,一旦用户下单,打印机直接打印订单给到商家。商家不用花时间去写了,这时候就可以给厨师去做菜,厨师做完了交给配送员去送菜,这个就比较方便了。后来我们还是发现这个也不是很好,一般这个 APP 总是在老板那里的,如果说好几个人拿着 APP 会出现问题,好几个人拿的话,比如老板和老板娘都拿着,他们可能都去打,一个定单可能打了两份;或者说,有时候说老板拿着这个 APP,但是老板刚好不在,那他就打不了。有的店,他就不得不买一台电脑放在那,但是电脑对于很多小的外卖店,还是一笔额外的开销。因为现在手机上网的多,但是电脑上网的人已经很少了,还是对商家有很多不方便的地方。
所谓云打印机就是自己可以联网,联网方式多样,比如手机网络来联网或WiFi 联网,联网后,手机下单,美团后台服务器会把这个单子的信息直接推送到这个云打印机上,这个云打印机就像一个 POS 机那样,是一个很小的设备,会自动地打印出单子的信息,这样就大大得解放了我们美团的同学和商家的同学。
这是一个我们用技术来优化商家端这边的流程的一个例子。
在用户端的很多线下工作中其中常见的就是用户运营。其中美团“拉新”运营团队的主要任务是对一些已经注册了美团的帐号,在平台上过来逛了一圈,最后没买东西就走了,可能来逛了好几次,他还是没买。针对这种情况,美团方给用户 10 块钱、20 块钱等免费红包优惠活动,吸引用户完成首次的购买,活跃用户使用频次。但给用户很多免费来说,对于美团是薄利多销,利很薄,我们希望少花钱多办事,这个钱能少给就少给,能不给就不给,所以运营的团队希望技术同学优化。
我们先去分析这些用户到底是什么样的用户,发现用户有很多类:
对于第一象限除外的这部分用户其实不需要发券,发券对美团来说浪费钱了,那我们怎么去找到这部分用户?答案是做用户画像。
在美团其实有大量的用户的数据,可以看到用户什么时候注册的美团、从什么浏览器、从什么操作系统、去看了哪些单子、浏览了什么单子、做了什么搜索、用的是什么手机等,可以从这些数据给出用户画像:我们去判断用户的各种属性创建用户画像数据库,用户画像数据库创建后,对于运营同学的需求,我们会对用用户画像数据先做特征选择和提取,用一些分类模型分析,这样判断用户是不是真的我们需要的象限,准确度 75%,召回率能达到 68%。有了这个技术支撑,最后我们运营的单位成本,比如拉新运营的单位成本就可以降低 35%,总共的拉新运营开支就节省了 30%。所以这个就是我们在技术在线下的用户运营优化。
备注属性分析举例:
- 分析注册时的基本属性比如性别、年龄、邮箱等,比如说年龄这个属性可以做很多特征离散化,就是把一个属性离散成几百个甚至几万个放到机器学习模型中去训练一些模型
- 分析用户地理位置可以知道是一个学校用户-学生or一个工业园区的白领or金融街的金融界人士
- 分析用户邮箱看用户是 qq.com 用户或gmail.com 用户,他是两类不一样的用户,他所关注的东西,感兴趣的东西都不一样。
- 分析用户的收入水平和消费水平,收入水平可能根据他的职业、年龄、工作年限去判断高收入还是低收入,消费水平直接从查看单子和下单金额分析判断这个用户是倾向于最优惠的价格还是高质量商品。
- 分析用户浏览历史和搜索历史(包括统计搜索或浏览次数)可以知道其品类偏好,到底是喜欢美食,还是喜欢去看电影,还是喜欢去唱卡拉 OK
其与阿里巴巴实现方式基本相类似,主要总结如下(具体参考见参考链接13-16):
需要注意的是,用户画像是一个动态的过程,需要不断地更新和迭代,以适应用户的变化和市场的变化。
第一,技术架构是要随着业务的发展而不断地变化,不一定一个复杂完善的架构就是好的,而是看公司当前处在什么阶段,如果是一个初创的公司,那大家还是要小步快跑用一个简单有效的方案就行了。
第二,随着业务发展,可以在一些开源软件的技术上不断的优化,业务流程也不断的做一些优化,就是把复杂的东西简单化,简单的东西标准化,标准的东西流程化,流程的东西再自动化。
第三,技术不仅仅对线上有用,在线下的每一个操作里,要不停地看我们能做一些什么样的优化并为之努力。
第四,简单的事情要把它做到极致,就是真正做到极致就会有足够多的技术挑战、足够高的门槛。对于很多 O2O 创业的团队来说,他们做得事情看起来非常简单,但是只要不断地优化,不断地极致,不断地朝着极致去发展,就可以在竞争中胜出。
序号 | 具体链接信息 |
1 | 美团点评2020年年报 |
2 | 《O2O时代:如何理解O2O商业模式》 |
3 | 《中国O2O平台发展研究报告》 |
4 | 《美团点评:中国的O2O市场之王》 |
5 | 《美团外卖商业模式解析》 |
6 | 美团技术架构演变之路:https://www.infoq.cn/article/3zwe1epnukoxrtzv7wax |
7 | |
8 | 美团技术架构演进之路:https://www.jianshu.com/p/6840e2ca0a23 |
9 | 《美团点评十年:从餐饮团购到全场景服务》 |
10 | |
11 | 《从餐饮到生活服务:美团业务的演变和布局》 |
12 | 《美团2019年年报:从“吃”到“住行游购娱”全面升级,生活服务生态圈初现雏形》两高:不分国籍 依法严惩妨害国境卫生检疫各类违法犯罪行为|界面新闻 · 中国 |
13 | 美团科技,如何实现用户画像? |
14 | 美团点评使用用户画像技术提升广告效果:https://www.infoq.cn/article/meituan-uses-user-portrait-technology-to-improve-advertising-effectiveness |
15 | 从数据到用户画像,美团的用户管理之道 |
16 | 美团用户画像是如何做的? |
文章浏览阅读8.2k次,点赞12次,收藏69次。背景:在python中,有很多对象都可以通过for循环来对其中的每一个元素进行访问,比如list、dict、string等,这些对象被称为可迭代对象。什么是迭代器迭代器(Iterator)是访问集合内元素的一种方式,提供了一种遍历序列对象的方法。用来迭代操作对象,可以像列表一样,迭代的获取其中的每一个元素,任何实现了__next__方法的对象,都可以称之为迭代器。迭代器的特点__iter__方法返回迭代器本身;next()方法返回容器的下一个元素当没有下一个元素时,会报出St_python iterator
文章浏览阅读311次。因为这样能让你的评论靠得更前,这也容易被TikTok用户看到,从而点击你的主页,进而点击链接进入商店。卖家在介绍商品的时候,注意和用户的互动,提醒他们点击链接,将流量导入商店。电商卖家可以围绕商品创作热门视频,视频的曝光量和浏览量越高,越能吸引潜在消费者,引导他们点击链接,进入商店购买产品。首先在主页挂上商店链接,然后发布优质视频内容,增加视频曝光度,吸引用户点击主页链接进而进入你的商店。对视频进行SEO优化,优化你作品中的关键词,例如标签,描述等等,让你的作品更容易被用户搜索到。_tiktok引流
文章浏览阅读681次。源代码地址:链接:百度网盘 请输入提取码提取码:gtlz一、Demo介绍为了更深入的理解Jni编程知识,我们通过一个简单demo把相关知识用实际代码串起来,会有更清晰的认识。在这个demo中,涉及数组处理、字符串处理、类成员变量访问修改等内容,基本涵盖了常见的用法。 相关介绍 涉及文件 (java代码/xml布局文件) demo界面示例 主界面 点击button进入对应示例 s
文章浏览阅读666次。趁着周末,梳理一下前几周学的struts2,回顾起struts2,它和springmvc同是action层的解决方案,讲图书系统的同时,先让我们了解一下三层架构,以SSH框架为例。参考来源:http://blog.csdn.net/inter_peng/article/details/410217271.Action/Service/DAO简介:Action是管理业务(Service)..._用spring整合采用struts2开发的登录程序,实现同样的“图书管理系统”登录功能
文章浏览阅读1.4w次,点赞23次,收藏135次。更改predict.py的输出结果,输出label的真实坐标,保存图片和txt文档,图片中没有异物生成空的txt文档_yolov8 predict
文章浏览阅读9.7w次,点赞42次,收藏195次。ss_thread
文章浏览阅读245次。package test;import java.awt.Color;import java.awt.Font;import java.awt.Frame;import java.awt.Graphics;import java.awt.Image;import java.awt..._c语言小球碰撞后停止
文章浏览阅读1.5k次。问题描述:给定一个正整数,计算其各位数字之和。参考代码:程序运行无任何输出,表示两个函数结果一致。----------相关阅读----------1900页Python系列PPT分享一:基..._python输入一串正整数折半递归求和
文章浏览阅读2.3k次,点赞2次,收藏6次。在使用差分或者RSE方式时,由于信号负端不与AIGND连接,放大器的输入偏置电流有可能会使信号电压偏离测量设备的量程范围,所以需要在信号两端与AIGND之间分别加一个偏置电阻,从系统平衡角度而言,建议取等值的两电阻,阻值范围一般在10kΩ和100kΩ之间。无参考地单端(NRSE)连接方式的测量系统是对RSE连接方式的一种变形,各路信号共享一个基准点,而仪用放大器负极正是与这个公共基准点相连的,但并不与系统地相连,所以测得信号是以该基准点作为参考点的电压信号。这样可以实现信号地与系统地之间的隔离。_地开信号采集
文章浏览阅读810次。1.python/c++指定pathctrl+b编译ctrl+shift+b编译运行2.c++实现控制台输出使用批处理文件。本解决方法以C语言程序为例,编译器是gcc,我下载了MINGW直接解压到C盘根目录下,并设置了相应的PATH。其它编程语言可以按照这个思路适当修改批处理文件。新建两个批处理文件,一个名为runp.bat,内容如下:@ec_sublime python中如何用 c++
文章浏览阅读2w次,点赞15次,收藏66次。一、scatterscatter方法主要用来做散点图展示,而plot方法主要用来做折线图展示,也可以用于散点图的展示。两个方法的参数基本是通用的。以scatter方法为例,常用参数包括:plt.scatter( ['x', 'y', 's=None', 'c=None', 'marker=None', 'cmap=None', 'norm=None', 'vmin=None', 'vmax=None', 'alpha=None', 'linewidths=None', 'verts=&._python scatter marker
文章浏览阅读3.2w次,点赞39次,收藏399次。MQTT(消息队列遥测传输)是ISO 标准(ISO/IEC PRF 20922)下基于 **发布/订阅** 范式的消息协议。它工作在TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型消息协议。 *简而言之,MQTT其实就是一个用于TCP通信的消息协议而已。既然消息协议,"消息" 自然是表示MQTT其实本质就是消息,消息在某种理解上,可以理解报文,报文包,数据等等;既然是协议,自然表示它有着自己的规则,什么叫规则?就是规定这个消息该以怎样的**........_mqtt协议