RocketMQ / MyCAT / Sharding-JDBC 源码分析及支付系统架构解析

2024-10-14
来源:网络整理

// - 所有JDBC源码分析文章列表 // - JDBC中文注释源码地址 您对源码的疑问我们会认真回复每条留言。即使您不知道如何阅读源代码,也可以寻求帮助。接收新源代码分析文章的实时通知。大约一周更新一次。认真交流源码的微信群。

支付永远是一个公司的核心领域,因为它是一个具有交易属性的公司的命脉。那么,支付系统是什么样子的,它是如何交互的?

抛开拥有支付牌照的金融公司的支付架构,以下几个环节和系统组件基本满足绝大多数支付场景。

其实整个系统可以看成两大系统:交易核心+支付核心。交易系统与业务场景和底层支付相关联,而支付系统则完成从调用支付工具到对账结算的一系列相关操作。我们来看看每个系统的核心组件和交互。

第一部分 支付系统概述 核心系统交互

商业地图

第二部分 核心系统分析 交易核心

交易核心将公司业务系统与底层支付关联起来,让业务系统专注于业务而不关心底层支付。

交易核心

基本交易类型抽象

多表聚合&订单关联

支付核心

支付核心主要负责将多种支付类型抽象为充值、提现、退款、转账四种支付形式。同时,他还负责整合多种支付工具、安排支付指令等。

支付核心概述

支付行为编排

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

异常处理

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

通道网关

基金会计

零件服务治理平台统一上下文

确定了系统边界,拆分了业务模型后,整个支付平台被拆分为几十个服务。如何保证服务之间传递的业务信息不丢失是我们需要考虑的问题。平台统一上下文的要素信息(业务唯一识别码)贯穿整个支付平台链路,就是用来解决这个问题的。

数据一致性治理

大型支付公司内部有非常严格、完整的数据一致性解决方案,比如采用分布式事务,侵入性非常大。以牺牲开发效率为代价来提高数据稳定性是非常有必要的。对于商业公司来说,如果不采用分布式事务,他们有什么策略呢?

CAS验证

支付公司系统开发_自己开发支付系统_支付系统开发流程

幂等和异常补偿

和解

近实时对账

数据库分割

异步化

支付是整个交易环节的核心环节。那么,如何平衡支付系统的稳定性和执行效率呢?它是异步的。

消息异步

外部支付调用异步化

在对外支付中,往往需要服务商与第三方支付进行交互,获取预付款凭证,如上图所示。

在这种同步调用的情况下,由于需要跨越外部网络,因此响应RT会很长,可能会跨越数秒。由于是同步调用,所以会阻塞整个支付环节。一旦RT很长、QPS比较大,就会导致服务整体被卡住,甚至可能出现拒绝服务的情况。

因此,可以将获取凭证的操作进行拆分,通过独立的网关通道前端服务来异步获取凭证。可以从前端网关获取内部凭证,然后前端网关可以异步调用第三方。

异步并行化

基金会计异步

热门账户账户分开处理

会计交易的细分

第四部分 生产实践性能压力测试

构建压力测试模型来模拟现实生活场景;压测数据录入影子数据库,正常业务不受影响;单机性能和集中环节不容忽视;确定了系统稳定性和容量比。 。 。

稳定治理

核心环节分离

服务依赖降级

分享