天天看點

美團大衆點評合并:背後技術力量的對比回顧【轉載+整理】

要是有這架構,局部代碼寫得再爛,那都不是問題~Google 就曾經說,如果采用 MapReduce,再爛的搜尋算法,也能很快得到結果~

美團網和大衆點評網在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等來保證資料的準确快速産生,而因推薦業務需要,美團還大量使用了機器學習。可見美團和大衆點評均具有實力強大的技術團隊,從雲架構和大資料來看,美團似乎更甚一籌,兩家公司合并實為強強聯合,至于後續會如何發展,還将拭目以待。