天天看點

網易雲馮常健:節省超千萬成本,輕舟微服務是如何做到的?

數字化創新浪潮之下,微服務架構已經被越來越多的企業采用。本文通過網易雲輕舟微服務核心研發人員的實踐總結,解讀如何建設微服務基礎設施,以便更好地利用微服務技術來支撐業務實作躍進式的發展。在本篇中,網易雲架構師、輕舟微服務技術負責人馮常健結合網易雲實踐總結了微服務的沿革、價值、落地挑戰和解決思路,并分享了網易雲打造輕舟微服務的核心經驗,以及未來的技術路線。

網易雲馮常健:節省超千萬成本,輕舟微服務是如何做到的?

(網易雲架構師、輕舟微服務技術負責人馮常健)

馮常健認為,微服務化是分布式架構發展的進階階段,是目前滿足大規模業務、高速疊代、高可用率等需求的最優方案。他介紹,網易雲輕舟微服務平台的成功研發,為網易公司完善各個業務中台打下了基礎,産品研發效率提升100%,部署效率提升280%;也成功應用于物流、制造、銀行、證券等行業,幫助客戶快速實作微服務化以提高生産力,包括一年節省超過千萬元的研發運維成本。

網易雲是如何做到的?馮常健表示,實施微服務涉及分布式架構的多種挑戰,技術門檻高,衆多開源元件可以滿足企業建設微服務基礎設施的基本需求,但開源元件學習成本高,配置複雜,且應用侵入性大,網易雲以基于開源、無侵入、易用性為設計原則,基于多年技術積累,将複雜的微服務技術封裝為通用平台,幫助業務團隊快速、低成本地實作架構微服務化,并提供一整套工具鍊,包括服務治理、DevOps、AIOps、自動化測試等,保障微服務業務系統順暢運作。

2012年,馮常健加入網易杭州研究院,開始了雲計算研發的工作。初期他主要參與和負責雲管平台、雲消息隊列、自動化部署平台等雲服務設計與開發,目前這些雲服務在電商、音樂、教育、傳媒等部門都有廣泛應用。通過這些項目,他對雲計算的整個技術棧,以及如何設計一個雲服務有了深刻認識,也逐漸形成了設計分布式系統時的思考習慣: 首先會從可用性、穩定性、性能、擴充性等非功能特性入手設計或者review架構的合理性。

從2015年開始,伴随着Docker和Kubernetes的流行和項目需要,馮常健開始轉向容器技術的應用研究,之前的自動化部署平台核心在于解決應用建構與部署問題,而在資源編排、服務編排、服務故障自愈等在DevOps實踐中同樣重要的問題則較少涉及,而容器技術可以補齊自動化部署平台缺少的這些能力,通過容器技術提供的彈性伸縮、服務編排、錯誤恢複等能力,結合IaaS提供的資源可編排能力,實作無伺服器(Serverless)形态的容器平台。

容器技術的普及,推動了微服務架構在網易内部的廣泛應用。爆發式增長的網易業務,遇到低耦合、易擴充的微服務,可謂幹柴烈火,容器平台則是火上加油。微服務通過業務拆分、程序獨立部署、輕量化的通信方式等手段解決了單體架構中存在的可用性、穩定性和擴充性差等難題,并使得團隊有更多的技術棧可以嘗試,減少團隊溝通成本,提升開發效率,加快疊代速度。而容器的鏡像和編排等能力,則成為了微服務細粒度分拆與優雅協作的神器。

在兩年多的容器和微服務實踐中,網易雲驗證了基于Kubernetes的容器平台在微服務架構的部署排程、叢集容錯、故障恢複等方面的彪悍實力,也發現了平台還有一些亟待優化的問題,比如服務注冊發現、流量負載均衡、服務熔斷降級、配置管理等,雖然Kubernetes對這些問題也有相應的解決方案,但在生産環境落地時,一些客戶比較擔心這些方案的性能、穩定性和可運維性。引入基于Spring Cloud的微服務治理架構,是否能更好地解決服務運作時治理等問題?

于是,馮常健和他的團隊在2017年開始了輕舟微服務架構元件的研發,希望新的微服務架構可以和容器平台以及雲計算部門研發的DevOps、APM、自動化測試等元件形成互補,形成端到端的輕舟微服務平台,更好地支援微服務落地。

網易雲馮常健:節省超千萬成本,輕舟微服務是如何做到的?

在網易公司内部,輕舟微服務幫助完善了各個業務中台的建設,産品疊代最高提速100倍,人力運維成本節省80%,單節點20,000個服務執行個體同時線上及水準擴充的支援,讓電商大促擴容更加順暢。而對于企業客戶,輕舟微服務也意味着數字化創新的核心平台之一,某客戶直接采用輕舟微服務,大幅提升按需擴容響應速度,上線部署時間縮短80%,研發周期縮短40%,并省去傳遞溝通、協調等成本,成本節省折合貨币效應超過千萬元。如果自己研發這個平台,至少需要投入30人團隊,耗費半年時間。但該公司認為,更重要的是基于輕舟微服務能夠靈活地進行業務調整,此前需要半年才能上線新業務,現在隻需要一個月。

