本文整理自度小滿 Doris 數(shù)據(jù)庫負責人湯斯在 Doris Summit 2025 中的演講,并以演講者第一視角進行敘述。
度小滿金融(原百度金融)作為一家覆蓋現(xiàn)代財富管理、支付、金融科技等多板塊的科技公司,數(shù)據(jù)的分析處理對其極為重要,已經(jīng)深度融入業(yè)務生命周期的每個環(huán)節(jié),是進行風險控制、商業(yè)決策、用戶體驗優(yōu)化及運營提效的基石。
隨著業(yè)務高速發(fā)展,度小滿原有基于 Greenplum 搭建的 OLAP 平臺,逐漸暴露出三大痛點:
- 規(guī)模與穩(wěn)定性瓶頸:存儲已接近飽和,擴容至百余臺已接近硬件規(guī)模的承載上限,如果繼續(xù)擴容,將面臨更嚴重的穩(wěn)定性挑戰(zhàn)。
- 性能與體驗不佳:Greenplum SQL 查詢執(zhí)行速度慢,且經(jīng)常出現(xiàn) “計算時間遠小于排隊時間” 的情況,嚴重影響業(yè)務分析效率。
- 缺失技術支持:當前使用的 Greenplum 6 版本技術架構已顯得陳舊,并且 2024 年 Greenplum 宣布將停止開源,后續(xù)的技術支持與迭代升級將無法保障。
為了應對這些痛點,度小滿金融迫切尋找更為高效、穩(wěn)定且具備現(xiàn)代化技術架構的數(shù)據(jù)處理解決方案,以支持其未來的業(yè)務發(fā)展。
Apache Doris:高吞吐、快查詢
面對日益增長的業(yè)務體量與復雜多變的分析需求,選用一個高效、可靠的數(shù)據(jù)庫系統(tǒng),已成為支撐業(yè)務穩(wěn)健發(fā)展與快速創(chuàng)新的關鍵。Apache Doris 以其出色的性能表現(xiàn)與高度靈活的架構,成為眾多場景下的優(yōu)選方案。為深入驗證其在海量數(shù)據(jù)與復雜分析場景中的能力,我們展開了一系列性能測試,關鍵結果如下:
- 查詢性能:在 1TB TPC-DS 標準測試集中, Apache Doris 的查詢速度約是 Greenplum 6 的 20-30 倍。
- 導入性能:在基于 Flink 寫入的 TPS 測試中,基于單分片導入,壓測最大 TPS 為:5000W/s。
- JSON 數(shù)據(jù)處理:針對新推出的 Variant JSON 數(shù)據(jù)類型,測試顯示:存儲 2-3 萬 Key 時,其空間占用僅為普通 JSON 的 1/10 甚至更低,查詢效率則提升至 10 倍以上。
綜上可知,Apache Doris 在寫入吞吐、響應速度及存儲效率上表現(xiàn)卓越,有力證明了其應對大規(guī)模、實時化、半結構化數(shù)據(jù)分析挑戰(zhàn)的堅實技術基礎。
基于 Apache Doris 的大規(guī)模數(shù)據(jù)分析平臺
在上述詳實的選型調(diào)研之后,我們決定采用 Apache Doris 替代原有 Greenplum 集群,構建超大規(guī)模數(shù)據(jù)分析平臺。
為驗證 Apache Doris 在真實業(yè)務場景中的表現(xiàn),我們先進行了小范圍試點,部署了少量 Doris 集群,并先行接入幾個關鍵業(yè)務方。試點期間,系統(tǒng)在性能、穩(wěn)定性和易用性方面獲得高度評價。基于這一積極反饋,我們穩(wěn)步擴展 Doris 集群規(guī)模,最終在效率與成本上實現(xiàn)大幅提升:
- 整體效率:端到端分析任務耗時從 274 秒降至 47 秒,效率提升 82%,任務超時查殺比例從 1.3%驟降至 0.11%,降幅達 91%,徹底解決高峰期排隊問題實現(xiàn) 0 排隊,使分析師的工作不再因擁堵而中斷,體驗和生產(chǎn)力均有極大提升。
- 集群成本:在同等資源成本下, Doris 僅以 1/3 的集群數(shù)量即可提供與 Greenplum 同等的服務能力,存儲性能提升 200%。截至目前,已完成 百余臺原 Greenplum 服務器的清退工作,以更少的硬件資源支撐了更高的計算與存儲需求,實現(xiàn)年度硬件成本節(jié)約數(shù)百萬元。
從 0-1 數(shù)據(jù)平臺建設經(jīng)驗
我們基于 Apache Doris 成功替換了 Greenplum,完成了從 0-1 的數(shù)據(jù)平臺重構,覆蓋架構設計、數(shù)據(jù)流轉(zhuǎn)與業(yè)務協(xié)同的系統(tǒng)性工程。以下將圍繞快速平滑遷移、異地多活容災與全鏈路生態(tài)集成三個核心環(huán)節(jié),展開具體實踐。
01 快速遷移
為保障業(yè)務連續(xù)性與數(shù)據(jù)安全,我們開發(fā)了自動化遷移工具 SqlGlot,將大規(guī)模數(shù)據(jù)從原有 GP 集群遷移至 Doris 集群。整個過程歷經(jīng)半年,累計遷移 PB 級規(guī)模數(shù)據(jù),全程業(yè)務無感知。
- 表結構遷移:在表結構遷移階段,團隊從 GP 系統(tǒng)中導出表結構及相關元數(shù)據(jù),借助 SqlGlot 工具實現(xiàn)字段映射與語法適配,并在此基礎上完成分區(qū)構建與分桶策略設計,確保每個分桶數(shù)據(jù)量控制在 1G~3G 的合理范圍內(nèi)。該流程最終成功轉(zhuǎn)換超過 20,000 張表,并保障了所有表的分區(qū)與分桶結構符合業(yè)務與性能要求。
- 表數(shù)據(jù)遷移:我們通過分布式導出將 GP 數(shù)據(jù)并行遷移至 Doris 機器,并基于 Doris 官方推薦的 Stream Load 進行并發(fā)控制,以文件流式加載的方式高效導入數(shù)據(jù)至 Doris 集群。整個過程累計完成 PB 級規(guī)模數(shù)據(jù)遷移,穩(wěn)定支持了 5000+ 次數(shù)據(jù)同步任務。
- SQL 遷移:為解決因業(yè)務規(guī)模龐大、場景復雜而導致的官方工具語法支持不全的問題,我們基于 SqlGlot 并結合正則匹配能力,將 PostgreSQL SQL 高效轉(zhuǎn)換為 Doris SQL。整個遷移流程包括“轉(zhuǎn)換成功 → 執(zhí)行成功 → 數(shù)據(jù)一致” ,累計完成約 47 萬個 SQL 的轉(zhuǎn)換,實現(xiàn) 95% 的執(zhí)行成功率 與 92% 的數(shù)據(jù)一致率。
02 異地雙機房災備
為保障數(shù)據(jù)安全并實現(xiàn)集群高可用,我們基于 Apache Doris 構建了異地雙機房災備架構,確保數(shù)據(jù)與服務具備跨機房容災與雙活能力。核心設計如下:

