主頁 > 知識庫 > 剖析美團的以Python為主導的云平臺發(fā)展戰(zhàn)略

剖析美團的以Python為主導的云平臺發(fā)展戰(zhàn)略

熱門標簽:地圖標注不顯示 金蘭灣地圖標注app 河南語音外呼系統(tǒng)平臺 福州公司外呼系統(tǒng)加盟 周口權(quán)威的不封卡電話外呼系統(tǒng) 河北crm外呼系統(tǒng)平臺 百應(yīng)電話機器人價值 外呼系統(tǒng)2273649Z空間 南京400電話辦理到易號網(wǎng)

獨立出來的美團云業(yè)務(wù)部目前有十幾位工程師。雖然部門獨立,但工作中仍然跟系統(tǒng)運維組有緊密的配合。美團系統(tǒng)運維組原本就有三分之二的開發(fā)工程師,而運維工程師也全部具備編寫代碼的能力,因此開發(fā)與運維工程師能夠進行緊密的配合。

相關(guān)廠商內(nèi)容

美團云的最初版本起步于2012年7月,一開始是作為私有云計算平臺來構(gòu)建。第一版開發(fā)了大約2個月的時間,之后用了大概10個月的時間將美團的所有業(yè)務(wù)遷移到云平臺上?,F(xiàn)在除了Hadoop、數(shù)據(jù)庫仍跑在物理機上之外,美團網(wǎng)的所有業(yè)務(wù)都已經(jīng)運行在美團云上,內(nèi)部的研發(fā)、測試平臺也運行在美團內(nèi)部的辦公云平臺上。

2013年5月,美團云開始對外提供公有云服務(wù),截止到目前僅對外提供云主機產(chǎn)品。對象存儲、Redis、MySQL、負載均衡、監(jiān)控、VPC等服務(wù)也在研發(fā),部分產(chǎn)品已經(jīng)在內(nèi)部以及部分測試客戶使用,未來會根據(jù)產(chǎn)品的成熟度和客戶的需求程度逐步對外開放。

穩(wěn)定是公有云服務(wù)的核心價值。自從公有云服務(wù)開放以來,美團云主要的工作都放在提升云主機的穩(wěn)定性,完善云主機模板、備份、監(jiān)控、安全等工作上。預計在2014年9月,美團云將發(fā)布其第三個版本的更新,繼續(xù)打磨其產(chǎn)品細節(jié)。

技術(shù)架構(gòu)

美團云最初選型的時候?qū)penStack、CloudStack、Eucalyptus都做過調(diào)研,調(diào)研的結(jié)果是架構(gòu)設(shè)計使用OpenStack的框架,網(wǎng)絡(luò)架構(gòu)參考CloudStack,主要組件由自己開發(fā),部分組件在OpenStack原生組件上進行了二次開發(fā)。

核心的云主機管理系統(tǒng)是自己研發(fā),沒有使用Nova。采用Region-Zone-Cluster三層架構(gòu),支持跨地域、多數(shù)據(jù)中心的大規(guī)模集群部署。采用了基于KVM的主機虛擬化和基于OpenVSwitch+OpenFlow的網(wǎng)絡(luò)虛擬化技術(shù)。
鏡像管理用了Glance。有一定修改,例如,多數(shù)據(jù)中心分布式支持,以及鏡像替換。
身份管理用了Keystone。有一定修改,例如,高并發(fā)性能改進,與美團帳戶系統(tǒng)的集成。
對象存儲用了Swift,但Swift在寫延遲方面存在性能問題,同時在OAM方面的功能比較薄弱,所以也做了一些修改和研發(fā)。Swift現(xiàn)在已經(jīng)在為美團網(wǎng)內(nèi)部存儲量幾十TB量級的業(yè)務(wù)提供服務(wù)。
之所以沒有整個引入OpenStack,是因為當時調(diào)研時,感覺OpenStack的設(shè)計比較脫離美團的實際情況。例如,網(wǎng)絡(luò)架構(gòu)需要有較大的調(diào)整,同時需要有共享存儲的支持。當時對美團來說,現(xiàn)有業(yè)務(wù)的基礎(chǔ)設(shè)施已經(jīng)基本固化,為適應(yīng)OpenStack而做這樣的調(diào)整基本不可接受。另外,OpenStack在很多細節(jié)方面達不到需要的級別。比如,OpenStack對跨機房多Zones的設(shè)計,它假設(shè)你機房之間的網(wǎng)絡(luò)是完備的,這也不太符合我們的網(wǎng)絡(luò)現(xiàn)狀。因此,我們基于美團現(xiàn)有的主機使用模式和網(wǎng)絡(luò)架構(gòu),重新設(shè)計了網(wǎng)絡(luò)、存儲和主機管理模型,自主研發(fā)了虛擬化管理平臺。同時,我們在從單機房做到多機房的時候,在Zones之間做了解耦,比如在每個機房里都放置Glance服務(wù)節(jié)點,減少對跨機房網(wǎng)絡(luò)的依賴。正是由于這些研發(fā)工作,使得我們經(jīng)過不到一年時間的磨練,就實現(xiàn)了美團整個基礎(chǔ)設(shè)施完全運行在私有云上的目標。

