目錄
1、其他
2、業務背景和目標
2.1?業務目標
2.2 核心痛點
3、技術選型
3.1?實時工具同步選型
3.2?OLAP數據庫選型
3.3?候選技術路線對比
3.4?技術難點
3.5?技術選型推薦
? ? ?3.5.1、推薦的技術路線
? ???3.5.2 架構示意圖
4 、可行性驗證方案??
??4.1 測試用例設計?
??4.2 非功能性指標??
??5、 風險與應對策略???
1、其他
2、業務背景和目標
支撐產品提出的全局搜索需求,需支持項目、任務單、任務、文檔、圖紙、表單、審批、知識、工具、用戶 基本字段以及擴展字段的篩選,并支持關鍵字搜索功能。
由于數據篩選的字段可能來自不同的數據庫(例如–任務的篩選字段有所屬項目以及任務單),需要將來自不同模塊的數據進行數據整合。
本文檔主要專注于數據實時同步方案,主要有兩個源端:Mysql、Dameng
整體方案大概如圖所示:
2.1?業務目標
-
功能性需求:
- 支持多字段模糊搜索(響應時間≤500ms)
- 中文人名拼音搜索支持
- 數據實時性要求(秒級延遲)
- 同義詞擴展搜索能力
2.非功能性需求:
- 響應時間:≤500ms
- 實時數據同步延遲 ≤ 10s(業務容忍閾值)。
- 系統可用性:≥99.9%
- 信創環境適配要求
2.2 核心痛點
-
現有系統瓶頸
-
MySQL模糊查詢性能差(全表掃描)。
-
跨庫(MySQL基礎庫 +MySQL業務庫 )聯合查詢無法實現。
-
3、技術選型
3.1?實時工具同步選型
CloudCanal | 支持 | 離線/實時支持 | 有 | 支持 | 低 | 低,
|
|
| 操作簡單 專注于數據庫實時同步和增量數據遷移(CDC) |
|
RestCloud | 支持 | 離線/實時支持 | 有 | 支持 | 中 | 中,CPU:Intel 1.6G 4核或以上 內存:可用內存8G或以上(不包括操作系統等其他程序占用內存) 可用硬盤空間:40G或以上 |
|
| ETL能力強、組件多 ETL+CDC |
|
Flink CDC+Hadoop(HDFS)+Flink | 支持 | 支持 | 無 | 部分支持(Flink 支持) | 16 核CPU 24G 內存 | 無 |
| - 技術棧統一 - 擴展性強 | - 實施復雜度高 - 運維成本大 |
全量遷移速度(監聽相同源庫)-無ETL處理
CC | mysql | Doris | 1w/1-2s | 北京內網 |
RestCloud | mysql | Doris | 1w/600s | 北京內網 |
Flink CDC | mysql | Doris | 1w/4-5s | 北京內網 |
增量遷移速度(監聽相同源庫)-無ETL處理
CC | mysql | Doris | 1w/1s-2s | 北京內網 |
RestCloud | mysql | Doris | 1w/300s | 北京內網 |
Flink CDC | mysql | Doris | 1w/4-5s | 北京內網 |
結論:根據需求、復雜度、成本及其性能:選擇CloudCanal 更加合適
3.2?OLAP數據庫選型
Analytical Data store(分析數據存儲選型)
ES | 支持 | 支持 | 支持 | 支持 | 需要使用DSL語言進行查詢,不支持開發人員熟悉的sql語法 |
Doris | 不支持 | 支持(現在版本不支持倒排索/分詞引,2.0 版本以上) | 不支持 | 支持 |
|
Hbase | 不支持 | 不支持 | 不支持 | 不支持 |
|
ClickHouse | 不支持 | 支持 | 不支持 | 支持 |
|
3.3?候選技術路線對比
大數據技術架構草圖
2.1 基于CC工具實現數據同步,在Doris中進行物化視圖操作
2.2 基于CC工具實現數據同步+ETL+Join
? ? ? ? ?
綠色代表:CC已經支持;紫色代表需要根據業務進行ETL進行處理;橘色代表我們合并之后的寬表。其中自定義代碼最重要的點是選定事實表
基于CC+視圖/物化視圖操作 | 視圖(無索引/不能添加分詞索引) (同步/異步)物化視圖-同步視圖單表/異步視圖實時性都是以小時/天為單位的 | 缺失 |
基于CC+ETL+Join(鏈表查詢) | 源端為Dameng不支持JSONB格式/源端為Mysql Json類型轉換不一致 | 缺失 |
3.4?技術難點
- 跨數據庫實時同步:需處理Mysql/Dameng到Doris的異構數據轉換
- 數據一致性保障:CDC過程中的斷點續傳與異常恢復機制
3.5?技術選型推薦
? ? ?3.5.1、推薦的技術路線
? ? ??采用CloudCanal實現實時同步+ETL處理+Join(鏈表查詢)
? ? ? ?推薦原因如下:
- 技術延續性:已有使用/部署經驗
? ???3.5.2 架構示意圖
? ? ??
? ? ??
4 、可行性驗證方案??
??4.1 測試用例設計?
CC全量同步(10w數據) | 數據完整性/耗時 | <10秒完成 |
CC增量同步(1w數據) | 延遲時間/數據一致性 | 1-2秒 |
Doris搜索響應(110w數據) | 模糊搜索 |
|
故障恢復測試 | 斷點續傳能力 | 通過 |
??4.2 非功能性指標??
- 性能:搜索響應時間≤400ms(優于需求500ms)
- 穩定性:無數據丟失
??5、 風險與應對策略???
Doris版本安裝(→v2.1.10) | 提前搭建測試環境驗證 | - |
CC許可證到期(3個月) | 已確認可免費續期申請 | - |
拼音搜索實現復雜度 | 采用開源pinyin4j組件預處理 | - |
Mysql→ Doris json類型到目標端被更改為TEXT | 通過提前建表即可 | - |
Dameng 不支持JSONB同步 | 通過自定義代碼實現 | - |
大量數據更新影響穩定性(在 1 對 N 的數據關系中,若“1”端數據發生變化,可能導致寬表數據大規模更新,對服務穩定性構成挑戰) | 可以利用結合join連表 | - |