50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

美团大众点评合并:背后技术力量的对比回顾

  • 2015-10-14
  • 本文字数:3046 字

    阅读完需:约 10 分钟

美团网和大众点评网在 10 月 8 日中午联合发布声明,宣布达成战略合作,两者将共同成立一家新公司。两者也在 InfoQ 及其组织的大会上进行过多次分享,我们将对美团和大众点评使用的技术进行回顾,来看看这两家电商巨头的技术实力。

美团和大众点评都是国内 O2O 领域的主要参与者。除了团购外,美团还有自营的外卖、电影、酒店预订等业务。大众点评网最开始主要为用户提供各种生活信息服务,基于这些信息开发了团购等业务模式,近期它也开始涉足电影、酒店预订等业务。

由此可见,两者在业务上存在相当的重合,那么他们在公司成长的过程中又分别选取了什么样的技术发展路线?

技术对比

下面我们将从技术角度来看两者的异同,包括云架构,数据架构,前端,移动端,个性化推荐。

云架构

大众点评容器私有云

大众点评在 2014 年 7 月基于 Docker 搭建了私有云平台。2015 年 8 月份大众点评云平台首席架构师盛延敏在 InfoQ 主办的 CNUTCon 容器技术峰会上分享了它们容器私有云的实战内容。

Docker 的应用场景之一就是构建企业私有云平台,它具有简单轻量的特点,可以降低私有云的构建难度,也能更高效的利用物理资源。大众点评的私有云平台承担了大部分线上业务。实例数 2800 个左右,Docker 物理集群 300 多台。

大众点评原来的应用部署在 KVM 上,需要耗费很大运维时间和精力,特别对于扩容和缩容。搭建 Docker 私有云之后实现了应用标准化和运维自动化,从而节省了运维成本。

大众点评的 Docker 云底层使用 Docker,通过 Dockerfile,Docker Registry 统一管理应用的标准化运行环境。组件之间使用 NATS, 降低耦合。接入层使用 Nginx 和 Zookeeper。对于 WEB 应用,通过与 Nginx 的 Restful 接口交互;对于服务类应用,通过 Zookeeper 上注册和注销服务 IP 和端口,便于客户端发现和更新该服务。

美团云

美团网于 2013 年上半年发布了其公有云服务美团云。它们也在 InfoQ 上分享了公有云的研发经验

美团云最初版本起步于 2012 年 7 月,一开始构建的是私有云计算平台。2013 年 5 月,美团云对外提供公有云服务。美团云架构设计使用 OpenStack 的框架,网络架构参考 CloudStack,主要组件由自己开发,部分组件在 OpenStack 原生组件上进行了二次开发。

核心云主机管理为自研,采用 Region-Zone-Cluster 三层架构,支持跨地域,多数据中心的大规模集群部署。采用基于 KVM 的主机虚拟化和基于 OpenVSwitch+OpenFlow 的网络虚拟化技术,降低了系统的开发和维护成本。镜像管理使用 Glance;身份管理使用 Keystone;对象存储使用 Swift。

美团云在 2013 年 5 月刚上线时单月交易额 10 亿左右,2015 年 7 月单月突破 111 亿,对美团云系统和网络稳定性要求比较高,目前美团云支撑了超过两亿用户的高并发访问。并采用多个数据中心,数据中心之间使用光纤高速互联,确保美团云的可靠性。

数据架构

大众点评

大众点评在起步阶段,为了抢占市场,快速推出产品,采用方案比较简单。访问量大起来后,针对系统做了改进。大众点评的 DBA 经理苗发平曾在 InfoQ 分享大众点评的数据架构之道。新版本中引入了 Ehcache 作为一级缓存,Memcached 作为二级缓存,缓解数据库读压力,分布式文件系统 MogileFS 作为分布式图片存储服务解决海量图片存储,搜索引擎 Lucene,Nosql 数据库 MongoDB 作为 K-V 数据服务。后期引入 MySQL 数据库,并采用 Hadoop 集群管理。最新版本中为解决服务治理问题,引入“泳道架构与容错隔离”方案,来提供系统的高可用性。架构中使用 MySQL 高可用方案。通过 MMM 实现 HA 高可用,实现秒级故障转移。