當然,由于我們不使用Nova,就意味著OpenStack社區(qū)的很多依賴Nova的組件和功能我們基本無法直接使用。不過,相對于OpenStack大而全/兼容并包的架構(gòu),我們堅持在每一方面都集中精力用好一種技術(shù),如主機虛擬化使用KVM,網(wǎng)絡(luò)虛擬化使用OpenVSwitch+OpenFlow,使得整個系統(tǒng)的開發(fā)和維護成本相對較低,同時能深挖這些技術(shù)方案的功能特性,最大限度地壓榨硬件性能。同時,由于我們掌握了基礎(chǔ)系統(tǒng)的代碼,使得我們可以較高的效率添加一些新的業(yè)務(wù)功能(例如,對虛擬IP,USB KEY的支持等),以及實現(xiàn)系統(tǒng)架構(gòu)的升級改造(例如,對多機房架構(gòu)支持等)。另外,我們對使用的OpenStack組件做的一些修改,比如對Swift的優(yōu)化,目前技術(shù)委員會也在提議如何回饋給上游社區(qū)。當然了,這個還需要看社區(qū)對我們的patch接受與否,而我們也還是以滿足業(yè)務(wù)需求優(yōu)先。

其他方面,塊存儲落在本地的SAS盤上并在本地做RAID。目前我們對美團網(wǎng)自己的業(yè)務(wù)做RAID5,對公有云用戶做RAID10。這是考慮到美團網(wǎng)自己的業(yè)務(wù)在應(yīng)用層已經(jīng)做了較完備的高可用設(shè)計的,即使掉了單個節(jié)點也不會影響到業(yè)務(wù);但對于公有云用戶而言,他們用的那一臺云主機就是一個單點,所以要對他們的云主機做更好的保護。使用RAID10當然成本會比較高。我們也在考慮共享存儲,當然前提是先解決了上面的穩(wěn)定性和性能問題。以后會使用SSD,使塊存儲的性能有更大的提升。

網(wǎng)絡(luò)方面做了分布式設(shè)計,主機上用了OpenFlow,通過OpenFlow修改二層協(xié)議,讓每個用戶擁有一個獨立的扁平網(wǎng)絡(luò),跟其他用戶的網(wǎng)絡(luò)隔離。通過DNS虛擬化技術(shù),使得不同的用戶可以在各自的私有網(wǎng)絡(luò)上使用相同的主機名字,并在每個宿主機上部署分布式DNS和DHCP以實現(xiàn)基礎(chǔ)網(wǎng)絡(luò)服務(wù)的去中心化。

運維

美團云的運維思路跟整個美團的運維思路是一致的。下面介紹的運維思路既適用于美團云,也適用于整個美團網(wǎng)。

運維框架可以概括為五橫三縱。從橫向來看,自底向上分為五個層次:

