首页 存档 技术 查看内容

实战案例解析:去哪儿网支付系统架构演进全历程

2018-3-30 13:00 |来自: 互联网 337 0

摘要: 作者|吕博 编辑|小智 本文将为你详细讲述去哪儿网的支付系统架构演进的全历程,这中间的设计思路是怎样的,踩过怎样的坑,做过哪些可供参考的改进,各种经验分享都在这个实战案例里! 去哪儿支付系统自2011年搭 ...

作者|吕博
编辑|小智
本文将为你详细讲述去哪儿网的支付系统架构演进的全历程,这中间的设计思路是怎样的,踩过怎样的坑,做过哪些可供参考的改进,各种经验分享都在这个实战案例里!

去哪儿支付系统自2011年搭建以来,在五年的时间里逐渐从一个高耦合的单一系统发展为众多子系统组成的高并发、高可用、支持多种交易支付业务的分布式系统。业务从最初的非代收到现在多种非代收、代收场景的支持,B2B业务的从无到有,支付方式从单一网银支付到现在银行卡、拿去花、代金券、红包、立减、积分、趣游宝等多种的组合,订单从单笔支付到多个订单同时支付和多次付款。下面对整体的演变过程进行简单的介绍。

支付系统1.0

新的业务系统初建时,业务逻辑相对简单,业务量也比较小,为了能够快速实现功能,发布上线,大多数团队都会把所有的逻辑都耦合在一个系统。这对于初期业务的快速迭代是有一定好处的。毫不例外,支付交易系统也采用了这样的方式。如下图所示。

一个支付系统不例外包括几个重要组成部分:收银台、交易、支付、网关、账务。

  • 收银台:用于展示支付详情、提供各种多样支付方式的选择

  • 交易:收单规则和交易规则处理

  • 支付:处理各种组合的支付方式,如银行卡、用户余额、信用付、拿去花、红包、代金券、立减、积分等

  • 账务:用来记录所有交易、资金往来的明细,财务会计记账

  • 网关:用于对接银行通道、第三方支付通道(微信、支付宝)

在业务量不大的情况下,这样的系统结构没有问题。随着更多业务的接入,各种复杂的功能逻辑加入,系统处理起来有点吃力,主要表现以下几个方面:

  1. 系统容灾能力:所有的功能都集中在一起,一但某个功能出问题,直接影响全局

  2. 系统扩容:在一个分布式系统中,决定系统性能的取决于最差的部分,整体扩容效果差

  3. 开发成本高:团队成员的增加,功能的复杂,多个项目并行时,开发效率极低

  4. 更多更复杂业务:结构不合理,不能满足业务发展需要

  5. 系统职责混乱:如收银台只是简单维护银行列表

在这样的一些背景下,2.0系统应运而生。

支付系统2.0

2.0时代是支付交易系统快速发展的一个重要时段。在此过程中,不仅要从系统架构上进行服务化的拆分,而且需要支持更复杂的业务。

服务化拆分
网关拆分

首先对相对比较独立的网关进行拆分,网关在整个支付系统中属于底层基础服务,是比较重要的基础设施。对外能够提供怎么样的支付交易服务,很多都取决于网关能力的建设。

网关有一些显著特征,它是一个可高度抽象的业务。对外可以抽象到支付、退款、查询这些标准的服务。因此优先将这部分拆分,一是为了能够更好的打好基础,二是其能够独立的发展,三是这部分也相对好实施。

网关的拆分路由系统起到至关重要的作用,对于多通道支付的支持和智能化选择发挥着巨大作用。

账务系统的拆分

做交易支付业务,重要的一件事要记清楚账。记账可以很简单的记录来往流水,也可以更加专业的记财务会计账。在拆分前系统只是记录了交易流水,拆分后实现了更加专业和复杂的复式记账。

新账务系统的一个简单流程图:

会员系统的独立

会员系统与交易系统本身只是一个依赖关系,在交易支付系统看来只是一个业务系统。比如会员充值业务可以看做是一笔支付交易。为了摆正各自角色,对于会员部分从原有系统中独立出来。这样一来各自定位更加清晰明了,也方便了各自独立发展。现在的会员系统不仅仅只有一个余额,而且引入实名服务、各种资产管理、交易管理等。

基础服务的拆分

更多的系统拆分独立后,原有公用的某些功能会多次复制重复。为方便集中管理维护,通过对各系统公用逻辑更能的统一,提供集中的基础服务,如安全服务、加验签服务、通知服务、基础信息查询等,如下图中talos系统。

上述几个服务的拆分更多是为从业务方面或者技术驱动来考虑。而典型的交易支付过程是有一个时序过程的。比如下单-

声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

相关分类

返回顶部