美团

关于美团网的架构,美团网的技术委员会主席夏华夏在 InfoQ 主办的全球架构师峰会上分享了一些美团架构实践经验。美团初期使用 MySql+Apache/PHP, 随着业务增加,在开源软件的基础上做集成和优化,使用了 Memcache 和 Varnish,随后增加了 Redis。

初期架构图:

现在的美团整体架构图:

前端开发

大众点评是国内领先的城市生活消费指南网站,浏览量为 500M(GA)/ 每月,高峰 3000 次动态请求 / 每秒,180 万动态访问量 / 天。前端早期使用 ASP.NET+SQL server,独立的 web 和 Database 服务器。后来引进了 Cortex,基于 CommonJS 的 Web 开发环境

美团网采用 JS 框架,基于 YUI3 来构建,使用了 YUI 内部的 Loader、模块、组件框架等基本思路和工具,围绕 YUI 开发了自己的公共底层库、Combo 以及发布工具等。2014 年底,基于 React 开发页面组件,使用 NPM 进行分享,用 NPM+Reduce 构成新的资源管理方案。其后在 Node 框架的基础上,提供了一系列中间件和开发工具,逐步构建对组件友好的前端工程化方案 Turbo。

移动客户端

大众点评:

大众点评月综合浏览量(网站及移动设备)超过 150 亿,其中移动客户端的浏览量超过 85%,移动客户端累计独立用户数超过 2 亿。移动端是大众的业务重点。我们可以通过大众点评移动应用架构师屠毅敏在全球架构师峰会上关于大众点评移动应用的架构演进的演讲来一窥大众点评的移动开发技术。大众点评的移动架构主要关注三个方面:速度,灵活性,耦合。在速度方面优化 Http 协议减短响应时间,并进行了缓存优化。引入 NDK 以及 Hybrid App 进行开发。利用 Android DexClassLoader 进行动态加载。

美团:

美团手机移动端业务种类多差异大,为解决早期架构上的耦合场景问题,引入了 Portal 开源框架。并引入 Subtree 代码管理和 CocoaPods 第三方库依赖管理工具。并利用 Jenkins 进行持续集成。美团技术专家陈晓亮曾在 InfoQ 主办的 QCon 全球软件开发大会上针对美团移动平台背后的技术进行了演讲。

美团手机移动端架构图:

个性化推荐

大众点评:

大众点评网因应对大数据查询分析功能,从 2011 年开始使用 Hadoop,有 60 多个节点,700TB 容量,还有 2 个 HBase 线上集群。使用 Puppet 管理集群,之后由于业务需要,又自行开发了 Taurus 调度系统。并于 2012 年数据库仓库转向 Hadoop/Hive。在 2013 年建立主要的大数据架构后,大众点评上线了 HBase 应用,并引入 Spark/Shark 以提高 Ad Hoc Query 执行时间。整个大数据架构采用开源 + 自研的形式。

美团:

为解决信息过载,帮助用户快速找到所需,美团推出大数据推荐系统。美团推荐系统框架分为:数据层,触发层,融合过滤层和排序层。数据层用 Hadoop/Hive,HBase,MySql 和 Redis 作为数据存储,使用了 ETL 系统,Map/Reduce,Spark,Storm,Flume 作为数据产生。触发层利用各种触发策略如用户行为产生推荐的候选集,使用传统的 user based,item based 协同过滤算法进行融合筛选。排序层主要是利用机器学习的模型对触发层筛选出来的候选集进行重排序。

随着美团交易规模的逐步增大,积累下来的业务数据和交易数据越来越多。目前在美团的团购系统中大量地应用到了机器学习和数据挖掘技术。并且研究了基于机器学习方法的 POI 品类推荐算法。美团网的技术总监王栋曾以美团的智能化推荐为主题接受过 InfoQ 的采访。

总结

