当前位置: 首页 > news >正文

28张图讲解支付系统的通用设计,漂亮!

支付永远是一个公司的核心领域,因为这是一个有交易属性公司的命脉。那么,支付系统到底长什么样,又是怎么运行交互的呢?抛开带有支付牌照的金融公司的支付架构,下述链路和系统组成基本上符合绝大多数支付场景。其实整体可以看成是交易核心+支付核心 两个大系统。交易系统关联了业务场景和底层支付,而支付系统完成了调用支付工具到对账清算等一系列相关操作。下面我们就来一起看下各个系统的核心组成和交互。

1. 支付系统总览

核心系统交互

业务图谱

2. 核心系统解析

交易核心

交易核心把公司的业务系统和底层支付关联起来,让业务系统专注于业务,不比关心底层支付。

交易核心

基础交易类型抽象

多表聚合 & 订单关联

支付核心

支付核心主要负责将多种支付类型进行抽象,变成 充值提现退款转账四种支付形态。同时,还要负责集成多种支付工具,对支付指令进行编排等等。

支付核心总览

支付行为编排

其目的,是实现 插件式开发支付规则可配置的 灵活开发方式。

异常处理

异常处理包括了 重复支付、部分支付、金额不一致、其他异常等异常场景。

渠道网关

资金核算

3. 服务治理

平台统一上下文

通过确定系统边界、业务建模拆分之后,整个支付平台被拆分几十个服务,而如何保障在服务间流转业务信息不被丢失,是我们需要考虑的问题。平台统一上下文的要素信息(唯一业务标识码),在整个支付平台链路中全程传递,被用来解决这个问题。

数据一致性治理

大型的支付公司,内部都有非常严格和完备的数据一致性方案,比如采用业务侵入性非常大的分布式事务等,以牺牲开发效率来提升数据的稳定,是非常有必要的。而业务公司,如果不采用分布式事务又有哪些应对策略呢?

CAS校验

幂等 & 异常补偿

对账

准实时对账

DB拆分

异步化

支付是整个交易链路的核心环节,那么,怎么兼顾支付系统的稳定性和执行效率呢?是异步化。

消息异步化

外部支付调用异步化

在外部支付中,经常需要服务方与第三方支付交互,获取预支付凭证,如上图所示。

这种同步调用的情况下,由于需要跨外部网络,响应的 RT 会非常长,可能会出现跨秒的情况。由于是同步调用,会阻塞整个支付链路。一旦 RT 很长且 QPS 比较大的情况下,服务会整体 hold 住,甚至会出现拒绝服务的情况。

因此,可以拆分获取凭证的操作,通过独立网关渠道前置服务,将获取的方式异步化,从前置网关获取内部凭证,然后由前置网关去异步调用第三方。

异步并行化

资金核算异步化

热点账户账务单独处理

记账事务切分

4. 生产实践

性能压测

构建压测模型,模拟现实真实场景;压测数据进影子库,正常业务无侵入;单机性能和集权链路都不能忽视;识别系统稳定性和容量配比。。。

稳定性治理

核心链路分离

服务依赖降级

http://www.lryc.cn/news/19774.html

相关文章:

  • 【5】linux命令每日分享——touch创建文件
  • TypeScript快速上手语法+结合vue3用法
  • 一,下载iPerf3最新源代码
  • keithley6487/吉时利6487皮安表
  • sql命令大全
  • Ubuntu 定时执行脚本
  • Python带你制作一个属于自己的多功能音乐播放器
  • Redis 被问麻了...
  • 使用JavaScript+Selenium玩转Web应用自动化测试
  • [架构之路-119]-《软考-系统架构设计师》-计算机体系结构 -1- 基本原理(体系结构、指令系统与流水线、层次存储)
  • 【离线数仓-8-数据仓库开发DWD层-交易域相关事实表】
  • 你知道Java架构师学习路线该怎么走吗?你所缺少的是学习方法以及完整规划!
  • 华为OD机试用Python实现 -【查找树中的元素 or 查找二叉树节点】(2023-Q1 新题)
  • MyBatis——创建与使用
  • 【涨薪技术】0到1学会性能测试 —— 参数化关联
  • go进阶(2) -深入理解Channel实现原理
  • 数组(二)-- LeetCode[303][304] 区域和检索 - 数组不可变
  • 22-基于分时电价条件下家庭能量管理策略研究MATLAB程序
  • “XXX.app 已损坏,打不开。您应该将它移到废纸篓”,Mac应用程序无法打开或文件损坏的处理方法(2)
  • flask入门-3.Flask操作数据库
  • STM32 使用microros与ROS2通信
  • 51单片机入门 - 测试:SDCC / Keil C51 会让没有调用的函数参与编译吗?
  • 【计算机网络】计算机网络
  • 【java web篇】项目管理构建工具Maven简介以及安装配置
  • springboot笔记
  • 【多线程与高并发】- 浅谈volatile
  • avro格式详解
  • 【涨薪技术】0到1学会性能测试 —— LR录制回放事务检查点
  • 卡尔曼滤波原理及代码实战
  • Jmeter使用教程