十年•杭研大咖說|堯飄海:構建容器雲平臺的關鍵技術

2016年,網易杭州研究院(如下簡稱「杭研」)成立十週年之際,咱們推出「十年•杭研大咖說」系列訪談文章,針對親歷杭研核心技術體系變遷的數位技術大牛發問,揭祕網易雲背後的技術脈絡、研發思想和技術人成長的故事。本期的受訪嘉賓,是杭研雲計算平臺產品部首席架構師堯飄海。算法

堯飄海目前負責網易容器雲平臺網易蜂巢的建設,致力於自動化平臺的架構和實踐,旨在提升產品開發效率。做爲互聯網產品開發和基礎建設的老將,以及Pomelo項目(網易開源的基於Node.js的高性能、分佈式遊戲服務器框架)的主要開發者,堯飄海對分佈式系統設計開發、性能調優,系統架構有獨到的經驗和理解。他認爲,容器的編排服務纔是真正考驗和體現應用彈性、DevOps能力的關鍵所在。在本次採訪中,他詳解了網易蜂巢根據業務需求所作的關鍵優化工做,並對將來的技術架構作了分析。後端

圖片描述
網易杭州研究院雲計算平臺產品部首席架構師堯飄海安全

首席架構師的感悟服務器

從您畢業加入網易至今已有7年,您(參與)開發了哪些系統?爲何選擇雲計算架構師做爲如今的職業?微信

堯飄海:你們好,我從畢業時加入網易到如今參與過不一樣的業務平臺的開發,包括互聯網、遊戲、IM等,再到雲計算平臺的設計與開發。經過多年來和不一樣的職責的同事和朋友交流溝通,我慢慢體會到不一樣職位的不一樣價值,特別是技術類的開發人員。可能大部分人會認爲開發只是做爲業務的執行者,可是其實每個技術人都不一樣的技術情節,但願本身能寫出來的代碼能像愛藝術做品同樣,有更長的生命力,有更好的價值,更多的服務於用戶。當前,雲計算行業的影響力已是隨處可見,每一個用戶或企業如今再也不是討論要不要上雲,而是如何上雲、上好雲、上新一代雲等。這也是雲架構師自己的職責和價值所在。網絡

在杭研的開發工做中,有哪些讓您印象深入的難題?您是如何解決的?架構

堯飄海:杭研的發展體系包括了技術和產品,技術開發在不少產品成長過程是很是重要的一環,也是必須的一環,和其餘公司同樣,咱們也會遇到各類不一樣的問題。儘管每種問題表現出來的形式是不同的,最後的結果是無非是成與不成二種,把這些難題分類出來,包括溝通、流程、技術、業務等風險。做爲技術人員,我開始更多的是去思考如何經過不一樣的技術去解決不一樣的問題,在解決的過程當中,有沒有充分的溝通和信息透明,有沒有更好的技術協做,解決後有沒有及時的反饋和總結並在下次項目提早預防;後來,隨着承擔的職責不一樣,會愈來愈關注技術對用戶的價值和影響,從上到下、從左到右地思考產品需求是否真的可以知足用戶的發展。框架

網易蜂巢是技術、知識、經驗的總體輸出less

網易蜂巢強調提升產品研發效率,分解出來也是當前的容器雲都談到的彈性擴展、DevOps能力,包括跨雲部署,您如何理解網易蜂巢和其餘容器雲平臺的主要區別?分佈式

堯飄海:在容器雲平臺中,容器只能保證環境的一致性,跨雲部署是其基本的能力,這是全部的容器雲平臺都支持的,但咱們更多的工做是如何保證很好地協調這些容器來知足業務的架構需求,也就是容器的編排服務,這些纔是真正考驗和體現應用彈性、DevOps能力的關鍵所在。除此以外,企業級的容器雲鬚要IaaS、PaaS能力的支撐,而提供穩定的自建基礎服務須要一個很長的積累過程,包括豐富穩定可靠的PaaS服務也是如此,網易蜂巢依靠網易10多年的技術積累和大規模的線上產品驗證,爲只專一於業務的用戶提供容器雲服務,幫助他們提升產品開發效率,改變軟件生產過程,是總體的技術、知識、經驗的輸出。

