T3 出行:網約車全棧分布式數據庫升級實踐

現今,網約車已成為民眾日常出行不可或缺的選擇。伴隨“互聯網+出行”模式的快速推進,龐大的出行數據應運而生,如同構建了城市交通系統的數字神經脈絡。與此同時,對高效數據存儲與深入數據分析的需求也在持續攀升。

T3 出行于2019年應運而生,是由一汽集團、東風汽車和長安汽車這三大中央企業聯手創建的智能出行服務平臺。歷經五年的蓬勃發展,T3 出行的日訂單峰值已躍升至300萬以上。隨著T3 出行業務的急劇擴張,一個穩定可靠、高性能且安全的數據庫系統變得至關重要。在全面評估性能、成本等各項因素后,T3 出行決定采用OB Cloud 作為數據庫技術的堅強后盾。

1、T3出行的數據庫挑戰:海量數據下的性能瓶頸

T3 出行研發總監高建豐經常對團隊成員強調:數據庫穩,則系統穩。如果沒有一個穩定的數據庫系統,就不可能有一個穩定的交易系統。”

T3 出行最初將其數據庫部署在 MySQL 上。然而,隨著訂單量的快速增長,傳統集中式數據庫面臨的挑戰逐漸顯現。高建豐分享道,盡管 MySQL 能夠支持很高的 KPS(每秒查詢次數),但其存儲的數據量卻非常有限。當數據量達到幾百萬條時,系統便接近其上限,從而導致性能下降和內存消耗增加等問題。

為了擴容,最常見的方式就是分庫分表,但分庫分表也存在技術局限性。首先,查詢性能、靈活性不強。通常只能按照訂單、司機或乘客等單個特定維度查詢數據,不能進行多維度的查詢。其次,數據庫的水平擴展困難,且容易造成資源浪費。根據 T3 出行的業務畫像,波峰波谷明顯,非早晚高峰時段,大量的 MySQL 資源日常閑置;而早晚高峰時段,MySQL 連接數與規格綁定,數量有限,容易出現資源碎片化,導致數據庫使用成本不斷增加。

為了解決擴容問題,T3 出行的研發團隊采用了分庫分表策略,但這一方法的技術局限性也很快顯現。

  • 首先,分庫分表后的查詢性能和靈活性較差,通常只能按照訂單、司機或乘客等單一特定維度進行查詢,難以支持多維度的復雜查詢。
  • 其次,數據庫的水平擴展變得更加困難。早晚高峰時段,MySQL連接數與規格綁定,容易出現資源碎片化,導致數據庫使用成本不斷增加,而在非高峰時段,大量 MySQL 資源處于閑置狀態,造成資源浪費。
  • 另外,即便分了八庫八表,海量數據存儲困難的問題依然存在,三四年前的歷史數據如何存儲?有人提出使用 MySQL+HBase+MongoDB 等解決方案支撐數據存儲與查詢。但一方案也帶了來新的問題:技術棧眾多。目前,T3 出行系統運行著的 TP 和 AP 類數據庫近 20 個。

“大部分運維同學是很崩潰的。”高建豐說到:“近 20 個數據庫需要耗費大量的資源和人力去維護,而且也沒有哪個運維同學對這 20 個技術棧都非常熟悉。”

而更大問題在于,數據從 TP 數據庫同步到 AP 數據庫,涉及數據復制、提取、清洗等環節,每一次數據同步都有可能引起數據延遲或丟失,難以實現 100% 的完美遷移。

為了保障系統高可用,T3 出行采用雙云雙地圖戰略,交易系統部署在阿里云上,大數據系統部署在騰訊云上,利用多云架構分散風險。但云上系統如何快速切換,數據如何流轉是 T3 出行數據庫團隊不得不面對的課題。

2、海量數據最優解:一體化云數據庫OB Cloud

基于上述問題,T3 出行開始尋求新的數據解決方案。

