Python微信订餐小程序课程视频
https://edu.csdn.net/course/detail/36074
Python实战量化交易理财系统
https://edu.csdn.net/course/detail/35475
上篇文章聊到了对账系统业务逻辑以及千万数据集对账系统存在的难点,这篇文章就来聊下千万级数据集下对账系统实现方案。
首先我们先来看下对账整体时序图,先有个印象:
下面整篇文章将会围绕上面时序图开始讲解,由于文章篇幅过长,所以文章将会拆分成上下两部分。
数据平台
上次文章中提到,千万级数据需要使用 Hive,Spark等相关大数据技术,这就离不开大数据平台的技术支持。
简单聊下我们这边大数据平台DP (Data Platform),它提供用户大数据离线任务开发所需要的环境、工具以及数据,具有入口统一性、一站式、简化hadoop本身的复杂性、数据安全等特点。
DP 平台提供功能如下:
- 数据双向离线同步,MySQL 与 Hive 互相同步
- 大数据离线计算,支持SQL(SparkSQL/HiveSQL/Presto)形式处理各类的数据清洗、转化、聚合操作,也支持使用MapReduce、Spark等形式,处理比较复杂的计算场景
- 即时的SQL查询,允许用户即时的执行SQL、查看执行的日志和结果数以及进行结果数据的可视化分析
- 数据报表
那本篇文章不会涉及具体的大数据技术相关的实现细节,相关原理(主要是咱也不会~),主要聊下对账系统如何联合 DP 平台实现完整数据对账方案。
对账系统概览
开头的时序图,我们可以看到整个对账过程设计好几个业务流程,那在这里对账系统内部将会维护一个流程状态机,当前一个流程处理结束之后,下一个流程才能被触发。
由于当前对账系统实现方案,涉及对账系统与 DP 平台,对账系统目前没办法调用 DP 平台触发任务,但是 DP 平台可以通过通过 HTTP 接口调用对账系统。
所以当前流程触发的方式使用的是定时任务的方案,每个流程有一个单独的定时任务。
对账系统内的定时任务触发的时候,将会判断当前流程是否已经到达执行条件,即判断一下当前任务的状态。
每个定时任务触发时间人为设置的时候