金融場景 PB 級大規模日志平臺:中信銀行信用卡中心從 Elasticsearch 到 Apache Doris 的先進實踐

導讀:中信銀行信用卡中心每日新增日志數據 140 億條(80TB),全量歸檔日志量超 40PB,早期基于 Elasticsearch 構建的日志云平臺,面臨存儲成本高、實時寫入性能差、文本檢索慢以及日志分析能力不足等問題。因此使用 Apache Doris 替換 Elasticsearch,實現資源投入降低 50%、查詢速度提升 2~4 倍,同時顯著提高了運維效率。

本文轉錄自陳地長(中信信用卡中心信息技術部 高級工程師)在 Doris Summit Asia 2024 上的演講,經編輯整理。

中信銀行信用卡中心(以下簡稱“卡中心”)隸屬于中信銀行,致力于為廣大消費者提供涵蓋支付結算、消費信貸、中收增值和特色權益的“金融+生活”全方位服務。卡中心構建了高端、商旅、年輕、商超、車主及零售六大主流產品體系,形成了產品、渠道、經營、合規風控和服務五大經營體系,綜合實力在股份制銀行中名列前茅。

為確保業務系統的穩定運行、提升運維效率和用戶體驗,卡中心建立了大規模的日志云分析平臺。該平臺不僅需支持實時監控和故障排查,還需滿足金融監管對日志審計的嚴格要求。目前,平臺每日新增日志數據突破 140 億條、80TB,全量歸檔日志量超 40PB。

早期基于 Elasticsearch 構建的日志云平臺面臨存儲成本高、實時寫入性能差、文本檢索慢以及日志分析能力不足等問題。因此,卡中心決定引入 Apache Doris 替換 Elasticsearch,實現資源投入降低 50%、查詢速度提升 2~4 倍,同時顯著提高了運維效率。

日志數據分析運維需求背景

在當前日益復雜的業務需求下,催生出了各種復雜的應用系統,這些應用系統分布在 Linux、Windows 等多種操作系統之上,同時依賴于各種網絡設備、安全設備、中間件和數據庫等服務,這些軟硬件運行時每天可產生的日志量能達到 TB 級別。一旦系統運行出現異常,就需要通過分析日志進行問題排查。

日志的存在原本是通過其所記錄多樣化的數據、關鍵信息來幫助我們更好了解系統的運行狀態。然而,面對卡中心每日新增 TB 級別日志數據,當系統異常時,日志格式的多樣性同樣也給數據分析帶來極大的困難,主要挑戰如下:

  • 格式難以統一:日志數據以自由文本形式呈現,盡管相較于結構化數據信息更豐富,但其半結構化特性在數據分析和監控方面帶來較大挑戰。
  • 日志分析需求難以滿足:日志種類繁多、分析需求各異。對不同業務、數據庫和中間件全面分析與監控時,面臨諸多挑戰。
  • 運維效率低:出現問題時,運維工程師需要逐臺登錄服務器查看日志,效率低下,人為排障可能引發額外風險。
  • 缺乏可視化展示:常規日志分析方法無法以可視化展示,難以滿足統計分析和業務指標趨勢監控等更高水平的管理需求。
  • 難以評估影響范圍:難以通過事件及其相關的軟硬件日志了解對業務的影響,也無法對大量運行歷史數據關聯分析。

基于 Elasticsearch 的日志云平臺

為確保業務系統的穩定運行,提升運維效率和用戶體驗,卡中心早期基于 Elasticsearch 構建日志云平臺。整體采用 ELK 技術棧,支持應用日志、基礎組件、中間件、數據庫日志的存儲與分析。架構圖如下:

基于 Elasticsearch 的日志云平臺.png

日志數據通過 Filebeat 采集到 Kafka ,經過 Logstash 處理后存儲到 Elasticsearch 中。通過 Kibana UI 和自研 UI ,為開發和運維人員提供日志搜索以及全鏈路日志查詢等服務。