高建豐認為,滿足 T3 出行海量數據的數據庫,應該滿足四大條件:

  • MySQL 數據庫可以快速、平滑地遷移,不需要投入太多人力資源,也無需修改代碼,要對業務層無感知。
  • 替換之后,性能需要有所提升。
  • 成本上,需要通過數據壓縮、CPU 資源利用等多種角度降低數據庫成本。
  • 運維層面,要減輕運維團隊的工作量。

2023 年 6 月,T3 出行開始接觸 OB Cloud,并進行了大量測試。在性能、成本、遷移難度、運維等多個層面的測試結果都遠超預期,最終,T3 出行選擇 OB Cloud 作為數據庫底座。

一開始,T3 出行將司機任務、訂單監控、虛擬號、開放平臺等部分非核心業務放在作為試點,將數據量較大的單庫單表場景遷移至 OB Cloud 上。切換過程非常順利,且運行穩定,在兼容性、成本與性能等方面表現良好。高建豐對試點運行的結果做了以下幾點總結:

  • OB Cloud 完善的周邊生態,讓遷移過程十分順利,無代碼適配成本。
  • OB Cloud 與阿里云、騰訊云等多種云平臺靈活對接,云上數據流轉自由,有效支撐 T3 出行的雙云雙地圖戰略。
  • 基于 LSM-Tree 存儲引擎,OB Cloud 可以極大壓縮數據存儲空間,解決了 T3 出行未來幾年的數據存儲難題。
  • OB Cloud 原生分布式能力可平滑擴展,在早晚高峰的高并發場景下自動擴容,且在司機端、乘客端無感知。
  • OB Cloud 采用多副本多活策略,能有效提高資源計算密度,業務高峰時段也保證系統性能。?
  • 通過 HTAP+多模一體化,統一管理 20 多種技術棧,不但提升了系統性能,運維同學的壓力也大大減輕。

2024 年年初,T3 出行開始將訂單、結算、支付、風控、營銷等核心業務系統逐步都遷移至 OB Cloud。截至目前,T3 出行超過 50% 的業務平穩運行在 OB Cloud 之上,預計在 2025 年年初,實現所有系統的切換。

在降本層面,以會員業務為例,一開始,T3 出行對會員業務進行八庫八表的拆分,后來遷移至 OB Cloud 采用三副本方式,以單庫單表的形式支撐業務。切換之后,會員業務的成本降低超過 50%。全部業務切換至 OB Cloud 后,預計 RDS for MySQL 共 400+ 個實例,縮減至 25 個 OceanBase 集群,大幅度降低業務系統的數據存儲規模,存儲空間減少 80% 以上。得益于存儲壓縮技術和 CPU 資源利用率提升,整體數據庫成本縮減 30%。

“因為我們使用 OB Cloud 的時間并不長,在一開始設計時也做了特別多的冗余。待業務平穩運行之后,降本會更加明顯。”高建豐介紹說。

使用 OB Cloud 后,在早晚高峰的高并發場景下,T3 出行的數據庫性能提升 75%,大表查詢性能提升 12%,寫入性能提升 90%,終端的司機和乘客在使用時可明顯感知到業務的響應速度提升,整體的使用體驗也有了質的提升。

此外,OB Cloud 穩定性非常高,T3 核心交易系統搭載 OB Cloud 平穩運行,OceanBase 駐場人員運維和響應的速度非常快,一年來無任何生產事故。得益于 OceanBase 原生金融級高可用,T3 出行所有業務均實現機房級故障 RPO=0 的能力。

3、TP+AP、多模+AI,借助 OB Cloud 拓展業務更多可能

目前,T3 出行主要用 OB Cloud 替換了 MySQL 的場景,未來考慮替換 HBase、Redis 等場景,用 OB Cloud 統一管理,更大程度簡化技術棧,減輕運維壓力。

TP 與 AP 割裂的兩個系統,對人力資源和機器資源造成了極大的浪費,借助 OB Cloud 的 HTAP 能力,分析不分數據報表,進一步擴展了業務的邊界。

