内外部项目存在多种对账环节,而且每个对账体系都存在一定代码重复,业务逻辑耦合性高。因此,可以考虑将对账环节抽象出一套通用对账系统。尽可能适配各种对账场景。
一些套路:将系统划分为数据接入层,数据处理层,数据管理平台。
数据接入层
为了便捷快速的接入数据。平台应该提供多种数据接入方式和易于扩展的持久化方式。
离线接入方式:文件提交接口支持,手工文件上传支持,适配第三方系统(微信、支付宝流水)。支持Excel、Cvs、Xml、Txt等文件模板解析处理。
在线接入方式:MQ或HTTP等方式接收数据。
持久话方式:推荐使用Hbase、mongoDB等NoSQL数据库存储数据,提高读写性能,和存储能力,并做出通用表结构设计方案。
对账管理平台
对账数据都存在两张表上,如表A、表B。以此作为对账数据源。选择表A、表B的多个字段进行关联。并设置对账规则(一对一,一对多,或自定义)进行对账。
数据处理层
数据处理层是对账比较核心的部分。主要完成的任务,就是根据设定的数据源、和对账规则,高效的执行对账逻辑,返回对账结果。需要注意的核心点:数据核对、差错处理、对账回调。
数据核对:
1、需要对数量进行核对。
2、需要分析出差异记录。
差错处理:
1、支持数据重推
2、失败对账自动重试
3、手工更改处理
对账回调:支持接入系统的对账结果回调
技术选型
软件技术 | 项目用途 |
---|---|
JAVA-8 | 开发语言 |
SPRING+MYBATIS | 开发框架 |
MYSQL/PG-SQL | 平台数据库 |
MONGODB/HBASE | 对账数据存储 |
SPARK-STREAM | 大数据流处理 |
QLExpress | 规则引擎 |
POI | EXCEL处理 |