存在的問題:

  • 存儲成本高:在降本增效大背景下,業務對降低存儲成本的需求日益迫切。然而,由于 Elasticsearch 會對正排、倒排、列存等多份數據存儲,給降本提效帶來一定的挑戰。
  • 高吞吐實時寫入性能差:面對每天大量的新增數據,要求日志云平臺具備 GB/s、百萬條/s 的高吞吐寫入能力,并保證數據秒級寫入延遲,確保數據的實時性和可用性,但隨著數據量的增長 Elasticsearch 很難滿足。
  • 日志數據分析能力不足:Elasticsearch 分析能力較弱,只支持簡單的單表分析,而不支持多表 Join、子查詢、視圖等復雜分析,難以滿足愈發復雜的日志分析需求。

Doris VS Elasticsearch 性能評測

通過調研業界日志存儲領域的新進展,發現 Apache Doris 有明顯的優勢:

  • 高吞吐、低延遲日志寫入:支持每天百 TB 級、GB/s 級日志數據持續穩定寫入,同時保持延遲 1s 以內,確保數據的實時性和高效性。
  • 海量日志數據低成本存儲:支持 PB 級海量數據的存儲,相較于 Elasticsearch 的存儲成本可節省 60% 到 80%,并支持將冷數據存儲到 S3/HDFS 等低成本存儲介質,存儲成本可再降 50%。
  • 高性能日志全文檢索:支持倒排索引和全文檢索,對于日志場景中常見的查詢(如關鍵詞檢索明細,趨勢分析等)能夠實現秒級響應,為用戶提供極致的查詢體驗。
  • 強大的日志分析能力:支持檢索、聚合、多表 JOIN、子查詢、UDF、邏輯視圖、物化視圖等多種數據分析能力,滿足復雜的數據處理分析需求。
  • 開放、易用的上下游生態:上游通過 HTTP API 對接常見的日志數據源,下游通過標準 MySQL 協議和語法對接可視化分析頁面,為用戶打造全方位的日志存儲和分析生態。
  • 易維護、高可用集群管理:支持完善的分布式集群管理,支持在線擴縮容等操作,無需停止服務即可進行集群升級。

為更進一步驗證其性能,卡中心基于 httplogs 數據集和實際日志數據對 Doris 和 Elasticsearch 進行了性能測試,測試結果顯示:

在相同日志量下,Doris 相較于 Elasticsearch 表現優異:磁盤占用空間下降了58%,日志寫入峰值提升 32%,查詢耗時縮短了 38%。此外,Elasticsearch 使用了 9 臺 16 核 32G 的服務器,Doris 只用了 4 臺 8 核 32G 服務器,CPU 資源僅是 Elasticsearch 的 1/4。

Doris VS Elasticsearch 性能評測.png

基于 Apache Doris 的全新日志云平臺

綜合上述對比及測試結果,卡中心決定引入 Apache Doris 進行升級,替換早期架構中的 Elasticsearch。基于 Doris 提供日志的統一采集、清洗、計算、存儲、檢索、監控和分析等多項服務,實現一站式日志管理與分析。同時,Kibana UI 被替換為 SelectDB UI,基于 Doris 自研 UI 更貼合卡中心業務的需求。

基于 Apache Doris 的全新日志云平臺.png

01 統一日志云查詢入口

當前日志云集群規模約為 19 套,如果每套集群都有不同的查詢入口,查詢過程將顯得尤為繁瑣。因此,卡中心基于 Doris 建立了統一的日志云查詢入口,用戶可以在同一 UI 下查詢不同機房和系統的日志。

01 統一日志云查詢入口.png

02 基于日志的鏈路分析

卡中心整合了全鏈路監控體系的三大要素:指標、鏈路和日志,并基于 Doris 實現了日志鏈路分析及透傳功能。可將全鏈路監控中的鏈路追蹤 ID(Trace ID)傳遞到日志云查詢 UI,使雙向串聯成為可能。