圖片描述

網易蜂巢選擇基於Kubernetes提供編排服務,主要是看重它的哪些優點?Kubernetes的二次開發主要在哪些方面?

堯飄海:Kubernetes也是Google和社區的技術、知識、經驗的輸出。首先,Kubernetes是由Google的Borg團隊的主力開發人員主導開發和維護的,Borg在Google內部通過了10年左右的驗證,每週支持20十億的容器生命週期管理。其次,Kubernetes的總體的設計理念和微服務架構的趨勢很是吻合,對各類容器技術的細節支持也較完善。最後,咱們是在2015年初作的選擇,當時整個容器管理的生態和各大開源對Kubernetes的支持,及其餘的容器集羣管理工具的不成熟,也是咱們在思考的問題。目前Docker、Mesos的發展愈來愈快,確實是在參考Kubernetes融入不一樣的新特性,這也佐證了咱們的選擇。

圖片描述

目前網易蜂巢對Kubernetes的二次開發,除了完成支持單集羣多租戶的模式(很大的工做量)以外,還包括以下幾個方面:

  1. 容器網絡互連、網絡多租戶,平坦化的網絡結構輕鬆解決容器互聯和可視化問題;
  2. 有狀態容器支持,包括故障恢復與遷移的能力,保證用戶對有狀態業務的數據持久化需求;
  3. 編排服務多租戶支持,根據可用域調整調度算法,優化編排服務性能,知足大規模容器集羣隔離調度;
  4. 應用不停服發佈,支持原子更新及不可變服務交付,實現對業務平滑過分,不損失一絲用戶體驗。

圖片描述

談到多租戶,容器隔離、安全的解決與性能損耗是否存在矛盾?

堯飄海:根據業務場景模式的目標做爲主要解決的問題的依據,其實就再也不是矛盾了,只是從不一樣的特性裏面排序選擇,好比是公有云仍是私有云,是互聯網應用仍是遊戲或者大數據場景。根據給定的條件去選擇,就相對容易多了,若是沒有限定條件去思考問題,只會把問題對立起來。

安全是相對的,可能沒有任何系統能保證絕對100%的安全,用戶會接受相對安全的等級,若是能作到必定的安全等級的劃分,就比較好處理了。網易蜂巢的目標用戶是公有云的企業,因此咱們目前租戶之間自然隔離,同時租戶內採用了虛機+容器組合的方式,能夠比較好的解決這些矛盾;若是有企業用戶更關注對性能的極致追求,網易蜂巢也提供了不一樣的解決方案。

冰山之下的IaaS經驗

可否介紹SDN方面對Neutron的深度二次開發?採用Neutron是由於OpenStack的歷史緣由,仍是說Kuryr、Flannel、Calico這樣的技術在隔離、性能等方面確實都不如Neutron更符合網易的需求?

堯飄海:網易蜂巢根據雲計算的業務需求去作不一樣方面的優化,主要包括易用、安全、性能等方面。易用方面,包括租戶容器網絡內網扁平化和外網的直接掛載等;安全方面,包括網絡帶寬QoS設計原則、L2/L3/L4分層次的網絡過濾等;性能方面,包括基於VxLAN的網絡小包過載優化、Intel DPDK的性能加速等。

圖片描述

