QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

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

  • 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:4916757
用户头像
Tina InfoQ高级编辑

发布了 1540 篇内容, 共 1175.3 次阅读, 收获喜欢 3869 次。

关注

评论

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

深度学习公式推导(3):初探神经网络

老崔说架构

IPv6邻居发现协议详解

穿过生命散发芬芳

NDP 8月月更

把充电宝拆了看看

Sher10ck

拆解 充电宝

开源一夏 | Node.js实战对于Buffer和Stream模块系统的深入剖析

恒山其若陋兮

开源 8月月更

每日一R「09」类型系统(三)

Samson

8月月更 ​Rust

【Java】:数组的创建、赋值、访问以及长度

翼同学

Java 学习 编程语言 分享 8月月更

打破底层技术瓶颈,RTC技术或成为物联网市场的强劲引擎

擎声科技

物联网 RTC sdk 实时音视频 擎声Qtt

HTML

武师叔

8月月更

新书上市 | 连载 5 年,千万读者追更,这本书讲透了通信背后的故事!

图灵教育

5 分钟温故知新 RxJS 【转换操作符】

掘金安东尼

前端 函数式编程 8月月更

ABAP工作进程对数据库表读取操作的检测

汪子熙

数据库 SAP abap Netweaver 8月月更

关于 SAP ABAP 字符变量和字符串变量字符个数的一个知识点

汪子熙

字符串 SAP abap Netweaver 8月月更

【Django | 开发】面试招聘信息网站(快速搭建核心需求)

计算机魔术师

8月月更

短视频源码APP开发——短视频的功能

开源直播系统源码

软件开发 直播系统源码 短视频直播系统

从函数计算到 Serverless 架构

阿里巴巴中间件

阿里云 开源 Serverless 云原生

程序员面试太卷?我选择背这份阿里最新Java面试八股文(详解版)

Java面试那些事儿

Java 面试 Java 面试 java程序员 java 编程

[极致用户体验] 网页里的「返回」应该用 history.back 还是 push ?

HullQin

CSS JavaScript html 前端 8月月更

字节跳动嵌入式数据分析最佳实践

字节跳动数据平台

字节跳动 数据分析 BI 嵌入式分析 数据看板

避免 10 大 NGINX 配置错误(下)

NGINX开源社区

nginx 配置 配置分析 故障排除

开源贡献者计划 2022 第二期正式启动!争做战“码”先锋!

InfoQ写作社区官方

开源 OpenHarmony 热门活动

RocksDB在大规模分布式系统应用中的经验

CnosDB

时序数据库 开源社区 CnosDB 工程师有话说 CnosDB Tech Talk

头脑风暴:最长递增子序列

HelloWorld杰少

算法 LeetCode 数据结构, 8月月更

微服务的拆分与设计原则

阿泽🧸

微服务 8月月更

C++继承中的多继承语法与菱形继承

CtrlX

c c++ 面向对象 继承 8月月更

openEuler代码贡献之星:麒麟软件裴建康

openEuler

开发者 成长 代码规范 openEuler 开源社区

个推TechDay直播预告 | 8月24日晚19:30,实时数仓搭建保姆级教程开课

个推

数据仓库 实时数仓 Flink 平台

百炼成钢 —— 声网实时网络的自动运维丨Dev for Dev 专栏

声网

Dev for Dev 自动运维

【源码解析】MyBatis结果集映射和参数绑定

小明Java问道之路

源码解析 mybatis源码 mybaits 深度 8月月更

C语言基本的窗口开发

计算机魔术师

8月月更

leetcode 303. Range Sum Query - Immutable 区域和检索 - 数组不可变(简单)

okokabcd

LeetCode 算法与数据结构

HPC、AI与云计算:当智能时代三叉戟在亚马逊云科技完美融合

脑极体

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