2016年祖驱,網(wǎng)易杭州研究院(以下簡(jiǎn)稱“杭研”)成立十周年之際绽昼,我們推出“十年·杭研大咖說(shuō)”系列訪談文章载矿,針對(duì)親歷杭研核心技術(shù)體系變遷的數(shù)位技術(shù)大牛發(fā)問(wèn)颂龙,揭秘網(wǎng)易云背后的技術(shù)脈絡(luò)、研發(fā)思想和技術(shù)人成長(zhǎng)的故事。本期的受訪嘉賓据忘,是杭研云計(jì)算平臺(tái)產(chǎn)品部首席架構(gòu)師堯飄海。
堯飄海目前負(fù)責(zé)網(wǎng)易容器云平臺(tái)–網(wǎng)易蜂巢的建設(shè)搞糕,致力于自動(dòng)化平臺(tái)的架構(gòu)和實(shí)踐勇吊,旨在提高產(chǎn)品開(kāi)發(fā)效率。作為互聯(lián)網(wǎng)產(chǎn)品開(kāi)發(fā)和基礎(chǔ)建設(shè)的老將窍仰,以及Pomelo項(xiàng)目(網(wǎng)易開(kāi)源的基于Node.js的高性能汉规、分布式游戲服務(wù)器框架)的主要開(kāi)發(fā)者,堯飄海對(duì)分布式系統(tǒng)設(shè)計(jì)開(kāi)發(fā)驹吮、性能調(diào)優(yōu)针史,系統(tǒng)架構(gòu)有獨(dú)到的經(jīng)驗(yàn)和理解。他認(rèn)為碟狞,容器的編排服務(wù)才是真正考驗(yàn)和體現(xiàn)應(yīng)用彈性啄枕、DevOps能力的關(guān)鍵所在。在本次采訪中族沃,他詳解了網(wǎng)易蜂巢根據(jù)業(yè)務(wù)需求所做的關(guān)鍵優(yōu)化工作频祝,并對(duì)未來(lái)的技術(shù)架構(gòu)做了分析。
首席架構(gòu)師的感悟
-從您畢業(yè)加入網(wǎng)易至今已有7年脆淹,您(參與)開(kāi)發(fā)了哪些系統(tǒng)常空?為什么選擇云計(jì)算架構(gòu)師作為現(xiàn)在的職業(yè)?
堯飄海:大家好盖溺,我從畢業(yè)時(shí)加入網(wǎng)易到現(xiàn)在參與過(guò)不同的業(yè)務(wù)平臺(tái)的開(kāi)發(fā)漓糙,包括互聯(lián)網(wǎng)、游戲烘嘱、IM等昆禽,再到云計(jì)算平臺(tái)的設(shè)計(jì)與開(kāi)發(fā)蝗蛙。通過(guò)多年來(lái)和不同的職責(zé)的同事和朋友交流溝通,我慢慢體會(huì)到不同職位的不同價(jià)值醉鳖,特別是技術(shù)類的開(kāi)發(fā)人員歼郭。可能大部分人會(huì)認(rèn)為開(kāi)發(fā)只是作為業(yè)務(wù)的執(zhí)行者辐棒,但是其實(shí)每一個(gè)技術(shù)人都不同的技術(shù)情節(jié)病曾,希望自己能寫(xiě)出來(lái)的代碼能像愛(ài)藝術(shù)作品一樣,有更長(zhǎng)的生命力漾根,有更好的價(jià)值泰涂,更多的服務(wù)于用戶。當(dāng)前辐怕,云計(jì)算行業(yè)的影響力已經(jīng)是隨處可見(jiàn)逼蒙,每個(gè)用戶或企業(yè)現(xiàn)在不再是討論要不要上云,而是如何上云寄疏、上好云是牢、上新一代云等。這也是云架構(gòu)師本身的職責(zé)和價(jià)值所在陕截。
-在杭研的開(kāi)發(fā)工作中驳棱,有哪些讓您印象深刻的難題?您是如何解決的农曲?
堯飄海:杭研的發(fā)展體系包括了技術(shù)和產(chǎn)品社搅,技術(shù)開(kāi)發(fā)在很多產(chǎn)品成長(zhǎng)過(guò)程是非常重要的一環(huán),也是必須的一環(huán)乳规,和其他公司一樣形葬,我們也會(huì)遇到各種不同的問(wèn)題。盡管每種問(wèn)題表現(xiàn)出來(lái)的形式是不一樣的暮的,最后的結(jié)果是無(wú)非是成與不成二種笙以,把這些難題分類出來(lái),包括溝通冻辩、流程猖腕、技術(shù)、業(yè)務(wù)等風(fēng)險(xiǎn)微猖。作為技術(shù)人員谈息,我開(kāi)始更多的是去思考如何通過(guò)不同的技術(shù)去解決不同的問(wèn)題缘屹,在解決的過(guò)程中凛剥,有沒(méi)有充分的溝通和信息透明,有沒(méi)有更好的技術(shù)協(xié)作轻姿,解決后有沒(méi)有及時(shí)的反饋和總結(jié)并在下次項(xiàng)目提前預(yù)防犁珠;后來(lái)逻炊,隨著承擔(dān)的職責(zé)不同,會(huì)越來(lái)越關(guān)注技術(shù)對(duì)用戶的價(jià)值和影響犁享,從上到下余素、從左到右地思考產(chǎn)品需求是否真的能夠滿足用戶的發(fā)展。
網(wǎng)易蜂巢是技術(shù)炊昆、知識(shí)桨吊、經(jīng)驗(yàn)的整體輸出
-網(wǎng)易蜂巢強(qiáng)調(diào)提高產(chǎn)品研發(fā)效率,分解出來(lái)也是當(dāng)前的容器云都談到的彈性擴(kuò)展凤巨、DevOps能力视乐,包括跨云部署,您如何理解網(wǎng)易蜂巢和其他容器云平臺(tái)的主要區(qū)別敢茁?
堯飄海:在容器云平臺(tái)中佑淀,容器只能保證環(huán)境的一致性,跨云部署是其基本的能力彰檬,這是所有的容器云平臺(tái)都支持的伸刃,但我們更多的工作是如何保證很好地協(xié)調(diào)這些容器來(lái)滿足業(yè)務(wù)的架構(gòu)需求,也就是容器的編排服務(wù)逢倍,這些才是真正考驗(yàn)和體現(xiàn)應(yīng)用彈性捧颅、DevOps能力的關(guān)鍵所在。除此之外较雕,企業(yè)級(jí)的容器云需要IaaS隘道、PaaS能力的支撐,而提供穩(wěn)定的自建基礎(chǔ)服務(wù)需要一個(gè)很長(zhǎng)的積累過(guò)程郎笆,包括豐富穩(wěn)定可靠的PaaS服務(wù)也是如此谭梗,網(wǎng)易蜂巢依靠網(wǎng)易10多年的技術(shù)積累和大規(guī)模的線上產(chǎn)品驗(yàn)證,為只專注于業(yè)務(wù)的用戶提供容器云服務(wù)宛蚓,幫助他們提高產(chǎn)品開(kāi)發(fā)效率激捏,改變軟件生產(chǎn)過(guò)程,是整體的技術(shù)凄吏、知識(shí)远舅、經(jīng)驗(yàn)的輸出。
-蜂巢選擇基于Kubernetes提供編排服務(wù)痕钢,主要是看重它的哪些優(yōu)勢(shì)图柏?Kubernetes的二次開(kāi)發(fā)主要在哪些方面?
堯飄海:Kubernetes也是Google和社區(qū)的技術(shù)任连、知識(shí)蚤吹、經(jīng)驗(yàn)的輸出。首先,Kubernetes是由Google的Borg團(tuán)隊(duì)的主力開(kāi)發(fā)人員主導(dǎo)開(kāi)發(fā)和維護(hù)的裁着,Borg在Google內(nèi)部經(jīng)過(guò)了10年左右的驗(yàn)證繁涂,每周支持20十億的容器生命周期管理。其次二驰,Kubernetes的整體的設(shè)計(jì)理念和微服務(wù)架構(gòu)的趨勢(shì)非常吻合扔罪,對(duì)各種容器技術(shù)的細(xì)節(jié)支持也較完善。最后桶雀,我們是在2015年初做的選擇矿酵,當(dāng)時(shí)整個(gè)容器管理的生態(tài)和各大開(kāi)源對(duì)Kubernetes的支持,及其他的容器集群管理工具的不成熟矗积,也是我們?cè)谒伎嫉膯?wèn)題坏瘩。目前Docker、Mesos的發(fā)展越來(lái)越快漠魏,確實(shí)是在參考Kubernetes融入不同的新特性倔矾,這也佐證了我們的選擇。
目前網(wǎng)易蜂巢對(duì)Kubernetes的二次開(kāi)發(fā)柱锹,除了完成支持單集群多租戶的模式(很大的工作量)之外哪自,還包括如下幾個(gè)方面:
1.容器網(wǎng)絡(luò)互連、網(wǎng)絡(luò)多租戶禁熏,平坦化的網(wǎng)絡(luò)結(jié)構(gòu)輕松解決容器互聯(lián)和可視化問(wèn)題壤巷;
2.有狀態(tài)容器支持,包括故障恢復(fù)與遷移的能力瞧毙,保證用戶對(duì)有狀態(tài)業(yè)務(wù)的數(shù)據(jù)持久化需求胧华;
3.編排服務(wù)多租戶支持,根據(jù)可用域調(diào)整調(diào)度算法宙彪,優(yōu)化編排服務(wù)性能矩动,滿足大規(guī)模容器集群隔離調(diào)度;
4.應(yīng)用不停服發(fā)布释漆,支持原子更新及不可變服務(wù)交付悲没,實(shí)現(xiàn)對(duì)業(yè)務(wù)平滑過(guò)度,不損失一絲用戶體驗(yàn)男图。
-談到多租戶示姿,容器隔離、安全的解決與性能損耗是否存在矛盾逊笆?
堯飄海:根據(jù)業(yè)務(wù)場(chǎng)景模式的目標(biāo)作為主要解決的問(wèn)題的依據(jù)栈戳,其實(shí)就不再是矛盾了,只是從不同的特性里面排序選擇难裆,比如是公有云還是私有云子檀,是互聯(lián)網(wǎng)應(yīng)用還是游戲或者大數(shù)據(jù)場(chǎng)景。根據(jù)給定的條件去選擇,就相對(duì)容易多了命锄,如果沒(méi)有限定條件去思考問(wèn)題,只會(huì)把問(wèn)題對(duì)立起來(lái)偏化。
安全是相對(duì)的脐恩,可能沒(méi)有任何系統(tǒng)能保證絕對(duì)100%的安全,用戶會(huì)接受相對(duì)安全的等級(jí)侦讨,如果能做到一定的安全等級(jí)的劃分驶冒,就比較好處理了。網(wǎng)易蜂巢的目標(biāo)用戶是公有云的企業(yè)韵卤,所以我們目前租戶之間天然隔離骗污,同時(shí)租戶內(nèi)采用了虛機(jī)+容器組合的方式,可以比較好的解決這些矛盾沈条;如果有企業(yè)用戶更關(guān)注對(duì)性能的極致追求需忿,網(wǎng)易蜂巢也提供了不同的解決方案。
冰山之下的IaaS經(jīng)驗(yàn)
-能否介紹SDN方面對(duì)Neutron的深度二次開(kāi)發(fā)蜡歹?采用Neutron是因?yàn)?/b>OpenStack的歷史原因屋厘,還是說(shuō)Kuryr、Flannel月而、Calico這樣的技術(shù)在隔離汗洒、性能等方面確實(shí)都不如Neutron更符合網(wǎng)易的需求?
堯飄海:網(wǎng)易蜂巢根據(jù)云計(jì)算的業(yè)務(wù)需求去做不同方面的優(yōu)化父款,主要包括易用溢谤、安全、性能等方面憨攒。易用方面世杀,包括租戶容器網(wǎng)絡(luò)內(nèi)網(wǎng)扁平化和外網(wǎng)的直接掛載等;安全方面肝集,包括網(wǎng)絡(luò)帶寬QoS設(shè)計(jì)原則玫坛、L2/L3/L4分層次的網(wǎng)絡(luò)過(guò)濾等;性能方面包晰,包括基于VxLAN的網(wǎng)絡(luò)小包過(guò)載優(yōu)化湿镀、Intel DPDK的性能加速等。
由于網(wǎng)易私有云2012年就可以線上業(yè)務(wù)的使用伐憾,底層的網(wǎng)絡(luò)架構(gòu)非常的復(fù)雜勉痴,使用范圍很廣,無(wú)論在性能還是穩(wěn)定性都方面都經(jīng)過(guò)大規(guī)模的業(yè)務(wù)考驗(yàn)并在不斷的優(yōu)化树肃,本身也有專業(yè)的網(wǎng)絡(luò)開(kāi)發(fā)團(tuán)隊(duì)在開(kāi)發(fā)和維護(hù)蒸矛,具有完全的技術(shù)把控和機(jī)房網(wǎng)絡(luò)控制的能力,所以這個(gè)架構(gòu)使用在容器云平臺(tái)上是水到渠成的事情。當(dāng)然雏掠,我們也同時(shí)對(duì)和Flannel斩祭、Calico等網(wǎng)絡(luò)技術(shù)方案進(jìn)行過(guò)相關(guān)的調(diào)研和驗(yàn)證,發(fā)現(xiàn)在一定的使用場(chǎng)景里面需要新的投入乡话,同時(shí)要在短時(shí)間滿足業(yè)務(wù)的需求摧玫,還是比較困難,特別是后續(xù)存在大量企業(yè)客戶對(duì)網(wǎng)絡(luò)的不同接入绑青,需求會(huì)更復(fù)雜诬像。
-網(wǎng)易蜂巢采用了高規(guī)格的硬件設(shè)備,包括全SSD闸婴,但是為什么會(huì)選擇則Ceph存儲(chǔ)坏挠?對(duì)SSD的支持、I/O等方面的一些槽點(diǎn)邪乍,我們?nèi)绾谓鉀Q降狠?
堯飄海:蜂巢后端本身是支持二種存儲(chǔ)類型的,包括基于iSCSI協(xié)議的NBS和基于Ceph存儲(chǔ)庇楞,分別滿足企業(yè)用戶在不同的場(chǎng)景的使用喊熟。用戶默認(rèn)是使用Ceph的存儲(chǔ),Ceph是采用分布式架構(gòu)設(shè)計(jì)的存儲(chǔ)系統(tǒng)姐刁,具有高擴(kuò)展芥牌、高可靠和高性能特性,并且經(jīng)過(guò)了大量的用戶線上的驗(yàn)證聂使。在一些特殊的場(chǎng)景下面壁拉,比如系統(tǒng)重啟或者對(duì)快照深度的支持等方面,確實(shí)需要對(duì)Ceph進(jìn)行優(yōu)化改造才能很好地使用柏靶,我們減少重啟過(guò)程對(duì)集群正常I/O性能影響弃理,降低的程度到達(dá)10%~20%,同時(shí)有效地縮短了重啟恢復(fù)所需時(shí)間屎蜓,重啟單個(gè)OSD從10分鐘減少到40秒左右痘昌。
除此之外,網(wǎng)易蜂巢容器還提供支持本地盤(pán)和遠(yuǎn)程盤(pán)的特性炬转,滿足不同的企業(yè)用戶在性能和可用性的選擇需求辆苔,而不需要考慮額外的成本的追求。隨著規(guī)模的不斷發(fā)展扼劈,也將遇到更多的發(fā)揮性能極致的機(jī)會(huì)驻啤,用戶對(duì)性能的追求也是蜂巢對(duì)外技術(shù)能力的輸出的一部分。
容器架構(gòu)前瞻
-Docker似乎已經(jīng)認(rèn)為Serverless是微服務(wù)的方向荐吵,AWS骑冗、Bluemix也都已經(jīng)在探索Serverless
Computing赊瞬,作為架構(gòu)師,您如何看待這項(xiàng)技術(shù)對(duì)未來(lái)云計(jì)算的意義贼涩?
堯飄海:Serverless是當(dāng)今軟件架構(gòu)領(lǐng)域最熱的話題之一巧涧,用于描述依賴云端服務(wù)實(shí)現(xiàn)對(duì)邏輯和狀態(tài)進(jìn)行管理的應(yīng)用。這個(gè)概念直到2016年上半年才由Martin Fowler老爺子比較系統(tǒng)化地闡述出來(lái)遥倦,之前可能存在各種不同的技術(shù)實(shí)踐谤绳,AWS從2014年就開(kāi)始在踐行相關(guān)的理念和技術(shù)推廣(Lambda)。Serverless代表一種技術(shù)架構(gòu)的創(chuàng)新谊迄,也可能成為未來(lái)的技術(shù)趨勢(shì)闷供,然而目前在國(guó)外也鮮有大型成功案例烟央,在中國(guó)的落地發(fā)展可能需要更長(zhǎng)的時(shí)間统诺。微信最新推出的應(yīng)用程序是相關(guān)領(lǐng)域的部分應(yīng)用和實(shí)現(xiàn),同時(shí)阿里疑俭、網(wǎng)易也在對(duì)Serverless架構(gòu)進(jìn)行探索粮呢。從我們和相關(guān)專業(yè)人士以及用戶的交流來(lái)看,這種架構(gòu)對(duì)云生態(tài)的系統(tǒng)建設(shè)的依賴較高钞艇,從跨云能力輸入到輸出啄寡,還是需要統(tǒng)一的標(biāo)準(zhǔn)和接口,才能比較好地流行起來(lái)哩照。從技術(shù)的創(chuàng)新角度來(lái)說(shuō)挺物,引導(dǎo)大家更好地思考,對(duì)未來(lái)云計(jì)算具有非常重要的意義飘弧。
-在容器之外识藤,Unikernel也是當(dāng)前的一個(gè)熱門(mén)技術(shù),Docker公司也收購(gòu)了Unikernel
Systems次伶,您如何看待Unikernel的應(yīng)用潛力痴昧?
堯飄海:Unikernel在2016年初被收購(gòu),以其不同與傳統(tǒng)虛擬技術(shù)為出發(fā)點(diǎn)冠王,通過(guò)使用libOS構(gòu)建的具有專門(mén)用途的單地址空間機(jī)器鏡像赶撰,整體技術(shù)堆棧的路徑更短,因此盡管存在各方面的爭(zhēng)議柱彻,Unikernel在對(duì)大小豪娜、速度、安全哟楷、兼容性等特定的需求有很好的使用場(chǎng)景侵歇,可以讓容器運(yùn)行在物聯(lián)網(wǎng)設(shè)備或者一定的數(shù)據(jù)中心服務(wù)器的硬件之上,甚至未來(lái)也不排除移動(dòng)端APP采用容器來(lái)運(yùn)行的可能吓蘑。不過(guò)從總體來(lái)說(shuō)惕虑,由于Unikernel在調(diào)試和診斷等技術(shù)還有很長(zhǎng)的一段路要走坟冲,比如怎樣滿足永遠(yuǎn)在線、有狀態(tài)等業(yè)務(wù)溃蔫,發(fā)展多年的操作系統(tǒng)的技術(shù)健提,以及傳統(tǒng)使用技術(shù)債等,要改變還是需要努力的伟叛。杭研目前主要還是專注軟件生產(chǎn)過(guò)程的DevOps私痹,同時(shí)保持對(duì)這些新技術(shù)的關(guān)注。