上面对云架构,前端,移动端,数据库,大数据的概况来看,在云架构上大众点评使用的是 Docker,而美团是采用 OpenStack+ 自研。前端和移动端因功能不同而不一致。数据库两者在前期都采用简单架构以满足初创公司快速发展,后因业务需要而不断采用新的开源技术。在大数据方面,均采用了 Hadoop,HBase,Spark,Storm 等来保证数据的准确快速产生,而因推荐业务需要,美团还大量使用了机器学习。可见美团和大众点评均具有实力强大的技术团队,从云架构和大数据来看,美团似乎更甚一筹,两家公司合并实为强强联合,至于后续会如何发展,还将拭目以待。

感谢徐川对本文的审校。

2015-10-14 04:4917386
用户头像
Tina InfoQ高级编辑

发布了 1780 篇内容, 共 1493.9 次阅读, 收获喜欢 4111 次。

关注

评论

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

字节跳动Dev Better技术沙龙成功举办,携手华泰分享Web研发效能提升经验

字节跳动终端技术

字节跳动 前端

如何实现一个延时队列 ?

领创集团Advance Intelligence Group

延时队列 Redis 数据结构 redis 底层原理

容器环境minor gc异常频繁分析

wgy

Java minor gc

太方便了,钉钉上就可完成代码发布审批啦!

阿里云云效

云计算 阿里云 钉钉 jenkins 代码

一加10 Pro和iPhone 13怎么选?

Geek_8a195c

LeetCode-168. Excel表列名称(java)

bug菌

LeetCode 7月月更

华为云ModelArts的使用教程(附详细图解)

逝缘~

华为 华为云 7月月更

被忽视的问题:测试环境配置管理

老张

软件测试 测试环境治理

OPPO 小布预训练大模型揭秘:可大规模工业化应用的十亿级模型

OPPO小布助手

AI 智能助手 预训练模型 预训练

什么是低代码开发?

AIRIOT

低代码 物联网 低代码,项目开发

五千字讲清楚团队自组织建设 | Liga 妙谈

LigaAI

团队管理 个人提升 敏捷开发管理 LigaAI 自组织协作

Python 入门指南之使用 Python 解释器

海拥(haiyong.site)

7月月更

PingCode 性能测试之负载测试实践

PingCode研发中心

软件测试 PingCode

Numpy 的仿制 2

祖维

c slice Numpy

输入的查询SQL语句,是如何执行的?

华为云开发者联盟

MySQL sql 开发 语句

你可能不知道,我是如何将一个老系统的kafka消费者服务的性能提升近百倍的

Java全栈架构师

Java kafka 程序员 面试 架构设计

DeFi生态NFT流动性挖矿系统开发搭建

薇電13242772558

NFT DeFi流动性挖矿

2022年国内云管平台厂商哪家好?为什么?

行云管家

云计算 云管平台 云管平台厂商

第十八届IET交直流输电国际会议(ACDC2022)于线上成功举办

E科讯

LeaRun.Java快速开发平台 高效代码自动化生成

力软低代码开发平台

图像检索(image retrieval)

Geek_e369a5

图像搜索 图像检索

同事悄悄告诉我,飞书通知还能这样玩

Jianmu

自动化 建木CI 飞书通知 定时

激进技术派 vs 项目保守派的微服务架构之争

BoCloud博云

微服务 微服务架构 云原生 istio 服务网格

NBA赛事直播超清画质背后:阿里云视频云「窄带高清2.0」技术深度解读

阿里云CloudImagine

音视频 直播 视频编码

TCP两次挥手,你见过吗?那四次握手呢?

C++后台开发

网络编程 网络协议 TCP/IP 后端开发 C++开发

uni-app与uviewUI实现仿小米商城app(附源码)

优秀的李

小程序 uniapp 7月月更 uviewui

能源行业的数字化“新”运维

博睿数据

AIOPS 智能运维 博睿数据 能源行业

DataKit——真正的统一可观测性 Agent

观测云

【Unity UGUI】ScrollRect 动态缩放格子大小,自动定位到中间的格子

萧然🐳

游戏开发 Unity ScrollView 7月月更 UGUI

智捷云——元宇宙综合解决方案服务商

智捷云

区块链 元宇宙 智捷云 区块链技术开发

Nebula Importer 数据导入实践

NebulaGraph

图数据库 数据导入 Nebula Graph

美团大众点评合并:背后技术力量的对比回顾_移动_Tina_InfoQ精选文章