物理層,包括機房網(wǎng)絡(luò)、硬件設(shè)施。我們已在開展多機房和城域網(wǎng)建設(shè),從最底層保證基礎(chǔ)設(shè)施的穩(wěn)定性。為了應(yīng)對大規(guī)模機房建設(shè)帶來的運維成本,我們實現(xiàn)了Baremetal自動安裝部署的Web化管理,從服務(wù)器上架之后,其他工作均由自動化完成,并可以和虛擬機一樣管理物理機。
系統(tǒng)層,包括操作系統(tǒng)、虛擬化。我們在虛擬化基礎(chǔ)之上采用了模板化(鏡像)的方式進行管理,也對Linux內(nèi)核做了一部分定制開發(fā),例如針對OVS的兼容性做了優(yōu)化。
服務(wù)層,包括Webserver、緩存、數(shù)據(jù)庫等基礎(chǔ)服務(wù)。我們基于Puppet工具做了統(tǒng)一配置管理,有自己的軟件倉庫,并對一部分軟件包做了定制。統(tǒng)一配置管理的好處,一方面是避免不一致的修改,保證集群的穩(wěn)定性,另一方面是提高運維效率。
邏輯層,包括業(yè)務(wù)邏輯、數(shù)據(jù)流。這一層的主要工作是發(fā)布和變更。在很多其他公司,業(yè)務(wù)的發(fā)布上線、數(shù)據(jù)庫的變更管理都是由運維來做,我們認為這樣對開發(fā)、運維的協(xié)作成本較高,所以一直往開發(fā)人員自助的方向做,通過代碼發(fā)布平臺、數(shù)據(jù)庫變更平臺實現(xiàn)開發(fā)和運維工作的輕耦合。在發(fā)布平臺中,每個應(yīng)用對應(yīng)獨立的集群,有一位開發(fā)作為應(yīng)用owner有最高權(quán)限,有多位開發(fā)作為應(yīng)用的成員可以自助發(fā)布代碼。數(shù)據(jù)庫變更平臺也有類似的權(quán)限控制機制,并在任務(wù)執(zhí)行層面有特殊的穩(wěn)定性考慮,例如將大的變更任務(wù)自動調(diào)度到夜間執(zhí)行,對刪除數(shù)據(jù)表的任務(wù)在后臺先做備份。
應(yīng)用層,包括用戶可見部分。除了跟邏輯層有類似的發(fā)布和變更之外,我們有統(tǒng)一前端平臺,實現(xiàn)訪問流量的進出分離、行為監(jiān)測和訪問控制,這對于整體的安全性有很大的好處。
從縱向來看,有三部分工作,對上述五個層次是通用的:

監(jiān)控。從物理層到服務(wù)層的監(jiān)控和報警都是運維來跟進、響應(yīng)的。對于邏輯層和應(yīng)用層,也是開發(fā)人員自助的思路,運維提供監(jiān)控API的規(guī)范,開發(fā)可以自己創(chuàng)建監(jiān)控項、設(shè)定報警規(guī)則、進行增刪改查。監(jiān)控報警之后的處理,現(xiàn)在有些做到了自動化,有些還沒有。尤其是有些基礎(chǔ)架構(gòu)和業(yè)務(wù)之間的縱向鏈條還沒有打通,包括建立業(yè)務(wù)容量模型,某種特定的業(yè)務(wù)形態(tài)在多少用戶的情況下最高負載多少,不同負載等級下的SLA應(yīng)該是多少,等等,這些模型都建立起來之后就能夠進行自動化的處理。
安全。我們很早就部署了統(tǒng)一的安全接入平臺,所有線上的人工操作都需要登陸relay跳板機,每個人有獨立的登陸帳號,所有線上操作都有審計日志。更多的安全工作由專門的信息安全組負責。
流程。早期基于Jira做了一些簡單的流程,但仍需要改進?,F(xiàn)在正在針對比較集中的需求,開發(fā)相應(yīng)的流程控制系統(tǒng),方向也是自動化、自助化。從業(yè)務(wù)部門申請VM資源,到業(yè)務(wù)擴容的整個流程,我們正在進行上下游的打通,未來可以在Web界面上通過很簡單的操作實現(xiàn),也提供服務(wù)化的API,方便其他業(yè)務(wù)平臺進行集成。虛擬化覆蓋全業(yè)務(wù)線之后,這些事情做起來都變得很方便。
總之,美團網(wǎng)整體的運維思路就是:保證業(yè)務(wù)穩(wěn)定運行,同時推動全面自動化、自助化。涉及開發(fā)、運維溝通協(xié)作的部分,盡可能通過自動化平臺的方式,由開發(fā)人員自助完成。運維人員除了基礎(chǔ)環(huán)境、平臺建設(shè)之外,幫助業(yè)務(wù)進行高可用架構(gòu)的梳理,提高代碼的可運維性,以及定位和解決業(yè)務(wù)中的各類問題。

