异步架构下的狭义支付系统设计:RabbitMQ、Redis与MongoDB应用

1 下载量 145 浏览量 更新于2024-08-29 2 收藏 573KB PDF 举报
本文主要探讨了简易支付系统的架构设计,特别关注于那些在日常业务中广泛使用的组件和技术。支付系统的架构通常由几个关键部分组成,但本文专注于狭义的支付功能,不包括账务清算、对账、账户体系和风控等涉及财务和风险管理的环节,这些通常被视为广义支付系统的一部分。 文章首先介绍了支付流程的核心部分:发起支付、发起退款和接收回调。为了提高系统的吞吐量和响应速度,采用了异步编程模型,如Java 8的ExecutorService和CompletableFuture。这种设计使得系统能够处理大量并发请求,提升用户体验。 在发起支付这一环节,客户端通过SubmitPayTask步骤将支付请求异步地放入支付任务队列,然后通过OfferTask将任务发布到RabbitMQ中。PayTaskDescription阶段,服务端将构建好的支付任务信息返回给客户端。客户端可能直接或间接通过预付ID(如微信支付中的prepay_id)发送支付请求,具体取决于支付渠道。 支付请求处理完成后,服务端会通过CachingResult将结果存储在Redis中,以便后续查询或统计。同时,支付渠道的回调信息会在接收回调阶段接收,并进行相应的处理。 文章提到的RabbitMQ、Redis和MongoDB是本文所依赖的基础设施,RabbitMQ用于消息队列,处理异步通信,Redis用于快速存储和检索支付结果,而MongoDB则可能是用来存储支付交易历史记录的数据库。 整体来看,本文的架构设计目标是打造一个高度模块化、与特定业务解耦的支付系统,易于集成到公司的公共平台系统中,提高了系统的灵活性和可维护性。通过这样的设计,公司可以根据业务需求快速扩展和调整支付功能,而不必每次都从头开始构建整个支付系统。