內外部項目存在多種對帳環節,並且每一個對帳體系都存在必定代碼重複,業務邏輯耦合性高。所以,能夠考慮將對帳環節抽象出一套通用對帳系統。儘量適配各類對帳場景。數據庫
一些套路:將系統劃分爲數據接入層,數據處理層,數據管理平臺。微信
爲了便捷快速的接入數據。平臺應該提供多種數據接入方式和易於擴展的持久化方式。框架
離線接入方式:文件提交接口支持,手工文件上傳支持,適配第三方系統(微信、支付寶流水)。支持Excel、Cvs、Xml、Txt等文件模板解析處理。性能
在線接入方式:MQ或HTTP等方式接收數據。大數據
持久話方式:推薦使用Hbase、mongoDB等NoSQL數據庫存儲數據,提升讀寫性能,和存儲能力,並作出通用表結構設計方案。設計
對帳數據都存在兩張表上,如表A、表B。以此做爲對帳數據源。選擇表A、表B的多個字段進行關聯。並設置對帳規則(一對一,一對多,或自定義)進行對帳。接口
數據處理層是對帳比較核心的部分。主要完成的任務,就是根據設定的數據源、和對帳規則,高效的執行對帳邏輯,返回對帳結果。須要注意的核心點:數據覈對、差錯處理、對帳回調。支付寶
數據覈對:
一、須要對數量進行覈對。
二、須要分析出差別記錄。開發
差錯處理:
一、支持數據重推
二、失敗對帳自動重試
三、手工更改處理文件上傳
對帳回調:支持接入系統的對帳結果回調
軟件技術 | 項目用途 |
---|---|
JAVA-8 | 開發語言 |
SPRING+MYBATIS | 開發框架 |
MYSQL/PG-SQL | 平臺數據庫 |
MONGODB/HBASE | 對帳數據存儲 |
SPARK-STREAM | 大數據流處理 |
QLExpress | 規則引擎 |
POI | EXCEL處理 |