改進與演變

美團云從對內(nèi)服務(wù)開始到現(xiàn)在兩年以來,最大的一次改進就是從單機房到多機房的建設(shè),這是跟美團網(wǎng)的城域網(wǎng)建設(shè)同步開展的。

單機房的時候,美團網(wǎng)業(yè)務(wù)早期曾遇到過運營商網(wǎng)絡(luò)中斷幾小時的情況,期間業(yè)務(wù)不可用,非常痛苦。多機房冗余做到最理想的情況下是,即使一個機房整個斷電了,業(yè)務(wù)也不受影響,當然這就意味著需要100%的冗余量,成本是比較高的。不過對于美團網(wǎng)來說,冗余的成本是很愿意承擔的,因為業(yè)務(wù)不可用造成的損失要大于做這些冗余的成本,所以我們現(xiàn)在物理資源都留有50%的冗余,帶寬一般會預留30%的冗余。

因為美團網(wǎng)的發(fā)展速度很快,去年我們一度遇到資源不夠用的情況,在這上面踩了很多坑之后,開始做一些長遠規(guī)劃?,F(xiàn)在美團網(wǎng)業(yè)務(wù)的雙機房冗余已經(jīng)實施了一部分,美團云也有兩個機房,如果公有云客戶的業(yè)務(wù)支持橫向擴展,那么也可以做跨機房部署。這種機房級高可用做好了,對穩(wěn)定性又是一個很大的提升,大大減少網(wǎng)絡(luò)抖動對業(yè)務(wù)的影響,可用性SLA可以從現(xiàn)在的4個9做到更高。有些規(guī)模比較大的客戶對服務(wù)質(zhì)量會有比較高的需求,所以美團的城域網(wǎng)、以及未來的廣域網(wǎng),也會共享給我們的公有云客戶。

另外上面說到我們數(shù)據(jù)庫跑在物理機上,這一塊現(xiàn)在用的是SSD,讀寫性能頂?shù)蒙显缙诘娜_15000轉(zhuǎn)SAS,瓶頸在千兆網(wǎng)卡上,所以我們現(xiàn)在也在做萬兆網(wǎng)絡(luò)的升級改造。數(shù)據(jù)庫服務(wù)以后也會開放給公有云用戶使用,基礎(chǔ)設(shè)施跟美團自身業(yè)務(wù)一致。

未來的計劃

由于使用本地存儲,所以現(xiàn)在虛擬機遷移需要在夜間進行,以減少對用戶服務(wù)的影響。為了提高服務(wù)的可用性,在確保穩(wěn)定性和性能的前提下,共享存儲是一個不錯的選擇,所以我們正在測試萬兆網(wǎng)絡(luò)下的共享存儲方案。另外,我們底層虛擬化機制用的KVM,本身是沒有熱插拔的功能,這也是我們計劃要做的一件事。

現(xiàn)在很多客戶問我們,什么時候出Redis,什么時候出云數(shù)據(jù)庫,一些客戶對Redis和MongoDB會有需求,Web服務(wù)想要MySQL。我們的計劃是由DBA團隊提供一些模板,相當于是一些專門針對Redis/MySQL做好優(yōu)化的系統(tǒng)鏡像,讓客戶可以直接拿來用。這可能會在下一個版本release的時候推出。

我們還會提供一些基礎(chǔ)架構(gòu)的咨詢服務(wù),這個咨詢服務(wù)一方面是工程師提供的人工服務(wù),另一方面是以工具+文檔的形式,以互聯(lián)網(wǎng)的方式將我們的最佳實踐共享出去。美團網(wǎng)做到現(xiàn)在的幾百億規(guī)模,內(nèi)部有很多經(jīng)驗積累,如果能把這些積累傳遞給我們的客戶,能夠幫助客戶少走很多彎路。

