同步记账还是异步记账?
区别?
同步记账是直接记账,而不是等到结算的时候才记账。所以,是没有记账-交易流水表的。
异步记账,是等到结算的时候才记账。所以,异步记账只是站在账户的视角生成了一笔记账-交易流水,这笔记账-交易流水有什么用呢?没有用,只是记录流水而已,因为后面也不会被使用。所以,异步记账,并不是真正的记账,也根本没有记账,它只是生成了一笔流水,这笔流水也不会被操作。
支付
异步记账。
转账
同步记账。
为什么支付是异步记账,转账是同步记账?因为转账没有结算的概念,但是支付有结算的概念。说白了,就是商家收钱之后,需要等到结算之后,才能被提现。这里的结算,一般有一个结算周期,比如,准实时/T+0,或者T+1,T+7。
既然,有结算周期,就要基于原始交易数据,生成一个交易-待结算数据。
表
账户
1.记账表 //最主要的核心的账户表
记账-流水表 //主要作用是备份,即每次更新记账表,都有一笔记账-流水来记录这个更新操作。
2.记账-交易流水表 //账户视角的交易流水。主要作用也是备份,就是交易数据在账户视角的记录。
交易
支付
1.交易数据表 //交易的原始数据
2.交易-结算数据表 //交易的结算数据,一开始是未结算
转账
1.交易数据表 //只有交易数据,没有结算数据
何时生成数据,或者更新数据?
转账
对账查询时,确认成功之后,
1.更新交易状态为成功
2.同步记账
支付
对账查询时,确认成功之后,
1.更新交易状态为成功
生成交易-待结算数据
2.异步记账 //其实就是生成一笔账户-交易流水
结算
基于定时任务 + 线程池。扫交易-待结算数据。主要干两件事情:
1.记账 //这个时候,才是真正的记账。而且,这里的记账和同步记账一模一样的,因为调用的就是同一个方法。
2.记账成功之后,更新结算状态为成功
同步记账
主要干两个事情
1.记账 //更新记账金额
2.流水 //新增记账流水