在馮常健看來,上述成果的實作,得益于對架構本質的把握,而實作微服務的挑戰,本質上還是分布式架構帶來的挑戰。一旦實施微服務架構,團隊會面臨服務注冊、服務發現,服務流量的負載均衡,分布式系統的叢集容錯、系統的可用性和可擴充性,服務數量多了之後的配置管理、部署排程,還有如何進行日志和監控的統一管理、如何進行服務調用跟蹤等等。這些挑戰,每一項都需要引入大量的基礎技術平台和架構元件來解決。

當然,每一項挑戰也都有不少開源解決方案。從實施微服務的技術團隊角度來看,團隊可能喜歡一開始就引進很多新技術,設計出一套能滿足未來3到5年的架構出來,但從業務的角度來看,其實不是每一個階段都有必要引入這些技術實作或解決方案,在人力有限的情況下,如果團隊把太多精力傾斜在微服務架建構設方面,忽視了承載更多價值的業務研發,這就是本末倒置,最終可能會導緻項目的失敗。

馮常健解釋說,業界常見的開源解決方案,比如對于Java技術棧,有Dubbo和Spring Cloud架構,都很強大,但它們的學習曲線比較陡峭,而負責每個微服務的往往是相對比較小的團隊,如果其中大部分人再把時間都放在新技術、新架構的學習上,團隊就沒時間投入到業務開發。以Spring Cloud為例,如果每個團隊上來都要學習幾十個元件,而且學完了也不一定能用好它們,對開源元件掌控程度不夠反而會給業務帶來一些不穩定的因素,這對于企業而言也是很大的成本。是以,不能為了做微服務而做微服務,而是要根據業務比對度來選擇技術。

網易雲馮常健:節省超千萬成本,輕舟微服務是如何做到的?

對于網易雲而言,容器平台和DevOps工具鍊已經就緒,APM也有基礎,解決上述問題,核心便是微服務架構的研發,而作為雲計算技術提供商的網易雲,卻必須考慮産品能力的全面性。那麼,網易雲又是如何思考和實踐的呢?馮常健介紹,團隊在微服務架構設計上定義了三大原則。

首先是基于開源技術棧,整個架構基于Spring Cloud,相容Dubbo,以插件化的方式實作服務注冊發現、服務治理、負載均衡、流量控制等。基于來源、相容開源,可以最大程度地降低客戶了解産品、使用産品的成本。

其次是無侵入性,實作了微服務治理架構和使用者業務的松耦合,好處是使用者隻需要關注業務,服務治理架構的引入和更新不會帶來業務改造的成本。插件化的方式,有利于實作這一點,并且對服務性能的影響可以忽略。

第三是易用性,實作圖形化的統一控制中心,通過一個平台化界面涵蓋完整的實時的服務治理能力,将使用者從繁瑣的配置中解放出來,允許使用者通過圖形化界面解決原本需要編寫代碼、編寫配置才能解決的問題。

這些設計要求在技術實作上存在很大的技術挑戰。例如無侵入性的實作,輕舟微服務主要采用Javaagent位元組碼增強技術,将服務治理邏輯以獨立Jar包的方式提供加載。為支援更大的并發,輕舟微服務後端采用全分布式架構,能支援單節點20,000個服務執行個體同時線上,支援水準擴充,并提供99.99%以上的可用性。

目前,在微服務架構子產品上,輕舟微服務已經實作了服務注冊發現、負載均衡、叢集容錯、服務熔斷降級、流量控制、動态配置管理、統一監控大盤等能力,覆寫了微服務的治理到問題的定位和排查。

性能優化對輕舟微服務架構而言也是重要的工作。例如,對Spring Cloud社群的服務發現元件Eureka做了源碼級的定制和參數優化,實作了單節點10,000個服務執行個體的注冊能力。同時,還引入異步化架構,比如Servlet 3.0、異步HttpClient、Disruptor等技術,使得輕舟微服務的請求轉發能力達到單節點30,000以上TPS,并且延遲控制在5毫秒以内。

正是這些優化工作,讓輕舟微服務能夠承擔重任,滿足了網易内部和網易雲客戶的業務需求,實作了微服務的價值。

目前社群熱議的下一代微服務架構Service Mesh,也是網易雲輕舟微服務在未來微服務架構方面的工作重點。馮常健認為,Service Mesh提供的通信方式,更安全、快速和可靠,控制面與資料面的設計,使得微服務治理功能與業務解耦更加徹底。

目前開源Service Mesh架構實作中,控制面有Google主導的Istio,資料面有Envoy、Linkerd等,都是已經或者即将進入CNCF(雲原生計算基金會)的開源元件,輕舟微服務架構秉承基于開源、相容開源的思想,通過內建開源技術能力去幫助使用者更好落地微服務。

網易雲馮常健:節省超千萬成本,輕舟微服務是如何做到的?

輕舟微服務目前在Service Mesh方向的工作有兩方面,一方面是基于Envoy做優化和改進,提供高性能的微服務通信網絡,形成自己的資料面元件,可無縫對接輕舟微服務控制平台。另一方面,Istio目前的釋出版本是基于Kubernetes實作的,無法脫離Kubernetes容器平台運作,而輕舟微服務架構定位是底層基礎設施平台無關的,它不關心服務是運作在容器裡面,還是直接運作在虛拟機、實體機上。是以,輕舟微服務架構內建Istio會是一個工作重點。

點選了解網易雲輕舟微服務,擷取方案  

相關文章:

【推薦】 淺談 kubernetes service 那些事(上篇)

【推薦】 直播平台杜絕違規内容之道

繼續閱讀