首页 > 其他分享 >如何设计一套支付系统

如何设计一套支付系统

时间:2023-04-05 09:45:42浏览次数:35  
标签:异步 核心 支付 系统 业务 一套 链路 设计

 

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

1. 支付系统总览

核心系统交互

图片

业务图谱

图片

2. 核心系统解析

交易核心

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

交易核心

图片

基础交易类型抽象

图片

多表聚合 & 订单关联

图片

支付核心

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

支付核心总览

图片

支付行为编排

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

图片

异常处理

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

图片

渠道网关

图片

资金核算

图片

3. 服务治理

平台统一上下文

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

图片

数据一致性治理

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

CAS校验

图片

幂等 & 异常补偿

图片

对账

图片

准实时对账

图片

DB拆分

图片

异步化

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

消息异步化

图片

外部支付调用异步化

图片

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

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

图片

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

异步并行化

图片

资金核算异步化

图片

热点账户账务单独处理

图片

记账事务切分

图片

4. 生产实践

性能压测

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

图片

稳定性治理

图片

核心链路分离

图片

服务依赖降级

图片

作者:PetterLiu

标签:异步,核心,支付,系统,业务,一套,链路,设计
From: https://www.cnblogs.com/88223100/p/How-to-design-a-payment-system.html

相关文章

  • MATLA 5G工具箱---2023小迈步之通信系统设计——从基础到 AI+
    基于MATLABR2022b版软件学习!【官方】2023小迈步之通信系统设计——从基础到AI+(上)_哔哩哔哩_bilibili  ImproveSNRandCapacityofWirelessCommunicationUsingAntennaArrays利用天线阵列提高无线通信的信噪比和容量Thegoalofawirelesscommunicat......
  • 数据库系统原理之数据库应用设计与开发实例
    数据库应用设计与开发实例第一节需求描述与分析在此,结合某高校个性化课程在线选课的实际需求,给出一个简化的需求分析一、功能性需求1管理员后台模块学生信息管理教师信息管理课程信息管理班级信息管理2学生使用模块查询课程浏览所选课程查询成绩3教师使用模......
  • SimpleAdmin手摸手教学之:项目架构设计2.0
    一、说明在SimpleAdmin1.0版本中,我将整体项目结构分为三大块,分别为架构核心、业务模块和应用服务。随着1.0版本的封版,回去再看我之前的项目架构,也暴露了一些问题,比如在1.0版本中,Signalr和Mqtt只能二选一,这显然是不科学的,因为这两种虽然都可以作为消息通知,但是显然可以有更多的应......
  • vivo 全球商城:优惠券系统架构设计与实践
    一、业务背景优惠券是电商常见的营销手段,具有灵活的特点,既可以作为促销活动的载体,也是重要的引流入口。优惠券系统是vivo商城营销模块中一个重要组成部分,早在15年vivo商城还是单体应用时,优惠券就是其中核心模块之一。随着商城的发展及用户量的提升,优惠券做了服务拆分,成立了独立的优......
  • 服务API版本控制设计与实践
    一、前言笔者曾负责vivo应用商店服务器开发,有幸见证应用商店从百万日活到几千万日活的发展历程。应用商店客户端经历了大大小小上百个版本迭代后,服务端也在架构上完成了单体到服务集群、微服务升级。下面主要聊一聊在业务快速发展过程中,产品不断迭代,服务端在兼容不同版本客户端的AP......
  • 系统架构设计——淘宝架构设计演进
    摘要通过了解一线互联网公司的架构的演进,以帮助自己在设计系统的时候参考。介绍淘宝从一百个并发到千万级并发情况下服务端的架构的演进过程,同时列举出每个演进阶段会遇到的相关技术,让大家对架构的演进有一个整体的认知,文章最后汇总了一些架构设计的原则。一、基本概念在介绍架构之......
  • vivo 短视频推荐去重服务的设计实践
    一、概述1.1业务背景vivo短视频在视频推荐时需要对用户已经看过的视频进行过滤去重,避免给用户重复推荐同一个视频影响体验。在一次推荐请求处理流程中,会基于用户兴趣进行视频召回,大约召回2000~10000条不等的视频,然后进行视频去重,过滤用户已经看过的视频,仅保留用户未观看过的视频进......
  • 系统架构设计——DDD设计框架基本学习
    摘要最近DDD设计很火,但是刚刚入门还是很懵,通过的学习DDD项目设计的结构目录来实现对DDD设计理解同时也是为大家在公司能够看懂公司的DDD项目结构目录做一个参考和学习。同时后期本人将推出更多的对DDD设计的理解。同时提供一个DDD设计的模板框架:https://github.com/2462612540/Seni......
  • 基于AHB_BUS的eFlash控制器的架构设计
    eFlash控制器的架构设计1.架构设计思路分析1.1含有的模块分析eFlash控制器是一个基于AHB的slave,所以需要一个AHB_slave_if处理AHB的信号。AHB_slave_if与AHB总线进行交互,对主设备的请求进行处理,还可以设置一些内部的寄存器,对AHB发送过来的信号进行解析。AHB_slave_if除了处......
  • 从零开始设计一个右键菜单组件
    需求分析首先要分析右键菜单需要实现什么功能点击鼠标右键弹出自定义的弹窗实现菜单项的点击自定义菜单项的样式自定义弹窗容器的样式代码实现需求搞定之后就是写代码了,下面是基础的代码框架<template><divclass="yak-content-menu"@contextmenu="showContentMenuFn"@click="......