資料脫敏大資料架構設計

油膩的Java發表於2019-03-25

需求背景

系統有資料識別、資料脫敏邏輯,支援可配置規則,自定義等,需要進行異構資料同步,大資料量。現在針對以下幾個需求進行講解

1、支援冗餘設計 2、支援任務自動分發,支援自動負載均衡 3、支援隨時擴容節點而無需關停原有的系統和業務

架構和模組

架構圖

脫敏擴充套件性架構圖.png

五核心模組及其主要功能

  • 排程平臺

    • 使用Nginx方式來呼叫資料中心,通過註冊中心獲取資料中心的服務列表
    • 可以合理的根據資料同步的情況,去呼叫服務;比如資料同步可能存在的順序性,執行延時;
    • 讀取控制檯DB的配置資訊,定時執行資料同步任務
    • 對資料同步的呼叫,可以按照簡單的輪詢方式,也可以根據資料同步伺服器的效能情況,進行負載均衡
  • 資料同步

    • 負責執行資料庫異構資料同步任務,可支援增量,全量模式,用DataX框架來實現
    • 服務於排程平臺的呼叫
    • 會儲存資料同步的執行結果,供控制檯進行展示
    • 會上報伺服器的效能指標到資料同步DB,以供排程平臺參考
  • 控制檯

    • 配置管理介面,服務於使用者進行資料同步任務的配置資訊,並儲存到控制檯DB中;
  • 資料識別

    • 負責針對資料庫的資料進行資料識別任務
  • 資料脫敏

    • 按照內建規則、自定義配置,負責脫敏資料
    • 可提前進行資料脫敏,以供資料同步轉換環節呼叫

三個輔助服務發現模組

  • 註冊中心
    • 用於服務發現和註冊
    • 資料同步註冊例項並定期報心跳
    • 可以用zookeerper來實現
    • 排程平臺通過域名訪問註冊中心獲取資料同步的地址列表
  • Nginx
    • 和域名系統配合,協助排程平臺訪問註冊中心獲取資料同步地址列表
    • 和域名系統配合,協助使用者訪問控制檯進行配置管理

可用性分析

高可用通過Nginx、註冊中心來實現,可以支援動態擴容。每個主要模組都是以無狀態叢集方式部署的,各自模組都可以通過註冊中心來實現服務註冊,模組之間的呼叫服務發現來獲取,並以域名方式實現。

考慮到擴充套件,所以設想的方案是儘可能的做到每個服務職責單一。

這樣的拆分,也是考量到每個環節的瓶頸都不一樣,目前預估不是很精確,這樣可以為後續擴充套件提供方便性。

資料脫敏、資料識別需要單獨獨立出來,原因:本身的服務不在資料同步中,可能提前預處理進行。

通過叢集部署方式,支援冗餘設計。

排程平臺、Nginx叢集通過資料同步效能情況,實現任務自動分發,支援自動負載均衡。

可用性分析

可用性表格分析

場景 影響 降級 原因
某臺資料同步下線 無影響 - 資料同步無狀態,排程平臺重連其他的資料同步服務。
所有資料同步下線 排程平臺無法執行資料同步任務 控制檯正常執行;排程平臺把資料同步任務放入執行佇列,等待執行 -
某個Nginx下線 無影響 - 多Nginx部署,資料完全同步,註冊中心、控制檯域名通過SLB自動切換到其他存活的Nginx
控制檯DB當機 排程中心無影響,控制檯無法更新配置 排程平臺開啟配置快取後,對配置的讀取不受資料庫當機影響
某臺資料識別、資料脫敏下線 無影響 - 資料識別、資料脫敏無狀態,資料同步重連其他的資料識別、資料脫敏同步服務
全部資料識別、資料脫敏下線 無影響 - 資料同步可執行線上脫敏功能,會影響任務時長。

結論

資料同步、控制檯、排程平臺、資料識別、資料脫敏是資料脫敏的幾大核心微服務模組,相互協作完成配置中心業務功能,Nginx、註冊中心是輔助微服務之間進行服務發現的模組。

採用微服務架構設計,架構和部署(部署方式可以用容器思路來操作)都有一些複雜,但是每個服務職責單一,易於擴充套件。

關注油膩的Java

相關文章