支付类平台保障资金安全和稳定运行的技术难点和解决办法
悬在支付类平台头上的达摩克利斯之剑——保障资金安全和稳定运行是如何实现的。主要讲解基础体系、资损控制和账务高可用性三个方面,在实践中遇到的难点和解决办法:基础体系
原有系统承接各种业务需求,很好的满足当时的业务需要。但缺乏全站统一的会员、账务、交易基础体系,支付平台实施过程必须面对基础体系融合、切换和迁移的种种困难。因此在基础体系中首先要完成:
(1)会员体系融合
(2)统一账务体系
(3)统一交易中心
其次,新老交易系统迁移时要采用逐步分流、兼容过渡的方式。建立流量分流系统,切换流量从小到大分步验证新交易的正确和兼容性;例如针对退款等此类关联交易,按同源处理原则分流到原正单处理的系统兼容过渡。这样,新交易既能得到充分验证,同时切换迁移时上游系统或外部用户无感知。资损控制金融机构存在的意义就是承担风险、获得收益,作为第三方支付公司,资损控制是资金安全的重要指标,这里所说的资损是指交易、账务等系统因程序逻辑或系统异常导致的资产损失。
(1)幂等控制
分布式架构各系统服务间的访问难免出现处理中断或访问超时等情况,通常的做法是通过重试补偿的方式解决,对于支付系统这种重试如果没有幂等控制就会产生资损,在恶化的情况下甚至是灾难。
新支付平台从业务、交易、支付、账务、金融渠道的关键链路上增加幂等控制和***流水号,具体来说就是在数据库上增加一张幂等锁表,用流水号控制资金转移活动的重复执行。
(2)资金核算
除了联机交易期间控制资损之外还需进行资金核算,日清月结确保每日交易、账务资金无误;主要资金核算内容包含下图所示:
(3)数据一致性
通常一次支付过程需要涉及多个支付工具或多个账户的资金转移,特别是组合支付工具的场景。步骤一旦出现不一致,则会出现资金风险;新支付平台业务流程采用“先收后付不垫资”原则和“掉单补查”机制控制数据不一致产生的资损,后续规划使用最终一致性的分布式事务或称柔性事务来解决此类数据不一致问题。账务高可用性高可用性是支付服务质量的重要指标。平台的业务量越来越大,系统越来愈多,特别是关键链路上的核心系统,如:账务核心的异常,就会影响全站大面积的业务。下面介绍账务高可用性设计中的缓冲记账和异步记账。
(1)缓冲记账
参与缓冲记账的账户在账务请求时系统先将记账信息登记在缓冲区,缓冲记账每隔一定时间对于当日的缓冲账务操作请求进行逐笔记账并更新账户余额。这样即使有大批量业务数据的账户,账户余额和账务明细每隔几分钟更新一次,在一定时间内能满足账户查询的需要,同时能解决热点账户并发引起的数据库锁超时问题。
(2)异步记账
异步记账是在特殊业务场景下的记账优化,当业务对账户余额实时一致性要求不高时,可以通过异步记账,缓解高峰时段大量同步调用账务服务而产生的记账压力。本文作者:网银在线资深架构师 阮森灵
根据实际场景精简了文章中的部分细节内容,全文刊登在京东内刊《架构师》杂志第四期
本文为原创作品,为尊重作者的劳动成果,请转发务必注明出处及作者。
相关文章
- 发现 Linux SpaceFM 文件管理器的威力
- 夯实数据智能底座 共筑数字经济发展“新基石”
- 五分钟教你使用console.log发布公司的招聘信息
- 微软发布 Windows 11 Beta 预览版 Build 22621.1250 和 22623.1250 (KB5023008)
- Windows 11 学院:在 Windows 11 Build 25290 上如何为文件管理器启用标签页拖拽支持
- 微软Windows 11 Dev 预览版 Build 25290 发布:带来新的开始菜单提醒角标
- 微软正用全屏通知提醒 Windows 10 用户免费升级 Windows 11,要点击 5 次才能退出
- Linux Mint 21.2 将于 6 月发布:改进登录屏幕,优化 Pix 图像管理程序等等
- 字节面试也会问SPI机制?
- 微软正式停售 Windows 10 产品密钥 / 许可证:继续提供 ISO 镜像下载,推荐用户升级 Windows 11
- 用复古电脑程序 Toy CPU 学习低级编程
- Windows 11 新功能泄露:现代音量合成器、实验工具和新的文件管理器
- 微软 Windows 11 文件资源管理器全新设计曝光:UI 迎来大修,整合 Microsoft 365
- 对比Pandas,学习PySpark大数据处理
- 微软宣布为Windows 11 21H2设备开启自动更新到22H2版本
- 互联网都在说降本增效,小红书技术团队是怎么做的?
- 微软将继续提供 Windows 10 ISO 镜像下载,即将停售产品密钥 / 许可证
- 微软宣布为Windows 11 21H2 设备开启自动更新到 22H2 版本
- 面试突击:Properties和Yml有什么区别?
- 微软 Windows 11 Beta 预览版 22621.1245 和 22623.1245 (KB5022358) 发布