具體來說,每筆請求鏈路可自動與日志明細關聯綁定,用戶可查看每筆流量日志的整體上下游信息,并在每個階段的對象上獲取相關日志,實現從鏈路到日志、日志到鏈路的穿透式查詢。此外,當發現錯誤鏈路或耗時鏈路時,可對關聯日志明細進行分析,打通排障最后一公里。

02 基于日志的鏈路分析.png

03 日志模式異常

為更好處理日志模式異常的問題,卡中心進一步開發了日志識別模版系統,可自動找出非預期的日志模式問題。

在日常運維排查中,注意到系統上線后,可能因潛在變更引發突發性問題,這些問題通常通過錯誤日志來體現。值得說明的是,這些錯誤日志的模式可能因變更而不同,例如,某些錯誤在變更前的系統中未曾出現,而在變更后卻頻繁出現,且其增長趨勢與以往截然不同。

因此,利用該模板系統能夠精準識別異常日志,并通過實時的告警推送機制,及時通知相關人員。這一功能不僅能夠幫助我們提前發現系統中潛在的問題,還能夠顯著提升問題響應速度,確保系統的穩定運行。

03 日志模式異常.png

04 優化實踐

在日志云場景中,使用 Apache Doris 構建新一代日志云存儲分析平臺,經過長時間的測試和驗證,總結出以下一些優化經驗。

表結構優化:

  • 基于時間字段的分區設計,開啟動態分區,提升數據管理和查詢能力。
  • 設置基于冷熱分離數據保留策略。
  • 設置基于磁盤屬性的熱數據寫策略,SSD 盤用于熱數據寫,提高寫入能力。
  • 使用 ZSTD 數據壓縮算法,有效降低數據存儲空間。
  • 合理設計字段索引,對于高基數字段使用 BloomFilter 索引,需要全文檢索的字段使用倒排索引。

配置項優化:

  • Compaction 優化,加大 Compaction 線程數:max_cumu_compaction_threads
  • 增大寫入端刷新前緩沖區大小: write_buffer_size
  • 開啟 tablet 均衡策略: enable_round_robin_create_tablet
  • 增大單個 tablet 版本數,提高寫入能力: max_tablet_version_num

數據寫入優化:

  • 開啟單副本導入,先寫入一個副本,其他副本數據從第一個副本拉取,導入性能提升 200%
  • 開啟單 tablet 導入,減少多個 tablet 寫入時帶來的文件讀寫開銷。
  • 提高單次導入的數據量,一次寫入 100MB 左右。

使用收益

以一個機房集群投產為例,基于 Doris 的日志存儲與分析平臺上線后,相較于原有的 Elasticsearch 架構,成功減少了日志冗余存儲,提高了日志數據存儲效率,同時提供了強大且高效的日志檢索與分析服務。以下是以東壩機房為例的具體收益:

  • 資源投入節省 50%: CPU 使用率使用率約為 50%,整體資源使用率僅為之前的 1/2。原先同樣數據規模,寫入 Elasticsearch 需要 10TB 空間,采用 ZSTD 壓縮技術,寫入 Doris 規模僅需要 4TB 。
  • 查詢提速 2~4 倍: 新架構以更低的 CPU 資源消耗帶來了 2~4 倍的查詢效率提升。
  • 增強日志可觀測能力: 通過穿透鏈路、指標、告警等平臺,提升了日志模式識別、分類聚合、日志收斂與異常分析等可觀測能力。
  • 提高運維效率: 新平臺提供極易安裝和部署的程序,以及易于操作的管理工具,簡化了服務、配置、監控和告警等操作,顯著提高了集群的擴縮容靈活性。

未來展望

