愛奇藝的雲上資料治理實踐

陶然陶然發表於2023-02-07

  2022 年 5 月,SphereEx 正式對外提出了 Database Mesh 2.0 理念。關於 Database Mesh,其不是靜態的定義,而是一個在不斷進化的動態概念。Database Mesh 始終關注對資料庫流量的治理,基於資料庫協議感知能力,提供資料分片、負載均衡、可觀測性、審計等能力,這些能力已經解決了資料庫治理中屬於流量治理的部分問題。此外 Database Mesh 也關注資料庫可靠性工程的建設,面向不同角色提供更易用、更極致的資料庫治理能力。

  愛奇藝十分認同 Database Mesh 的理念以及願景,即『在雲端實現資料庫的高效能擴充套件以及解決資料治理難題』。因此,愛奇藝基於自身需要對 ShardingSphere-JDBC 進行了擴充套件,並結合 Database Mesh 理念的具體實現--Pisanix 進行了一系列關鍵測試,逐步向 Database Mesh 架構演進。  

  隨著業務擴張與使用者數量激增,所接入的各類活動(例如秒殺)也在增長,瞬間巨大流量的湧入也為資料庫帶來了不小的壓力,進而導致企業在應用資料庫的過程中出現 slave 延遲、慢查詢以及部分操作無法滿足業務需要等問題。在微服務架構以及雲原生的加速下,雙方的結合為業務上線釋出和治理帶來了新的可能。不過隨著業務場景越來越多元,資料應用的方案呈現煙囪狀,對資料的管控有孤島化的趨勢,擺在技術人員面前的是“選型難、成本高、管控複雜”等問題。

  尤其是在雲原生日漸成熟的今天,業務應用和資料庫等基礎設施的關係正在潛移默化中改變,愛奇藝希望透過把握雲原生架構的新趨勢,採用統一化管理的方式,實現對資料庫的擴充套件和升級,以支撐更多應用與業務上雲。

  為了滿足業務團隊在雲上環境中對於資料庫效能、可用性等方面的高要求,愛奇藝需要將 ShardingSphere 在本地的分散式能力遷移至雲端,並尋找一款能夠在雲原生環境下統一雲端資料庫流量入口、對雲上流量以及資料進行統一高效治理的工具。

  愛奇藝在調研並配合測試反饋由 SphereEx 社群提供的 Database Mesh 解決方案--Pisanix 的同時,也基於 ShardingSphere 社群的 ShardingSphere-JDBC 進行二次開發,以滿足目前業務接入資料庫治理平臺中對於資料分片、負載均衡、配置儲存與安全等需求。  

  目前愛奇藝使用統一配置中心儲存資料庫連線配置,使用 KMS 相關技術加密資料庫訪問配置,使用 ShardingSphere-JDBC 滿足資料分片和負載均衡相關的需求,整體架構如下圖。  

  愛奇藝雲原生資料庫體系

  當業務接入資料治理平臺時,透過申請相關的連線配置,在經過轉化和訪問資訊透過 KMS 加密後儲存進統一配置儲存中心;當應用啟動時,透過改進過後的 ShardingSphere-JDBC 拉取配置並監聽配置變更以支援配置熱更新。

  在改進之前,如果遇到修改配置、Sharding 叢集擴容、叢集版本升級、資料庫遷移和上雲等場景時,往往需要針對業務服務進行重新發版,並且業務方需針對相關場景設計如切換和回滾、選擇時間點、流量灰度以及資料校對等複雜操作流程。

  改進後,對於配置中新增或修改分表配置,定製化的 ShardingSphere-JDBC能夠對 Sharding 叢集的擴縮容或改綁起到很好的支援作用。透過在配置中心白屏操作修改配置或繫結叢集,主動選擇配置重新載入時機,當 SDK 端接收到最新配置,會使用非同步任務進行老連線池的關閉並替換現有連線池,做到讀寫流量的平滑遷移, 大大降低了相關資料治理能力平滑遷移至雲上環境的難度。

  在愛奇藝的規劃中,未來規劃透過接入 Database Mesh 並引入 Pisanix-Proxy,進一步將資料治理能力從 SDK 下沉到 Sidecar 中。  

  在流量入口層,隨著雲原生應用微服務化、Serverless 化,使用者需要面對複雜路由規則可配置、支援多種應用層協議、服務訪問的安全性以及流量的可觀測性等訴求。關於這部分,愛奇藝最早是透過中介軟體統一管理 Redis 和 MySQL。  

  除此以外,為了更好支援愛奇藝的混合雲部署方案,SmartJedis 支援了統一配置中心,在統一的配置中心中動態支援不同環境下的配置,在非網格環境中使用直連的方式,在網格環境中使用 Envoy 中的 RedisProxy 管理 Redis 協議流量並支援連線配置的熱更新,避免了 Redis 上雲後需要業務重新發版的問題。

  在 MySQL 部分,愛奇藝研發團隊測試了 Database Mesh 的具體實踐--Pisanix。Pisanix 由 Go 及 Rust 編寫,適配 Kubernetes 環境,目前已支援 MySQL 協議。其主要包括 Pisa-Controller、Pisa-Proxy 和 Pisa-Daemon 三個元件,為使用者應用提供『本地即資料庫』的訪問體驗,實現支援多協議的可插拔架構、遮蔽真實資料來源狀態,為資料運維人員提供統一的資料庫流量管控能力。

  目前愛奇藝在系統仍然是基於 ShardingSphere-JDBC 來支援 Java 應用,未來 Pisanix 在愛奇藝的系統中得到進一步落地後,愛奇藝將透過 Pisanix 實現標準化的資料庫自動維護體驗,並透過支撐多語言應用來完成多種資料庫治理行為的雲原生編排。另外借助各種 Database Mesh 的標準 CustomResourceDefinition,比如統一的資料庫接入宣告配置、可程式設計的資料庫訪問資源限制等,愛奇藝也將能夠快速實現雲原生資料庫的治理編排。  

  01 資料分片,在雲端提供接近 ShardingSphere-JDBC 的效能

  資料分片是應對海量資料儲存與計算的有效手段,這也是愛奇藝在雲原生非 Java 語言場景中傾向於 Pisanix 的動機之一。在資料分片的全部環節中,主要包含了 SQL 解析、SQL 改寫、SQL 路由、結果歸併這 4 個重要模組。

  其中,為配合將 ShardingSphere 本地強大的分片能力遷移至雲端,Pisanix 基於底層資料庫在雲端提供了資料分片的治理能力,使用者可以透過 Pisanix 實現水平擴充套件計算。同時開放更多自定義指標,為 Pisa-Proxy 實現更智慧、更穩定的高階自動擴容能力。

  基於 Pisa-Controller 控制面,愛奇藝能夠實現對資料面元件的管控,配合 Pisa-Proxy,以 Sidecar 方式與業務應用部署在同一個 Pod 中,用以監聽 MySQL 協議獲取應用訪問資料庫的流量。在此基礎上,Pisanix 還為愛奇藝提供了多種治理能力:

  SQL 流量治理:透過解析 SQL,實現多種負載均衡策略、限流等;

  訪問控制:根據使用者和資料許可權關係,實現細粒度的許可權控制;

  SQL 防火牆:阻止高危 SQL 語句執行;

  可觀測性:暴露各種資料庫訪問指標:如吞吐、延時等。

  對於愛奇藝而言,基於 Pisanix 實現 Java 業務和非 Java 業務都能夠在雲環境下的高效能分片,將確保更多業務未來能夠在 Pisanix 的支援下順暢運轉。

  2、讀寫分離,有效提升資料庫吞吐量

  為了達到提升系統吞吐量以及可用性等需求,許多系統往往會採用主從資料庫架構的配置模式,但是這種主從模式也為業務的使用帶來了一定的複雜性。因此,在讀請求明顯高於寫請求的情況下,需要在此基礎上使用讀寫分離來突破資料庫在實際應用場景中效能瓶頸問題。

  作為業界在主從場景下提升資料庫吞吐量最常用的技術方案之一,讀寫分離能夠達到在實際場景中提高查詢效能、降低伺服器負載的目的。不過讀寫分離也帶來了與資料分片同樣的問題,它同樣會使得應用開發以及運維人員對資料庫的操作變得更加複雜。

  目前愛奇藝透過一主多從的配置方式,將查詢請求均勻分散到多個資料副本,進而提升系統的處理能力。這種方式不但能夠提升系統的吞吐量,還能夠有效提升系統可用性,進而達到在任何一個資料庫當機、甚至磁碟物理損壞的情況下仍然不影響系統的正常執行的目標。

  在規劃過程中,愛奇藝計劃使用 Pisanix 的動態感知讀寫分離功能來管理多主多從的資料庫叢集。在接入 Pisanix 後,愛奇藝將可以利用讀寫分離功能管理主從資料庫,實現透明化的讀寫分離功能,讓使用者像使用一個單體資料庫一樣使用主從架構的資料庫。  

  目前,愛奇藝內部對 ShardingSphere-JDBC 的改造已經基本完成,未來也將計劃應用 Pisanix 配合 ShardingSphere 的能力,在愛奇藝內部實現對 MySQL 的統一治理。在 ShardingSphere 社群和 Database Mesh 社群的大力推動下,Pisanix 也將結合使用者使用場景不斷打磨雲上解決方案,為愛奇藝的業務部門提供可靠的技術支撐,加速雲上業務擴充。

  不過,畢竟 Pisanix 是一個非常年輕的專案,因此在實際應用中還是存在一些不足。在愛奇藝的測試應用過程中,目前 Pisanix 對於分庫分表的表示式支援程度有限,對於 SQL 的特殊配置程度有待進一步提升。此外如 Pisanix 執行狀況的視覺化、metrics、熔斷降級策略、trace 等與線上效能相關的能力將會是社群接下來的發展重點。SQL 審計、Pisa-Controller 與 Istio 合併等相容性及效能問題,也已經被社群所注意到並提上了日程。

  未來愛奇藝將基於 ShardingSphere-JDBC 以及 Database Mesh 理念正在迭代中的 Pisanix,搭建起基於 MySQL 的統一資料訪問規範和解決方案。透過統一配置中心與定製化 sidecar,愛奇藝將逐步實現資料庫訪問細節對業務開發人員完全透明,降低使用複雜度的同時增強資料庫訪問的安全性,加速構建資料庫統一配置中心,協助應用上雲。

來自 “ 愛奇藝技術產品團隊 ”, 原文作者:愛奇藝技術產品團隊;原文連結:http://server.it168.com/a2023/0207/6788/000006788438.shtml,如有侵權,請聯絡管理員刪除。

相關文章