另外,T3 出行還考慮基于 OB Cloud 進一步探索多云部署,T3 目前面臨的雙活問題主要是網絡問題、應用問題和數據問題。網絡和應用雙活容易實現,底層的數據雙活可以借助 OB Cloud 來支持,屏蔽不同云廠商之間的底層差異,實現跨云主備庫、雙活能力,探索業務跨云災備能力的實踐。?


OceanBase ?現已支持 365天 免費試用,點擊立即開啟 >>?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/74092.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/74092.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/74092.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

區塊鏈技術在供應鏈管理中的應用與創新

在當今全球化的商業環境中,供應鏈管理的復雜性與日俱增。從原材料采購到最終產品交付,涉及眾多環節和參與者,信息的透明度、準確性和安全性至關重要。區塊鏈技術的出現,為供應鏈管理帶來了全新的解決方案,正在逐步改變…

藍橋每日打卡--打家劫舍4

#藍橋#JAVA#打家劫舍4 題目描述 沿街有一排連續的房屋。每間房屋內都藏有一定的現金。現在有一位小偷計劃從這些房屋中竊取現金。 由于相鄰的房屋裝有相互連通的防盜系統,所以小偷 不會竊取相鄰的房屋 。 小偷的 竊取能力 定義為他在竊取過程中能從單間房屋中竊…

c#難點整理

1.何為托管代碼,何為非托管代碼 托管代碼就是.net框架下的代碼 非托管代碼,就是非.net框架下的代碼 2.委托的關鍵知識點 將方法作為參數進行傳遞 3.多維數組 4.鋸齒數組 5.多播委托的使用 6.is運算符 相當于邏輯運算符是 7.as 起到轉換的作用 8.可…

Nginx代理本機的443到本機的8080端口

1. 準備工作 確認已生成 IP 的 HTTPS 證書 假設你已通過 mkcert 生成證書(如 192.168.199.191.pem 和 192.168.199.191-key.pem),并已安裝 CA 證書(運行過 mkcert -install)。 Nginx 安裝 ? 若未安裝 Nginx&#…

善用批處理的for命令倍增效率(附彩蛋:windows官方bug)

前言 在我們工作中,如果使用Windows系統,善用批處理命令,特別是在批量的文件處理,文本處理時能幫助我們極大地提升工作效率,起到事半功倍的效果! 但很多同學,對批處理的使用更多還停留在可以將多個command命令組合到一起執行,省去重復敲命令和等待的時間。這個其實只…

數據結構之棧的2種實現方式(順序棧+鏈棧,附帶C語言完整實現源碼)

對于邏輯關系為“一對一”的數據,除了用順序表和鏈表存儲外,還可以用棧結構存儲。 棧是一種“特殊”的線性存儲結構,它的特殊之處體現在以下兩個地方: 1、元素進棧和出棧的操作只能從一端完成,另一端是封閉的&#xf…

Camera2 API拍照失敗問題實錄:從錯誤碼到格式轉換的排坑之旅

一、問題背景 在開發基于Camera2 API的相機應用時,我們遇到了一個棘手的問題:預覽功能在所有設備上工作正常,但在某特定安卓設備上點擊拍照按鈕后無任何響應。值得注意的是,使用舊版Camera API時該設備可以正常拍照。本文記錄了完…

Jmeter舊版本如何下載

1.Jmeter最新版本下載位置 https://jmeter.apache.org/download_jmeter.cgi2.Jmeter舊版本下載位置 https://archive.apache.org/dist/jmeter/binaries穩定版本:5.4.1

css-grid布局

文章目錄 1、布局2、網格軌道3、間距Gap4、網格線5、網格別名 當一個 HTML 元素將 display 屬性設置為 grid 或 inline-grid 后,它就變成了一個網格容器,這個元素的所有直系子元素將成為網格元素。 1、布局 啟用grid布局類似與flex布局,不過g…

SolidWorks使用顯卡教程

