CN| ENG
联系我们 华体会hth体育官网

华体会hth体育官网:支付系统设计入门:核心账户体系架构

来源:华体会hth体育官网    发布时间:2025-06-06 12:31:20

第三方支付作为中立的第三方,截断了用户和商户的资金流,资金先从用户账户转移到第三方支付平台账户,

产品特性
hth华体会app下载:

  第三方支付作为中立的第三方,截断了用户和商户的资金流,资金先从用户账户转移到第三方支付平台账户,得到双方确认后再从支付平台账户转移到商户账户。

  支付平台为客户提供了资金流转以及结算等服务,必须建立自己独立的账户体系,以此来保证每个客户资金的准确性以及资金变动的可追溯性,这套账户体系在支付平台中成为“核心”,整体类似于银行的账户核心,但会比银行账户核心简单一些。

  举个可能不是特别恰当的例子,比如腾讯滨海大厦,在等式的左边他体现为公司的资产,在等式的右边,负债可以表现公司为了兴建大厦从银行的贷款,所有者的权利利益可以表现为公司股东的投入。等式右边,负债能够理解为外债,所有者的权利利益能够理解为内债(欠股东的钱)。这里都是针对腾讯公司的法人而言,资产,负债,所有者的权利利益都是这个法人的权利和义务。

  另外,也能够理解为等式的左边资产是可用的资源,是公司的权利,而等式的右边是为了解释左边而存在,用来说明资产的来源,是公司的义务。

  上面的会计恒等式中,除了强调相等,还强调左右,任何一笔交易,都一定要保证这个等式成立,所以要么两边同时加或同时减(比如左边资产增加,右边负债也增加),要么等式单边内部平衡(比如等式左边,有资产增加,对应就有资产减少)。所以所谓的“复式记账法”简单理解就是一笔交易写两遍,使得左边和右边互相匹配,这样做的好处很明显,容易核对不容易出错。在会计中把这种复式记账法成为“借贷记账法”,强调“有借必有贷,借贷必相等”。

  两个字意思都有歧义,不要尝试从字面意义去理解,在会计中借贷只是两个记账符号,表示两个相反的方向,不绝对代表数量的增减,所有的账户都是左借右贷,资产类账户增加是借,减少是贷,负债类账户刚好相反,增加是贷,减少是借。

  上面这些概念对于没有会计基础的人来说,有时会比较难以理解,对于程序员来说,只必须了解到一笔数至少记两次,至少会在两个相关的账户中记录金额相等,借贷相反的记录,两个账户的类型可以是相同的(比如都是负债类账户),也可以是不同的。

  账户余额就是账户中的资金数目,任何余额的变动都需要记录流水,而凭证是用来记录交易过程的信息。

  凭证单理论上可以放到业务层,不放在账户核心层,这样账户层就只有余额和流水。三者主要内容包括:

  账户余额记录用户的资金数目,当发生交易时,会对余额进行 update 操作,增加或减少资金的数据。一般来说包括:

  当余额发生变更时,需要记录流水,以此来跟踪余额的变化,一般包括如下内容:

  凭证用来记录交易过程中的信息,是用户交易的依据。凭证对应到支付平台内部的各种单类,比如充值单,体现单,交易单等等。一般包括:

  复式记账法,一笔交易需要在两个账户中进行记录,在海量支付系统中,两个账户大概率上不在同一台 DB 上,甚至也非常有可能不在同一 IDC,这就需要引入分布式事务,分布式事务本质上是进程间的同步调用,性能会一下子就下降,同时引入了较高的复杂性,比如需要仔细考虑事务一半成功一半失败时的补偿机制或者回滚机制。所以复式记账法带来的分布式事务导致可靠性以及性能都会受到影响;

  热点账户,某些账户的交易十分频繁(比如京东账户,拼多多账户),而每笔交易都会对应到余额字段的 update 操作,更新时需要对账户进行加锁操作,频繁加锁释锁会对 DB 造成极大的性能压力,可能会超过 DB 的能承载的极限。压测显示 MySQL 单条记录 update 最大性能500次/s(after_commit 模式)。

  通常情况下,复式记账的借贷需要在同一个事务里面完成,但分布式事务引入了性能和可靠性问题,所以能将一个分布式事务拆分成两个本地事务,即“先借后贷”,一个是“借”的实时事务,加一个“贷”的异步事务。当完成实时事务后就可以对外返回成功,异步事务后续进行,这样简化了事务复杂性,当如也会引入其他的问题,后面会讲到。

  所有将分布式事务拆分成本地事务后引入的问题都是类似的,在事务理论中的“ACID”中,拆分后牺牲了C(一致性)强一致性,但每个本地事物是一致的,另外也缺乏“I”(isolation)隔离型,缺乏隔离型会导致比如“脏读”的异常,即其他事务读到了尚未完全完成事务的更新,这个也很好理解,比如用户本该加100块,但由于异步导致这100块没有马上加上。这个看起来是个大问题,但具体分析:

  虽然风险可控,但还是一定要考虑好程序异常时对业务的回滚、重试以及对账机制,保障整一个完整的过程结果的最终一致性。

  特定应用场景下,可以不记余额,这其实违背了记账原则,但在某些场景下,能够最终靠其他手段来补偿和保障,典型的应用比如 C2B2C 交易,中间的 B 账户可以不记余额,它的存在只是为了作为中间交易的对手方。

  合并入账,就是先将余额更新操作 hold 住,暂存入待入账队列(能够正常的使用 DB 或者 KV),累积到少数或者到一段时间时,将发生金额进行汇总合并,更新一次余额,从而大幅度的提高入账效率。合并入账借贷先后原则和前面类似,为了防范风险,只对入账(负债类账户的“贷”)进行合并,出账仍然需要实时完成。

  先借后贷以及合并入账只能解决入账时的热点问题,而出账都是需要实时更新(为避免透支风险)。未解决出账热点,需要引入多账户体系,即通过新建多个账户,把业务均摊到多个账户上,从而解决热点问题。

  多账户不但可以解决出账热点问题,对入账热点问题也有效,本质上多账户就是把一条 DB 记录的更新均分到了多个 DB 记录上。

  功能分离型有两个出发点,一是业务特性,出入帐性能压力不一样;二是风险和管理上的考虑,一个完整账户比多个完整账户的风险和管理难度要小很多。功能分散型子账户有以下几类:

  入账子账户完成入账操作后,定时将资金向上归集到主账户,之后主账户将资金调拨到出账子账户,供出账操作,某些情形下。依据业务特性,资金调拨有一下一些场景:

  目前财付通的记账核心大部分场景是基于柔性事务,少部分是基于分布式事务。事务拆分的依据就是上面提到的“先借后贷”。

  下面粗略地介绍下基本的账务处理流程,以 C2B 支付为例,即个人支付给商户的场景,事务处理如下所示,可以分成三部分,买家账户处理,凭证处理,以及卖家处理:

  update买家余额,余额减少insert买家流水insert支付凭证交易单update卖家余额,余额增加insert卖家流水

  柔性事务中事务分成两个子事务,买家事务+凭证合并为第一个本地事务,卖家事务作为第二个事务,基本的处理逻辑如下:

  远程日志:当有一笔支付请求发送到事务管理器后,事务管理器首先通过本地的远程日志代理写远程日志,日记代理将日志发往异地的远程日志服务,远程日志服务将日志记录到日志文件里面持久化,同时会将事务信息记录到黑名单 kv 中。黑名单校验模块将会校核黑名单 kv,对于已经同步到异地备 DB 中的用户将会消除;

  买家本地事务:远程日志记录完成后,事务管理器发起第一个事务,调用资源管理器,资源管理器将与账务 DB 交互,减买家余额,记录流水,并且记录交易单;完成第一个事务后,事务管理器将发送异步消息给异步入账服务;

  卖家本地事务:异步入账服务收到异步消息后,将发起第二个事务,调用资源管理器,资源管理器与账务 DB 交互,加卖家余额,记录流水。

  美国总统特朗普与美国企业家、前“政府效率部”负责人马斯克矛盾公开后,5日迅速升级为隔空骂战。特朗普威胁削减马斯克相关企业的政府补贴和合同,特斯拉市值立即蒸发超1500亿美元。

  47岁女星河智苑街头近照曝光,肌肉线条明显,青春活力被赞“逆生长”,其与玄彬主演的《秘密花园》已播出15年

  300万多万福彩大奖变158万? 男子给彩票店主转20元买10注彩票开奖后喜中大奖 店主却告知只买了5注 奖金缩水本应中300多万变158万#彩票 #中奖 #奖金

  #女子开收割机收麦发现地里藏尖锐钢筋 #河北dou知道 #收割机 #钢筋

  95后男子花6元买彩票,中2930万大奖:检查了四遍,激动得一宿没睡着

  “不就是发点福利嘛,大家辛苦这么久...”节假日到了,不少单位又开始琢磨着给职工发点福利,这样的场景在不少单位反复上演。

  骂战升级!马斯克放猛料,称特朗普“忘恩负义”,指控特朗普名字在爱泼斯坦档案中

  据中新网,当地时间6月5日,美国总统特朗普与美国企业家、前“政府效率部”负责人马斯克的矛盾全面公开化,在社会化媒体“隔空开骂”。


上一篇: 禾工设备再晋级:江苏用户三年内连购CT-1PLUS与AKF-V6
相关产品
  • 支付系统设计入门:核心账户体系架构
    More
  • 4月10北京环保展开幕!深国安气体检测仪前沿新技能行将揭晓
    More
  • 第二十二届中国(漯河)食品博览会专门设置食品包装机械展区
    More
  • 禾工设备再晋级:江苏用户三年内连购CT-1PLUS与AKF-V6
    More
  • 蓝景科技 便携式 COD 检测仪:看护水质便是看护咱们的绿色家乡
    More
  • 蓝景科技 生物毒性剖析仪:看护水质安全的“生物岗兵”
    More
  • 力合科技:公司开发了一系列温室气体监测仪器
    More
  • 加“力度”、添“热度”、提“速 人形机器人正从实验室走向千行百业
    More