我們將所有 Doris 集群節(jié)點均勻部署于 A 與 B 兩個異地機房,通過設置 tag.location 屬性明確節(jié)點所屬機房。用戶賬號按機房綁定,訪問請求通過輪詢機制自動分配,實現(xiàn)負載均衡(例如首次請求路由至 A 機房,第二次則路由至 B 機房)。建表時通過配置 location 參數(shù),確保每張表在雙機房各保留 2 個副本,從而達成數(shù)據(jù)異地雙活與故障自動切換。
關鍵配置示例:
- 設置節(jié)點機房標簽
alter system modify backend ”BE1:9050" set ("tag.location" = "group_a");
alter system modify backend ”BE2:9050" set ("tag.location" = "group_b");
- 建表時指定雙機房副本分布
CREATE TABLE ubevent
(ts DATETIME, uid INT, ...)
DUPLICATE KEY(ts)
DISTRIBUTED BY HASH(uid) BUCKETS 10
PROPERTIES ("replication_allocation" = "tag.location.group_b: 2, tag.location.group_a: 2");
03 生態(tài)整合
為構建高效、穩(wěn)定、易用的數(shù)據(jù)平臺,我們還圍繞 Apache Doris 進行系統(tǒng)性生態(tài)整合:
- 計算引擎無縫集成:通過 Doris 官方提供的 Spark Connector 與 Flink Connector,實現(xiàn)了與現(xiàn)有 Spark、Flink 計算引擎的高效對接,保障了數(shù)據(jù)流水線穩(wěn)定運行。
- 運維體系化與自動化:集成 Prometheus、Grafana 及 Doris Manager,構建了覆蓋監(jiān)控、告警、管理與調(diào)優(yōu)的自動化運維體系,全面提升集群穩(wěn)定性與運維效率。
優(yōu)化經(jīng)驗
為進一步提升數(shù)據(jù)平臺的效率及資源利用率,在實際落地過程中,圍繞集群、負載、存儲等多維度總結了以下優(yōu)化經(jīng)驗:
01 集群隔離
當前我們有多個 Doris 集群,為合理承接不同業(yè)務方的接入需求,我們主要依據(jù)業(yè)務成本與穩(wěn)定性要求兩大維度進行評估與路由。通常而言,穩(wěn)定性越高,對應成本也越高。
新建集群時,穩(wěn)定性最優(yōu),但相應成本也最高。為在成本與穩(wěn)定性之間取得平衡,我們大多場景是基于 Workload Group 資源硬隔離方案,對 CPU 與內(nèi)存進行資源組級別的隔離,有效減少不同業(yè)務負載間的資源競爭。若業(yè)務對穩(wěn)定性的要求超出共享集群所能提供的范圍,則仍需要通過新建獨立集群來滿足。
02 存儲壓力
在 Apache Doris 的落地與運維過程中,我們曾面臨因業(yè)務快速增長帶來的高達 80%-90% 的磁盤存儲壓力。針對這一問題,進行了一系列優(yōu)化:
- 控制表生命周期:部分業(yè)務或因?qū)討B(tài)分區(qū)相關語法不熟悉,未主動采用該策略。為此,集成動態(tài)分區(qū)的參數(shù)配置,簡化了開發(fā)難度,并提供統(tǒng)一注冊入口,業(yè)務開發(fā)人員僅需選擇是否開啟、保留天數(shù)即可。
- 修改壓縮格式:將默認壓縮算法從 LZ4 切換為 ZSTD。實測表明,存儲空間平均節(jié)省約 50%,雖帶來約 20%~30% 的 CPU 與內(nèi)存負載上升,但整體 ROI 仍然較高。
- 存儲指標監(jiān)控告警:為預防因誤操作或異常行為導致的存儲激增,建立了針對“人員”與“表”雙維度的監(jiān)控體系。環(huán)比分析業(yè)務人員數(shù)據(jù)占用趨勢及單表每日增長量,可自動識別異常(如單日增長飆升至日常 10 倍),并及時觸發(fā)告警及通知。
- Hive 與 Doris 打通:在基于 Kerberos 認證的 Hive 環(huán)境中,對 Doris Hive Catalog 功能進行了二次開發(fā),實現(xiàn)跨系統(tǒng)的直接數(shù)據(jù)訪問,無需依賴 Flink 等同步工具,簡化了架構并提升了數(shù)據(jù)使用效率。
03 負載均衡
為確保系統(tǒng)在負載高峰期的穩(wěn)定運行,特別是應對異常 SQL 與大查詢帶來的資源壓力,應對措施如下:
- 雙機房負載均衡:基于已有的異地雙機房架構,通過輪詢機制實現(xiàn)業(yè)務流量在 A 與 B 機房之間的自動分發(fā):首個 SQL 請求路由至 A,次個請求則導向 B,以此循環(huán),確保雙機房負載均衡,避免單點資源過載。
- SQL 參數(shù)限制:通過
enable_query_memory_overcommit = false、exec_mem_limit = 256 * 1024 * 1024 * 1024等參數(shù)將最大占用內(nèi)存限制為 256G,避免集群被打滿,后續(xù)計劃降至 60G。 - Workload 資源隊列動態(tài)調(diào)整:基于任務類型劃分資源隊列,配置 CPU 的軟隔離和內(nèi)存的硬隔離,并支持錯峰調(diào)度。比如:例行任務通常在夜間執(zhí)行,為其創(chuàng)建專門資源隊列,數(shù)據(jù)分析等公共任務大多在白天執(zhí)行,將配置更大的資源隊列,隨著白天/夜間需求的變化動態(tài)調(diào)整資源。此外,依據(jù)各隊列負載設定并行度與并發(fā)數(shù),控制任務排隊時長。
- 異常 SQL 攔截:實時識別與攔截異常 SQL,避免其影響 BE 節(jié)點穩(wěn)定性。初期使用 Doris 內(nèi)置正則規(guī)則進行攔截,但規(guī)則復雜導致 CPU 開銷上升。為此,我們將攔截邏輯外移至平臺層執(zhí)行,以避免正則匹配及超大 JOIN 導致的 CPU 負載過高。
04 集群穩(wěn)定性
隨著集群規(guī)模不斷擴大,保障 FE、BE 節(jié)點穩(wěn)定性成為運維工作的核心挑戰(zhàn),為此,我們構建了以下保障體系:
- 分層觸達+全維度覆蓋:根據(jù)不同指標優(yōu)先級設置通知電話、短信、飛書提醒,P0 監(jiān)控準確率 ≥80%;
- 自動異常處理:為 FE 和 BE 的宕機重啟設置了自動化處理方案,在識別到服務卡住時,系統(tǒng)會自動重啟進程。此外,對于磁盤掉線,將自動下線故障盤并觸發(fā)副本補齊。
我們同時采用對戰(zhàn)分析、火焰圖和日志查看等方法進行詳細記錄,以便后續(xù)調(diào)優(yōu)。此外,編寫了 SOP 手冊,涵蓋不同場景的應對措施,并進行了異常處理演練。
結束語
截至目前,我們已搭建 3 個基于 Doris 2.1.10 版本的線上集群,其中最大規(guī)模的集群達萬 core 級別、上百 TB 內(nèi)存和 PB 級磁盤。目前仍在擴容中,計劃在年底前新增百余臺 CN 節(jié)點和數(shù)十臺 Mix 節(jié)點。未來,我們將重點關注并探索以下能力:
- 存算分離:重點關注 Doris 3.X 版本的存儲分離架構,推動落地實踐。
- 湖倉一體:全面打通數(shù)據(jù)湖與數(shù)據(jù)倉庫,目前已小規(guī)模試點 Paimon;此外,針對數(shù)據(jù)外置場景,計劃通過異步物化視圖提升查詢性能。
- 智能物化視圖探索:引入語義建模與 AI 智能分析,降低研發(fā)與業(yè)務溝通門檻,并對智能推薦與模板化方案進行探索與實踐。

