支付宝架构的PPT中对记账部分的说明,分内外账户,如图所示。那么支付宝系统为什么要采用如此设计呢?
我们做支付系统的架构师们应该都明白这么一个道理,为提高交易性能,交易必须与账务分离,以提高交易处理性能和效率,从而有针对性的分块解决复杂业务逻辑。所以,我们在支付系统设计中一般是将记账为分2个步骤,支付成功后系统同步记录流水账,异步通知会计系统做复式记账。
分内外账户的原因
所以在支付宝架构的PPT中就体现为了,流水账是分户账户(外),而会计记账是分户账户(内)。
分户账(外)是外围业务系统的账户系统,采用单式记账法。一方面记录了原始交易流水;另一方面原始交易更容易与合作方进行对账。
分户账(内)是最核心的账户系统,采用复式记账法。这部分主要记录结构账务,严格按照会计分录。一方面便于出统计分析的报表(如手续费、分润等计算);另一方面结构账更容易计算借贷平衡和提供账户余额(为日终子系统提供数据来源的稳定性保证)。
不同子系统的功能
支付宝整个交易架构分为了记账子系统、分录子系统和日终子系统就比较好理解了。
记账子系统:参与联机交易,根据不同的联机交易实现业务逻辑,未来在业务和架构扩展上,在支付产品层只需要对这部分功能进行修改。在一些电商平台和支付公司系统里,划分更加清晰,将记账子系统联机部分拆分出独立的支付引擎模块和业务实现模块。其中支付引擎模块只关注账户扣减和应收应付订单的记录,这部分为标准化服务,无需扩展;而业务实现模块根据业务的特点和逻辑单独进行开发。
分录子系统:这部分主要针对会计中的六大会计科目:资产类账户、负债类账户、所有者权益类账户、损益类账户、成本类账户、共同类账户,将交易流水记录为会计科目,针对每一笔交易流水根据借贷平衡来保证账务不会出错。
日终子系统:主要完成两个任务:一是会计试算平衡,来保证账户系统的平衡,并且与实际内外部的资金进行核对对账;二是日切后批量统计,为数据报表分析提供支持,还可以做一些大数据相关任务。
总结
从技术上来说,记账并不是支付系统设计中最难的,风控、信用,实施起来比记账难多了。但从业务的角度来说,记账部分可以说支付业务过程对新手最难理解的部分了,因为它涉及到支付所有相关的概念。建议新手可以先买一本会计相关的书籍进行阅读和学习,然后再来理解和设计这部分功能。