如何设计一个极简支付系统

如何设计一个极简支付系统

第一步

当用户点击"购买"按钮时,会生成一个支付事件 (Payment Event) 并发送到支付服务。

第二步

支付服务 (Payment Service) 将支付事件存储在数据库中。

第三步

单个支付事件可能包含多个支付订单。比如,我们结账时会从多个卖家选择商品。这时,支付服务会拆分支付事件,每个支付订单都会调用一次支付执行服务 (Payment Executor)。

第四步

支付执行服务将支付订单存储在数据库中。

第五步

支付执行服务调用外部的支付服务提供商 (PSP, Payment Service Provider) 完成信用卡支付。

第六步

在支付执行服务成功执行付款之后,支付服务将更新卖家钱包余额。

第七步

钱包服务将更新后的余额信息存储在数据库中。

第八步

在钱包服务成功更新卖家的余额信息后,支付服务将调用分类帐进行更新。

第九步

分类帐服务将新的分类帐信息更新到数据库中。这一步经常采用事件溯源 (Event Sourcing) 的设计范式,将分类账的更新作为一个个事件存储到事件日志中,再用事件去更新账目余额。我们后续会专门讲解事件溯源。

第十步

每天晚上,支付服务提供商或银行向其客户发送结算文件。 结算文件包含银行账户的余额,以及当天发生在该银行账户上的所有交易。

【图解架构设计,关注公众号:ByteByteGo】

相关推荐
啾啾Fun4 天前
【LLM应用可靠性】2-RAG 生产失败模式:如何避免检索生成系统的性能退化
ai·llm·系统设计·rag
啾啾Fun4 天前
【LLM应用可靠性】1-Agent 评估体系:从单一指标到 SLO 驱动的体系化评估
ai·系统设计·agents·llm应用·slo
极光代码工作室5 天前
基于机器学习的金融风险预测系统
python·深度学习·机器学习·ai·系统设计
码农飞哥7 天前
Spring Boot 多角色权限隔离实战:接口层+路由层+UI层三层防御,杜绝生产数据泄露
spring boot·状态模式·架构设计·系统设计·权限控制
极光代码工作室11 天前
基于深度学习的智能图像识别平台
python·深度学习·机器学习·ai·系统设计
Cry丶22 天前
通用异步导出服务设计:从业务功能到平台基础能力的抽象
java·系统设计·大数据量导出·easyexcel·excel导出·后端架构·异步导出
极光代码工作室23 天前
基于NLP的论文智能分析系统
深度学习·机器学习·ai·自然语言处理·系统设计
书香门第1 个月前
系统设计练习 - 实时警员安全报警系统
分布式·系统架构·系统设计
极光代码工作室1 个月前
基于机器学习的商品价格预测系统
人工智能·深度学习·机器学习·ai·系统设计
菜鸟的日志1 个月前
【系统工程】系统可靠性设计与分析
架构师·系统设计·系统工程·可靠性