愛奇藝在服務網格方向的落地實踐
服務網格是微服務間通訊治理的基礎設施層,近年來一直是服務治理方向的熱點話題。
隨著微服務拆分的不斷深入與精細化,微服務治理在微服務架構中的地位與作用逐漸凸顯。 服務網格在改進微服務架構穩定性和成熟度、統一精簡微服務框架、提升服務治理能力方面,具備天然的技術優勢。
以下內容,整理自 SACC 2022中國系統架構師大會上的演講:
本期分享嘉賓愛奇藝研究員邢舟,他圍繞愛奇藝在服務網格方向的落地實踐進行了講解,並就愛奇藝各業務系統雲原生化遷移過程中 遇到的一些重點問題 展開討論。本文主要包括以下部分:
1.愛奇藝的微服務現狀及微服務治理髮展歷程
2.基本設計實現
3.服務網格平臺在愛奇藝公司內各業務系統的落地實踐
4.平臺擴充套件及未來規劃
5.結語
愛奇藝的微服務現狀及微服務治理髮展歷程
愛奇藝成立至今已經有十餘年,其間經歷了完整的業務急速擴張期,目前公司已成長為國內長影片播放的頭部平臺。除了業務上的巨大收穫,也積累了大量的業務前後臺系統。
透過對這些系統的梳理總結,從微服務和微服務治理角度,發現存在三方面問題:
單體與微服務並存 :許多業務系統在設計時為了快速迭代需要,沒有依照微服務架構進行設計。隨著業務成熟和架構複雜度增加,有拆分成為微服務的基本訴求;
技術棧多種多樣 :公司缺乏統一技術規劃,各業務從應用場景出發,從程式語言到微服務框架選擇,都是多樣化異構的;
部署運維複雜 :由於異構的技術棧,以及底層基礎設施存在物理機、VM、容器等多種形態,疊加不同的中介軟體依賴,造成各業務需要投入大量精力進行日常部署運維。
綜合這些現狀,愛奇藝的微服務體系暴露出缺乏治理標準、各業務服務治理能力無法對齊、服務治理重複造輪子等問題,造成關鍵服務鏈路穩定性缺乏保障。
為了解決這些問題,愛奇藝從若干年前便開始了 微服務改造,並於去年開始進行了 雲原生改造。這些改造可以劃分為四個階段:
微服務化階段: 主要使用SpringCloud、RPC框架等標準化微服務框架,對單體服務進行拆分。在這一階段形成了初步的熔斷限流等基本治理能力,許多業務也形成了一些典型的服務架構和服務部署架構,如同城雙活、兩地三中心等。
容器化改造 :在微服務拆分的基礎上,愛奇藝於2016年左右開始了容器化改造程式。在這一階段,CI/CD、DevOps等雲原生概念開始引入。
多雲遷移 :2021年前,愛奇藝於自建機房構建了私有云服務。隨著業務不斷擴張,為了降低成本,提升效率,開始向混合雲及多雲架構進行遷移。由於愛奇藝的業務具有典型的流量波峰波谷現象,多雲遷移所利用的彈性可以極大降低愛奇藝的服務成本。
雲原生改造 :愛奇藝於2022年正式開始了雲原生改造探索,包括微服務框架精簡、服務網格、資料庫網格,以及以應用為核心的iQiyi PaaS建設等。
在這4個階段的改造中, 提升微服務治理能力貫穿始終,是愛奇藝在改造過程中的重點關注項。服務網格在提升微服務治理能力方面,具備許多天然技術優勢,愛奇藝於三年前 就開始著手構建基礎服務網格平臺 用於提升整體微服務治理水平。
愛奇藝服務網格平臺的基本設計實現
目前,服務治理在愛奇藝主要存在三種形態:
程式碼中的服務治理 :服務治理能力與程式碼緊密耦合,各業務由於技術棧的差異無法做到治理能力對齊;
SDK中的服務治 理 :業務透過依賴一些標準的微服務框架,如SpringCloud、RPC等SDK完成服務治理,服務治理能力與業務邏輯有一定程度的解耦,在保留效能的基礎上,各業務之間的服務治理水平需要對齊;
Sidecar中的服務治理 :透過將治理能力下沉到 sidecar 層,徹底達到治理與業務應用解耦,可以跨技術棧、跨業務進行治理能力對齊,但在效能上可能存在一定損失。
考慮到業務改造成本及異構技術棧的相容支援,愛奇藝服務網格平臺主要支援後兩種治理形態,總體目標是構建一個可以針對異構技術棧統一服務治理能力的服務基礎平臺。
愛奇藝的服務網格平臺基於開源的 Istio+Envoy 框架構建,採用 "一控制面,多資料面" 的架構。
“一控制面”主要指在 Istio 的基礎上進行了封裝和擴充套件,並面向公司全部業務提供了統一的以 iQiyi PaaS 平臺為統一入口的控制面; “多資料面”有兩方面的含義,第一層含義是多種資料面,其二是多個資料面。 下圖展示了愛奇藝服務網格平臺的總體架構設計:
如上圖中央藍色方塊所示,愛 奇藝服務 網格平臺,至少支援以下三種型別的資料面:
經典Envoy資料面 :透過Envoy Sidecar劫持流量並進行流量治理。這種型別的資料面,也是目前愛奇藝內部覆蓋最廣泛的資料面形式;
Proxyless Service Mesh :即無代理模式。目前愛奇藝內部大量業務使用了RPC框架,其服務網格平臺正針對多種型別RPC框架進行改造,透過SDK的模式支援業務接入服務網格,在保障業務效能的同時,可以享受網格帶來的治理優勢。無代理模式透過標準的xDS協議與控制面關聯;
資料庫網格 :是今年剛剛起步的網格形式。資料庫是業務服務必須依賴的中介軟體,其訪問治理也屬於服務治理範疇。目前,愛奇藝網格透過資料庫SDK增強、Envoy擴充套件等工作已經支援了針對Redis、MySQL等資料庫的資料庫網格。
從具體實現角度,為了確保高可用,愛奇藝網格平臺採用了主備控制面設計。兩個控制面部署在不同AZ的K8s叢集,透過內網域名統一指向,並透過一個資料同步程式實現資料同步。下圖展示了愛奇藝服務網格平臺的具體部署設計:
如上圖所示, 愛奇藝底層的K8s叢集是以AZ為單元構建的,業務一般以兩地三中心方式進行部署。它的服務網格平臺透過對多AZ叢集進行監聽的方式,實現對多資料面叢集進行統一管控治理,這也實現了“多資料面”的第二層含義。
在日常運維方面,我們試用了聯邦式Prometheus叢集設計,規避資料量過大帶來的指標收集和聚合問題,並已經能夠提供從“例項->機房->整體”多維度監控報警。同時,我們也為服務網格平臺設計實現了統一的管理後臺,日常運維相關的大部分自動化指令碼 都透過管理後臺統一運營維護。
目前,愛奇藝服務網格已經面向公司所有業務,提供了五方面的服務治理能力, 如下圖所示:
愛奇藝服務網格平臺在公司內各業務系統的落地實踐
如前文所述,愛奇藝內部有大量歷史存量系統,在愛奇藝服務網格落地過程中,推進這些歷史系統遷移到網格平臺部署,是一項具有重要意義的工作。
為此,我們梳理了愛奇藝內部重要業務的典型架構,並給出了業務遷移的推薦流程。下圖展示了一個典型的業務系統的遷移過程和遷移前後的架構對比:
在推動業務的遷移中,我們為各種典型業務架構 設計了遷移模板和流量灰度方案,保障業務服務平穩。在遷移的過程中,我們也積累了豐富的遷移經驗:
平滑遷移 :透過在業務系統之前前置負載均衡層或者Envoy Gateway等層次,達到按流量比例平滑遷移的效果。業務在 保留原有部署的同時,在網格平臺內配置部署一套服務,流量在兩套系統中透過負載均衡層進行調配,一旦出現故障,可隨時配置回滾。
架構精簡 :業務在遷移到網格後,除了獲取治理能力等軟實力提升外,架構精簡也是遷移過程中的重要考量。對於業務閘道器層、nginx層、服務註冊發現中心等傳統微服務框架的結構,在遷移至網格後可以考慮精簡。架構精簡在降低運營成本的同時,也可以提高服務響應效能,提升服務鏈路穩定性。
服務介面規範 :在服務網格體系內,我們以業務部門作為劃分,將流量劃分為跨部門呼叫的南北向流量和部門內呼叫的東西向流量。其中,南北向流量建議使用HTTP等協議設計,靈活擴充套件;東西向流量建議使用RPC等協議,可以利用網格直連的特性提升微服務內聚性,保障效能效率。
複雜服務鏈路遷移 :採用部分遷移,服務網格內外雙註冊的方式,完成複雜服務鏈路的遷移,從而保障複雜服務遷移的穩定性。
綜上,我們基於以上的策略,目前已經在愛奇藝內部成功遷移了數百個業務應用,幫助業務在架構精簡(主要著眼於精簡傳統微服務框架與服務治理相關的架構冗餘部分)、服務灰度標準化、服務治理白盒化運維、補充服務治理能力方面,都取得了積極的反饋。
愛奇藝服務網格平臺的擴充套件及未來規劃
最後,簡單介紹一下愛奇藝在建設服務網格平臺過程中的一些擴充套件,主要分為三個方面,即無代理服務網格、資料庫網格和iQiyi PaaS平臺。 開源服務網格功能相對單一,難以適配企業各種業務場景和異構技術棧的需要。
為了更好擴充服務網格在愛奇藝內部各業務線的落地, 我們在以下機房方面針對服務網格做出了擴充套件嘗試:
無代理服務網格 :是服務網格領域近期的熱點話題之一,愛奇藝發展的無代理服務網格主要目標在於對RPC協議的支援,即實現SDK形態的服務治理。
目前,我們積極參與了許多RPC框架的擴充套件工作,以支援xDS協議為目標,支援了bRPC、Dubbo、gRPC等RPC框架在服務網格平臺的接入。使用這些RPC框架的業務,可以透過iQiyi PaaS統一入口無縫整合服務網格的治理能力。
資料庫網格 :是今年新提出的服務網格相關概念。資料庫作為常用中介軟體,幾乎在所有業務應用中被廣泛使用。關於資料庫訪問,目前大部分業務都是採用各種資料庫SDK疊加本地properties配置方式,存在安全漏洞、無法靈活應對資料庫遷移等基本問題。
愛奇藝將Envoy進行了擴充套件,並與ShardingSphere社群合作,推出了Redis、MySQL等常見資料庫的資料庫網格,將資料庫訪問的相關治理能力下沉到SDK,甚至是sidecar等層次,提高了資料庫訪問的安全性,並豐富了資料庫的訪問治理。
下圖展示的是愛奇藝資料庫網格 所設計實現的資料庫訪問治理的基本流程:
iQiyi PaaS :是愛奇藝所設計構建的未來的公司整體PaaS平臺。這個平臺以應用為核心,基於Kubevela等開源標準,為企業內的各種應用服務提供統一的生命週期管理。
iQiyi PaaS平臺提供了包括基礎資源、彈性、監控、微服務治理能力(服務網格)、應用監控、全鏈路追蹤、部署、CI/CD等與APP相關的全套環境、基礎設施和工具支援,是整個公司雲原生化改造的重要組成部分。下圖展示了愛奇藝PaaS平臺的基本結構設計:
結語
服務網格作為下一代微服務治理技術,在愛奇藝各業務上已經得到了廣泛的應用。在節省運維成本、提升開發效率、增強服務治理能力方面,愛奇藝公司大量的業務應用,都證明了服務網格作為基礎服務平臺的關鍵作用。
透過近兩年的探索,愛奇藝已透過實踐印證了服務網格作為網路服務間通訊治理的基礎設施層的重要性。 未來,愛奇藝將繼續著眼於微服務和微服務治理領域, 密切關注服務網格領域的進展, 以iQiyi PaaS為核心,不斷推進雲原生在公司各業務線的落地,進一步實現業務系統降本增效的戰略目標。
本期分享嘉賓
邢舟
愛奇藝 研究員
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70016482/viewspace-2925480/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 服務網格在百度核心業務大規模落地實踐
- 合闊智雲核心生產系統切換到服務網格 ASM 的落地實踐ASM
- 愛奇藝在 Dubbo 生態下的微服務架構實踐微服務架構
- 直播報名|資深雲原生架構師分享服務網格在騰訊 IT 業務的落地實踐架構
- 愛奇藝微服務監控的探索與實踐微服務
- 愛奇藝混合雲內網DNS實踐內網DNS
- 資訊公交服務在滴滴的應用實踐
- 公有云在中國實踐落地
- Istio最佳實踐:在K8s上透過Istio服務網格進行灰度釋出K8S
- 使用Istio服務網格實現流量映象
- 服務網格 Service Mesh
- 實時數倉在滴滴的實踐和落地
- Kafka 負載均衡在 vivo 的落地實踐Kafka負載
- TDengine 在蔚來能源系統的落地實踐
- Flink 在米哈遊的落地實踐
- 在低容錯業務場景下落地微服務的實踐經驗微服務
- 服務網格重蹈ESB的覆轍?為什麼需要SMI服務網格介面? - samnewman
- 精彩分享 | 歡樂遊戲 Istio 雲原生服務網格三年實踐思考遊戲
- 基於 RocketMQ 的 MQTT 服務架構在小米的實踐MQQT架構
- 服務網格(Envoy+Istio)
- 避免使用服務網格的原因? - Reddit
- 微服務是否真的需要服務網格?微服務
- 優酷弱網平臺落地實踐
- Kubernetes在宜信落地實踐
- vivo 製品管理在 CICD 落地實踐
- 容器技術在企業落地的最佳實踐
- Kerberos 身份驗證在 ChunJun 中的落地實踐ROS
- Type Script 在流程設計器的落地實踐
- Faas在哈囉AI平臺的落地實踐AI
- 大規模機器學習在愛奇藝視訊分析理解中的實踐機器學習
- 愛奇藝聯合MediaTek率先實現AV1格式影片移動端落地
- 在騰訊雲容器服務 TKE 中實踐 DevOpsdev
- 乾淨架構在 Web 服務開發中的實踐架構Web
- SerCe的部落格:您不需要任何服務網格
- 服務網格將更安全:VMware收購Mesh7改變服務網格的遊戲規則遊戲
- 服務網格:微服務進入2.0時代微服務
- 直播預告 | 服務網格規模化應用下的 Istio Sidecar 靈活配置實踐IDE
- 談談我對服務網格的理解