美團云的架構(gòu)

    美團云的前端后臺使用的框架是Django,主要處理Web業(yè)務(wù)相關(guān)的邏輯,Django的社區(qū)支持比較豐富,文檔健全,本身功能也比較強大。然而有些特性似乎比較多余,比如說Django的很多“黑魔法”是用數(shù)據(jù)庫外鍵實現(xiàn)的,但是美團內(nèi)部有自己的一個DBA團隊,負責審核所有項目的數(shù)據(jù)庫設(shè)計,他們則要求不允許用外鍵,據(jù)說是因為最佳實踐得出的經(jīng)驗。

    后端整個云平臺的框架也是用Python實現(xiàn)的,在底層包括虛擬化計算、網(wǎng)絡(luò)、存儲三大功能體系,上層則分為資源管理、任務(wù)調(diào)度、日志、監(jiān)控、用戶管理、通知報警、API、用量計費等模塊,同時在垂直方向上,又包括關(guān)系型數(shù)據(jù)庫服務(wù)、緩存服務(wù)、對象存儲服務(wù)、負載均衡服務(wù)、模板和快照服務(wù)、虛擬專用網(wǎng)絡(luò)服務(wù)等。盡管后端的業(yè)務(wù)不盡相同,但架構(gòu)師們抽象出了一套處理工作流的邏輯,并且用Python實現(xiàn)了一個框架。比如,在消息通信機制的選擇上,美團云沒有采用類似OpenStack的采用消息隊列Rabbitmq的方案,而是采用了Webserver,主要原因是考慮到Web server在更加久經(jīng)考驗,業(yè)界對HTTP協(xié)議有著更加成熟的方案。

    美團云團隊深度定制了Tornado,將它由單線程、異步回調(diào)的機制修改為同時支持多線程和同步查詢的機制。這主要是考慮到在關(guān)系型數(shù)據(jù)庫的查詢上(比如MySQL),沒有較成熟的異步查詢方案,而單線程的阻塞查詢則會影響Tornado的主線程。通過精巧的代碼整合,將Tornado與SQLAlchemy這樣的數(shù)據(jù)庫ORM集成在一起,成功地解決了數(shù)據(jù)庫的問題。同時針對SQLAlchemy的特性進行了一些設(shè)置,比如關(guān)閉Auto-Commit,這樣能夠使得ORM不會在每次查詢的時候都會發(fā)出網(wǎng)絡(luò)連接,而是在一個線程的業(yè)務(wù)邏輯里將所有的修改操作hold住,只允許查,在線程結(jié)束的時候手動commit,關(guān)閉session,提交所有的修改。通過這種方式,實現(xiàn)了一個線程級別的數(shù)據(jù)庫事務(wù)鎖和對象鎖,使得程序員們能在一個線程的邏輯里面同時查詢和修改多個數(shù)據(jù)庫表,同時保證業(yè)務(wù)的原子性。陳博說“通過這些框架,程序員們在開發(fā)上層業(yè)務(wù)的時候也感覺到更加便捷了。”

    聽眾對演講反應(yīng)熱烈,表示受益匪淺,也對美團產(chǎn)生的敬佩之情。美團能發(fā)展到今天這般規(guī)模,其技術(shù)能力不容小覷。”當然,這些只是美團云整個技術(shù)的冰山一角。美團是中國第一大的O2O電商,網(wǎng)絡(luò)流量500T/天 ,月活躍用戶數(shù)超過1.3億。支持這一龐大業(yè)務(wù)規(guī)模的正是美團云。今年3月,美團云獲得IDC牌照,8月對外開放首個高品質(zhì)的自建機房。同時,美團云通過第四批可信云認證,并將“電商云”獎項收入囊中。2015年第四季度,美團云也將推出數(shù)據(jù)產(chǎn)品及行業(yè)解決方案。所有的這些都意味著,美團云致力于為千萬用戶提供穩(wěn)定的公有云服務(wù)這一愿景,正在成為現(xiàn)實。

標簽:呼和浩特 撫州 長治 瀘州 贛州 自貢 南京 臺州

巨人網(wǎng)絡(luò)通訊聲明:本文標題《剖析美團的以Python為主導的云平臺發(fā)展戰(zhàn)略》,本文關(guān)鍵詞  剖析,美團,的,以,Python,為,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《剖析美團的以Python為主導的云平臺發(fā)展戰(zhàn)略》相關(guān)的同類信息!
  • 本頁收集關(guān)于剖析美團的以Python為主導的云平臺發(fā)展戰(zhàn)略的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章