因爲網易私有云2012年就能夠線上業務的使用,底層的網絡架構很是的複雜,使用範圍很廣,不管在性能仍是穩定性都方面都通過大規模的業務考驗並在不斷的優化,自己也有專業的網絡開發團隊在開發和維護,具備徹底的技術把控和機房網絡控制的能力,因此這個架構使用在容器雲平臺上是水到渠成的事情。固然,咱們也同時對和Flannel、Calico等網絡技術方案進行過相關的調研和驗證,發如今必定的使用場景裏面須要新的投入,同時要在短期知足業務的需求,仍是比較困難,特別是後續存在大量企業客戶對網絡的不一樣接入,需求會更復雜。

網易蜂巢採用了高規格的硬件設備,包括全SSD,可是爲何會選擇則Ceph存儲?對SSD的支持、I/O等方面的一些槽點,咱們如何解決?

堯飄海:網易蜂巢後端自己是支持二種存儲類型的,包括基於iSCSI協議的NBS和基於Ceph存儲,分別知足企業用戶在不一樣的場景的使用。用戶默認是使用Ceph的存儲,Ceph是採用分佈式架構設計的存儲系統,具備高擴展、高可靠和高性能特性,而且通過了大量的用戶線上的驗證。在一些特殊的場景下面,好比系統重啓或者對快照深度的支持等方面,確實須要對Ceph進行優化改造才能很好地使用,咱們減小重啓過程對集羣正常I/O性能影響,下降的程度到達10%~20%,同時有效地縮短了重啓恢復所需時間,重啓單個OSD從10分鐘減小到40秒左右。

除此以外,網易蜂巢容器還提供支持本地盤和遠程盤的特性,知足不一樣的企業用戶在性能和可用性的選擇需求,而不須要考慮額外的成本的追求。隨着規模的不斷髮展,也將遇到更多的發揮性能極致的機會,用戶對性能的追求也是網易蜂巢對外技術能力的輸出的一部分。

圖片描述

容器架構前瞻

Docker彷佛已經認爲Serverless是微服務的方向,AWS、Bluemix也都已經在探索Serverless Computing,做爲架構師,您如何看待這項技術對將來雲計算的意義?

堯飄海:Serverless是當今軟件架構領域最熱的話題之一,用於描述依賴雲端服務實現對邏輯和狀態進行管理的應用。這個概念直到2016年上半年才由Martin Fowler老爺子比較系統化地闡述出來,以前可能存在各類不一樣的技術實踐,AWS從2014年就開始在踐行相關的理念和技術推廣(Lambda)。Serverless表明一種技術架構的創新,也可能成爲將來的技術趨勢,然而目前在國外也鮮有大型成功案例,在中國的落地發展可能須要更長的時間。微信最新推出的應用程序是相關領域的部分應用和實現,同時阿里、網易也在對Serverless 架構進行探索。從咱們和相關專業人士以及用戶的交流來看,這種架構對雲生態的系統建設的依賴較高,從跨雲能力輸入到輸出,仍是須要統一的標準和接口,才能比較好地流行起來。從技術的創新角度來講,引導你們更好地思考,對將來雲計算具備很是重要的意義。

在容器以外,Unikernel也是當前的一個熱門技術,Docker公司也收購了Unikernel Systems,您如何看待Unikernel的應用潛力?

堯飄海:Unikernel在2016年初被收購,以其不一樣與傳統虛擬技術爲出發點,經過使用libOS構建的具備專門用途的單地址空間機器鏡像,總體技術堆棧的路徑更短,所以儘管存在各方面的爭議,Unikernel在對大小、速度、安全、兼容性等特定的需求有很好的使用場景,可讓容器運行在物聯網設備或者必定的數據中心服務器的硬件之上,甚至將來也不排除移動端APP採用容器來運行的可能。不過從整體來講,因爲Unikernel在調試和診斷等技術還有很長的一段路要走,好比怎樣知足永遠在線、有狀態等業務,發展多年的操做系統的技術,以及傳統使用技術債等,要改變仍是須要努力的。杭研目前主要仍是專一軟件生產過程的DevOps,同時保持對這些新技術的關注。

相關文章
相關標籤/搜索