一站式入口服務:愛奇藝微服務平臺 API 網關實戰

寫在前面
在互聯網業務微服務化改造過程中,按照以往的服務治理體系,各服務需要單獨實現限流、鑑權、監控、日誌等通用功能,構建入口時資源申請、工單批覆、多系統配置等一系列流程對精力消耗極大,學習成本較高,開發者也很難通過全局視角對各服務入口統一管理。愛奇藝微服務平臺應運而生,通過組件化和服務化,助力業務解耦,不同微服務獨立部署、獨立擴展,保證各服務模塊邊界穩固,幫助業務實現微服務化改造。
作爲微服務平臺最重要的邊界組件,愛奇藝 API 網關誕生於2016 年底,底層基於開源項目 Kong 實現,旨在爲開發者提供穩定、便捷、高性能、可擴展的服務入口功能,一站式管理API 配置和生命週期,對微服務治理具有重要意義。

關於愛奇藝微服務平臺API網關

架構總覽

類似 Nginx, API 網關通過域名、請求方法、路徑匹配規則等定義一個 API,API 轉發目標爲開發者配置的一個唯一服務。Kong 基於 Nginx 實現,成熟穩定且性能可靠,並擁有靈活強大的插件機制,提供了諸如訪問控制、限流、監控等功能。在此基礎上愛奇藝技術團隊結合內部系統開發了私有插件,以適配內部特殊需求。

API 網關採用靠近客戶端的分佈式部署方案,在各地區部署獨立集羣並就近解析;單個 API 網關集羣通過負載均衡服務暴露。API 配置需要在多個集羣內維護,因此愛奇藝技術團隊開發了 API 網關控制器,統一負責集羣管理、域名創建、DNS 綁定等操作,整體架構如下圖所示。

基礎功能

在 API 網關控制流架構設計中,微服務平臺 API 網關模塊通過內部系統集成及服務化實現,爲開發者提供全部所需入口配置及管理功能,且無需代碼侵入、工單申請等人工干涉,實現API 創建即可用。API 網關支持認證、限流、訪問控制等通用功能,結構如下圖所示。

服務解析

請求進入 API 網關時,Kong 通過 DNS 向 Service Registry 查詢服務實例列表,作爲請求轉發的 upstream。由於 DNS 緩存機制,需要在實例變更時及時清理緩存,確保請求訪問至有效的實例。尤其是在私有容器平臺 QAE(iQIYIAPP Engine)環境中,訪問地址隨實例變更而變化,爲儘可能保證服務解析成功,系統之間需要完成一些聯動。以QAE 縮減應用副本數操作爲例,過程大致如下圖所示。

定向路由

API 網關以地域(外網服務則爲地域+運營商)爲依據配置 DNS 就近解析規則,儘可能靠近客戶端;但在現實中,部分 API 考慮服務小運營商網絡、靠近服務端等客觀條件,或在某些時間段希望對部分地區的服務進行網絡隔離。針對此類自定義路由的需求,API 網關爲業務域名生成了虛擬網關域名(uuid.domain),如果開發者希望根據運營商配置目標集羣,在將業務域名改綁至虛擬域名後即可實現定向路由,如下圖所示。

此外,開發者可通過微服務平臺配置服務路由解析規則,進一步控制流量至服務實例間路由關係,滿足諸如藍綠部署、緩存更新延遲低容忍等場景下,控制請求目標服務實例的需要。

容災

作爲流量入口,API 網關必須具備足夠強大的容災能力以應對可能的網絡故障。除每個 Kong 節點自身及相關依賴的高可用配置之外,API 網關還實現了不同地域、運營商、數據中心、集羣之間的多級互備,一旦出現網絡故障,可以在最短時間內將流量切換到可用入口。此外,API 開發者認爲某集羣流量處理異常時,也可以利用虛擬網關域名自助切走流量。

另外,API 網關集羣採用藍綠部署策略完成功能升級等常規運維操作,接入流量前充分實現集羣預熱,同時提供版本回退、故障現場保留能力。將運維操作帶給開發者的影響降至最低。

API性能追蹤

PI 網關提供了監控、報警、日誌、調用分析等功能,可幫助開發者完成問題排查。通過接入日誌系統,方便開發者篩查日誌,以下圖排查 499 問題爲例,通過篩選發現,短時間內該接口被某外網 IP 頻繁訪問且請求時間較短,鑑於 nginx 499 狀態碼錶示客戶端主動斷開連接,判斷爲疑似外網攻擊。

此外 API 網關在消息轉發階段進行了埋點並接入了調用分析系統,開發者可通過分析消息調用鏈,根據慢響應詳情進一步分析問題。以下圖爲例,開發者排查慢請求過程中,通過調用鏈分析發現耗時較大處標記是網絡延遲。在進一步查看客戶、服務端區域後發現,該請求爲跨機房調用,服務部署在單個機房導致了該請求時延較高,開發者以此爲依據對服務部署進行了調整。

與愛奇藝號的故事

愛奇藝號作爲愛奇藝開放平臺和內容體系裏最重要的載體,爲自媒體、網絡大電影、網劇、兒童、動漫、教育、文學、漫畫、直播等多種內容創作者提供服務。

爲適應快速變化的應用場景,愛奇藝號在架構設計時選擇了微服務化,拆分出多種自媒體、基礎信息等微服務。其中很多服務在認證、限流、追蹤、防黑產等方便有着一致的需求,如果單獨實現,將導致開發及運維成本大幅度的上升。

爲幫助愛奇藝號順利完成微服務化改造,減輕開發和運維負擔,API 網關結合愛奇藝號實際需求,利用 Kong 的插件機制開發或改進了帳號認證、限流、黑產攔截、信息追蹤等一系列功能。目前,愛奇藝號使用 API 網關管理着數百個 API,並以此爲統一入口連接數十個服務。此外利用API 網關和 QAE 容器平臺的容災特性,通過多數據中心服務互備,提升了服務整體的穩定性。

總結與展望

API 網關爲開發者提供了穩定的入口服務,現已維護超過 4000 個 API,持續吸引新舊業務接入。API 網關當前平均單日 API 訪問量超過 300 億、峯值QPS 近 100 萬。通過充分發揮插件擴展能力,爲開發者提供監控、日誌、調用鏈分析等高級功能,有效降低了維護及排障成本。

未來 API 網關面向混合雲環境,爲開發者提供更加靈活、便捷、高效、穩定的入口服務。

本文轉載自公衆號愛奇藝技術產品團隊(ID:iQIYI-TP)。

原文鏈接

https://mp.weixin.qq.com/s?__biz=MzI0MjczMjM2NA==&mid=2247485845&idx=1&sn=8ca94a01410d1fbf85cb1eaadca29c3e&chksm=e97695b6de011ca02c9f438ec5246faa06ed176526022308269a2e867743254bfab9572263e9&scene=27#wechat_redirect

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章