内外部项目存在多种对帐环节,并且每一个对帐体系都存在必定代码重复,业务逻辑耦合性高。所以,能够考虑将对帐环节抽象出一套通用对帐系统。尽量适配各类对帐场景。数据库
一些套路:将系统划分为数据接入层,数据处理层,数据管理平台。微信
为了便捷快速的接入数据。平台应该提供多种数据接入方式和易于扩展的持久化方式。框架
离线接入方式:文件提交接口支持,手工文件上传支持,适配第三方系统(微信、支付宝流水)。支持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处理 |