未來卡中心將持續迭代日志系統, 并重點從以下幾方面發力:

  • 廣泛推廣 Doris:持續推進剩余機房 Elasticsearch 替換成 Doris,推進剩余的日志云 Elasticsearch 集群替換成 Doris。
  • 豐富日志導入預處理能力:增加日志采樣和結構化等預處理功能,進一步提升數據的易用性和存儲性價比。
  • 增強 Tracing 能力:打通監控、告警、Tracing 和日志等數據的可觀測性系統,以提供全方位的運維洞察。
  • 基于大模型的 AIOps:持續探索智能運維的最佳實踐,包括日志異常監測、故障預測和故障診斷等。
  • 擴大 Doris 使用范圍:除了日志場景,Doris 將逐步引入數據分析和大數據處理場景,增強湖倉一體的能力建設。

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

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

相關文章

虛幻商城 Fab 免費資產自動化入庫

文章目錄 一、背景二、實現效果展示三、實現自動化入庫一、背景 上一次寫了個這篇文章 虛幻商城 Quixel 免費資產一鍵入庫,根據這個構想,便決定將范圍擴大,使 Fab 商城的所有的免費資產自動化入庫,是所有!所有! 上一篇文章是根據下圖這部分資產一鍵入庫: 而這篇文章則…

游戲為什么失敗?回顧某平庸游戲

1、上周玩了一個老鼠為主角的游戲,某平臺喜1送的, 下載了很久而一直沒空玩,大約1G,為了清硬盤空間而玩。 也是為了拔掉心中的一根刺,下載了而老是不玩總感覺不舒服。 2、老鼠造型比較寫實,看上去就有些討…

親測有效!如何快速實現 PostgreSQL 數據遷移到 時序數據庫TDengine

小T導讀:本篇文章是“2024,我想和 TDengine 談談”征文活動的優秀投稿之一,作者從數據庫運維的角度出發,分享了利用 TDengine Cloud 提供的遷移工具,從 PostgreSQL 數據庫到 TDengine 進行數據遷移的完整實踐過程。文章…

C#,入門教程(01)—— Visual Studio 2022 免費安裝的詳細圖文與動畫教程

通過本課程的學習,你可以掌握C#編程的重點,享受編程的樂趣。 在本課程之前,你無需具備任何C#的基礎知識,只要能操作電腦即可。 不過,希望你的數學不是體育老師教的。好的程序是數理化的實現與模擬。沒有較好的數學基礎…

Linux探秘坊-------3.開發工具詳解(2)

1.動靜態庫和動靜態鏈接(操作) 靜態庫是指編譯鏈接時,把庫?件的代碼全部加?到可執??件中,因此?成的?件 ?較?,但在運?時也就不再需要庫?件了。其后綴名?般為“.a” 動態庫與之相反,在編譯鏈接時并 沒有把庫?件的代碼加?到可執??件中 ,?…

電腦開機出現Bitlock怎么辦

目錄 1.前言 2.產生原因: 1.系統異常關機 2.系統更新錯誤 3.硬件更換 4.CMOS電池問題 5.出廠設置 6.意外情況 3.解鎖步驟: 3.1:記住密鑰ID(前6位) 3.2:打開aka.ms/myrecoverykey網址 3.3&#…

C# 的 NLog 庫高級進階

一、引言 在 C# 開發的廣袤天地中,日志記錄宛如開發者的 “千里眼” 與 “順風耳”,助力我們洞察應用程序的運行狀態,快速定位并解決問題。而 NLog 庫,無疑是日志記錄領域中的璀璨明星,以其強大的功能、靈活的配置和出…

Avalonia系列文章之小試牛刀

最近有朋友反饋,能否分享一下Avalonia相關的文章,于是就抽空學習了一下,發現Avalonia真的是一款非常不錯的UI框架,值得花時間認真學習一下,于是邊學習邊記錄,整理成文,分享給大家,希…

10 為什么系統需要引入分布式、微服務架構

java技術的發展 在java開始流行起來之后,主要服務于企業家應用,例如ERP,CRM等等,這些項目是為企業內部員工使用,我們的思維是怎么用設計模式,如何封裝代碼。讓開發人員關注到業務上去,系統也就那么幾十幾百…