操作步驟: 打開注冊表編輯器 按下鍵盤上的 Win R 組合鍵,輸入 regedit 并按回車鍵,打開注冊表編輯器。 導航到顯卡信息路徑 在注冊表中依次展開以下路徑: plaintext HKEY_CURRENT_USER\Software\SolidWorks\SOLIDWORKS 2021\Per…

【C++11】左值引用、右值引用、移動語義和完美轉發

🦄個人主頁:修修修也 🎏所屬專欄:C ??操作環境:Visual Studio 2022 目錄 📌左值引用和右值引用 🎏左值和左值引用 🎏右值和右值引用 📌左值引用和右值引用比較 🎏左值引用 🎏右值…

麒麟系列Linux發行版探秘

以下內容摘自《銀河麒麟操作系統進階應用》一書。 銀河麒麟操作系統(Kylin) 銀河麒麟(Kylin)操作系統是中國自主研發的一款基于Linux內核的操作系統。它的發展歷程可以追溯到2002年,最初由國防科技大學主導研發&…

【機密計算頂會解讀】11:ACAI——使用 Arm 機密計算架構保護加速器執行

導讀:本文介紹ACAI,其構建一個基于CCA的解決方案,使得機密虛擬機能夠安全地使用加速器,同時保持與現有應用程序的兼容性和安全性,能夠實現對加速器的安全訪問。 原文鏈接:ACAI: Protecting Accelerator Ex…

第一天 UnityShader的結構

Shader初學者的學習筆記 第一天 Unity Shader的結構 文章目錄 Shader初學者的學習筆記前言一、Unity Shader結構二、Unity Shader結構解析① Properties② Tags③ RenderSetup(可選狀態)④ Name⑤ [Tags]⑥ [RenderSetup]⑦ 頂點著色器和片元著色器的代碼 (Unity最聰明的孩子)…

VL開源模型實現文本生成圖片

一、 基礎知識 根據描述生成圖片的視覺-語言模型(Vision-Language Models, VL 模型)是近年來多模態生成領域的熱點研究方向。這些模型能夠根據自然語言描述生成高質量的圖像,廣泛應用于藝術創作、設計輔助、虛擬場景構建等領域。 1 根據描述…

【Java SE】抽象類/方法、模板設計模式

目錄 1.抽象類/方法 1.1 基本介紹 1.2 語法格式 1.3 使用細節 2. 模板設計模式(抽象類使用場景) 2.1 基本介紹 2.2 具體例子 1.抽象類/方法 1.1 基本介紹 ① 當父類的某些方法,需要聲明,但是又不確定如何實現時&#xff…

【人工智能】LM Studio 的 GPU 加速:釋放大模型推理潛能的極致優化

《Python OpenCV從菜鳥到高手》帶你進入圖像處理與計算機視覺的大門! 解鎖Python編程的無限可能:《奇妙的Python》帶你漫游代碼世界 隨著大語言模型(LLM)的廣泛應用,其推理效率成為限制性能的關鍵瓶頸。LM Studio 作為一個輕量級機器學習框架,通過 GPU 加速顯著提升了大…

深度學習:從零開始的DeepSeek-R1-Distill有監督微調訓練實戰(SFT)

原文鏈接:從零開始的DeepSeek微調訓練實戰(SFT) 微調參考示例:由unsloth官方提供https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Qwen2.5_(7B)-Alpaca.ipynbhttps://colab.research.google.com/git…

流暢如絲:利用requestAnimationFrame優化你的Web動畫體驗

requestAnimationFrame 是前端開發中用于優化動畫性能的 API。它允許瀏覽器在下一次重繪之前執行指定的回調函數,通常用于實現平滑的動畫效果。 1.作用 優化性能:requestAnimationFrame 會根據瀏覽器的刷新率(通常是 60Hz,即每秒…

【pytest框架源碼分析五】pytest插件的注冊流程

前文介紹到pytest整體是運用插件來實現其運行流程的。這里仔細介紹下具體過程。 首先進入main方法 def main(args: list[str] | os.PathLike[str] | None None,plugins: Sequence[str | _PluggyPlugin] | None None, ) -> int | ExitCode:"""Perform an i…