第6章:Python TDD實例變量私有化探索

寫在前面 這本書是我們老板推薦過的,我在《價值心法》的推薦書單里也看到了它。用了一段時間 Cursor 軟件后,我突然思考,對于測試開發工程師來說,什么才更有價值呢?如何讓 AI 工具更好地輔助自己寫代碼,或許…

JDK 23 和 JDK 21 的區別

JDK 23 和 JDK 21 的區別主要在于支持周期和功能特性: 支持周期: JDK 23:此版本是一個常規發布版本,支持時間較短,通常是六個月。這種版本適合希望使用最新特性和改進的用戶。JDK 21:這是一個長期支持&…

springboot自動配置原理(高低版本比較)spring.factories文件的作用

SpringBootApplication public class SpringSecurityApplication {public static void main(String[] args) {SpringApplication.run(SpringSecurityApplication.class, args);}}注解SpringBootApplication Target({ElementType.TYPE}) Retention(RetentionPolicy.RUNTIME) Doc…

使用Websocket進行前后端實時通信

1、引入jar&#xff0c;spring-websocket-starter <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId> </dependency> 2、配置websocket config import org.springframe…

vue2 - Day05 - VueX

Vuex 是 Vue.js 官方的狀態管理庫。它是一個讓你能在應用中集中管理共享狀態的工具。當應用的規模逐漸增大&#xff0c;組件之間的數據傳遞變得越來越復雜時&#xff0c;Vuex 就成為了救星&#xff0c;提供了一個集中式的存儲來管理所有的組件狀態&#xff0c;并且保證狀態以一…

中型項目中 HTTP 的挑戰與解決方案

一、引言 在當今數字化時代&#xff0c;HTTP&#xff08;超文本傳輸協議&#xff09;作為Web應用程序的基礎通信協議&#xff0c;在中型項目的開發中扮演著至關重要的角色。它為客戶端和服務器之間的數據傳輸提供了標準規范&#xff0c;使得各種類型的應用&#xff0c;從簡單的…

IDEA導入Maven工程不識別pom.xml

0 現象 把阿里 sentinel 項目下載本地后&#xff0c;IDEA 中卻沒顯示 maven 工具欄。 1 右鍵Maven Projects 點擊IDEA右側邊欄的Maven Projects&#xff0c;再點擊&#xff1a; 在出現的選擇框中選擇指定的未被識別的pom.xml即可&#xff1a; 2 Add as maven project 右鍵p…

VUE學習筆記(入門)5__vue指令v-html

v-html是用來解析字符串標簽 示例 <!doctype html> <html lang"en"> <head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>Document<…

OSPF的LSA的學習研究

OSPF常見1、2、3、4、5、7類LSA的研究 1、拓撲如圖&#xff0c;按照地址表配置&#xff0c;激活OSPF劃分相關區域并宣告相關網段 2、1類LSA&#xff0c;每臺運行了OSPF的路由器都會產生&#xff0c;描述了路由器的直連接口狀況和cost 可以看到R1產生了一條router lsa&#xff0…

小結:OSPF協議的工作原理

OSPF&#xff08;開放最短路徑優先&#xff09;優點&#xff1a; 快速收斂&#xff1a;OSPF的收斂速度較快&#xff0c;能迅速響應網絡拓撲變化&#xff0c;并在發生故障后快速更新路由信息。 支持大規模網絡&#xff1a;OSPF適合大型網絡&#xff0c;可以通過劃分區域來減少網…

TypeScript - 利用GPT輔助學習

TypeScript 一、基礎1. 安裝 TypeScript2. 創建你的第一個 TypeScript 文件3. 編譯 TypeScript 代碼4. 變量聲明與類型注解5. 函數與類型注解6. 總結 二、進階常用類型1. 類型別名2. 對象類型3. 類型斷言4.typeof 操作符 高級類型1. 類2. 交叉類型3. 泛型與 keyof4. 索引簽名類…