以大众点评的支付渠道网关系统为核心,分享支付系统构建经验。
2020-12-30 09:09:32 阅读(167) 评论(0)
1、在可用阶段,早期业务流量不是很大,渠道网关系统的业务逻辑也很简单。总之,用户可以在交易过程中顺利支付资金。做的事情可以简单概括为三个:发起支付请求,收到成功的支付通知,并在用户要求退款时原路退还给用户的支付账户。现阶段系统实践比较简单,主要是“短、平、快”如图1所示,系统架构。2、在系统演变初期的快速迭代过程中,接入的第三方支付渠道不多,系统运行相对稳定,开发人员可以手动快速解决一些简单问题。然而,随着第三方支付渠道的增加,一些新的问题逐渐暴露出来:(1)所有的业务逻辑都在同一个物理部署单元中,不同的业务相互影响(如退款业务问题,但同时拖累支付业务);(2)随着业务流量的增加,数据库的压力逐渐增大,数据库的偶尔波动导致系统不稳定,对用户的支付体验有很大的影响;(3)支付和退款的同步在很大程度上取决于第三方支付渠道的异步通知。一旦第三方支付渠道出现问题,就会引起大量的客户投诉,用户体验差,开发和运营非常被动。针对(1)业务之间的相互影响,我们首先考虑拆分服务,将以前的大型物理部署单元拆分为多个物理部署单元。有两种明显的拆分策略可供选择:根据渠道拆分,不同的第三方支付渠道有独立的物理部署单元,如微信部署单元、支付宝部署单元等;根据业务类型,不同业务有独立的物理部署单元,如支付业务部署单元、退款业务部署单元等。考虑到在当时的流量规模下,支付业务优先级最高,退款等业务优先级较低;有些渠道的流量比例很小,作为一个独立的部署单元,会造成一定的资源浪费,增加系统维护的复杂性。考虑到在当时的流量规模下,支付业务优先级最高,退款等业务优先级较低;有些渠道的流量比例很小。作为一个独立的部署单元,它会造成一定的资源浪费,增加系统维护的复杂性。在此基础上,我们制作了一个符合当时系统规模的标题-off:根据业务类型选择第二种拆分策略——拆分。针对(2)中的DB压力问题,我们与DBA一起分析了原因,最终选择了Master-Slave方案。通过增加Slave来缓解查询压力;通过强迫Master确保业务场景的强烈一致性;通过公司DB中间件Zebra进行负载平衡和灾难准备切换,以确保DB的高可用性。针对(3)中的状态同步问题,我们梳理了不同的渠道。在现有第三方支付渠道异步通知的基础上,通过积极查询定期批量同步状态,解决了大多数状态同步问题。对于少量未同步的Case,系统开放API供内部使用,方便后台接入和开发人员手动补充订单。渠道网关系统完成上述实践后,已达到基本可用阶段。从内部监控平台可以看出,核心服务接口的可用性可以达到99.9%以上。进化后的系统架构如图2所示。在解决了业务隔离、DB压力、状态同步等问题后,通道网关系统经历了一段稳定可用的时期。然而,它无法承受业务快速增长的压力。在业务流量规模下,一些小系统波动、流量冲击等异常情况在遇到流量高峰时急剧放大,最终可能成为压垮系统的最后一根稻草。在新的业务流量规模下,我们面临着新的挑战:(1)随着团队的成长,新生在接入新渠道或增加新逻辑时,往往会优先考虑熟悉的方式完成任务。但熟悉不一定是合理的,可能会引入新的风险。特别是在与第三方渠道对接时,系统目前使用的HTTP交互框架包括JDKHTPURLConection/HttpsURLConnection、Httpclient3.x、Httpclient4.x(4.X版本内部还有不同的小版本)。就在这个上面,我踩了好几次痛苦的坑。(2)按业务类型拆分服务后,不同业务不再相互影响。然而,在同一业务中,当流量规模较小时,偶尔波动影响不大。现在流量增加后,不同的渠道开始相互影响。例如,支付业务提供分布式支付API,所有渠道共享同一服务RPC连接池。一旦某一渠道的支付接口性能恶化,服务RPC连接占用量大,其他正常渠道的要求无法进入;故障渠道性能恶化直接导致用户无法通过该渠道成功支付,连锁反应导致用户多次重试,进一步恶化,最终导致系统雪崩,拒绝服务,重启后的服务可能会再次被大量的故障渠道重试请求击败。(3)目前接入的第三方支付渠道,无论是第三方支付公司、银行还是其他外部支付机构,基本上都是引导用户通过重定向或SDK完成最终支付行动。在这个支付链接中,渠道网关系统只能在后端与第三方支付渠道交互(生成重定向URL或预付款凭证),最终用户的支付结果只能通过第三方支付渠道的异步通知或主动进行支付查询。在这个支付链路中,渠道网关系统只在后端与第三方支付渠道(生成重定向URL或预付款凭证)进行交互,最终用户的支付结果只能通过第三方支付渠道的异步通知或主动进行支付查询来了解。一旦第三方支付渠道内部出现故障,渠道网关系统就无法知道支付链路已经损坏,从而损害用户的支付体验。(4)一些非渠道网关服务仍然可以直接访问现有渠道网关的DB,这给渠道网关系统的DB稳定性和DB容量规划带来了风险,进而影响了渠道网关系统的可用性。内部戏称戴“绿帽子”。(5)对于退款链接,系统没有统一收集、整理和分类异常退款case,缺乏明确的退款链接监控。这导致用户申请退款后,少数用户的退款请求最终未能成功处理,用户发起客户诉讼。同时,由于缺乏监控,这种异常退款缺乏后续的推广措施。在极端情况下,会导致用户的二次客户投诉,极大地损害用户体验和公司信誉。为了最大限度地解决问题(1)中描述的风险,在吸取了踩坑的痛苦教训后,我们收集并整理了不同的应用程序场景,并抽象了一套访问框架。访问框架定义了一套完整的网关交互流程,包括请求组装、请求执行、响应分析和错误重试,屏蔽了HTTP或Socket的底部交互细节,并提供了相应的扩展点。针对特殊的应用场景,如银行渠道访问前置机器,也基于Netty抽象连接池(ConnPool)与简单的负载平衡机制相结合(LB,提供RoundRobin路由策略)。自定义的组装策略可以插入不同的渠道(扩展现有的HTTPReq)、Httpsreq或NettyReq),实施策略[扩展现有(Http、Https或Netty)Sender/Receiver],分析策略(扩展现有的HTTPResp、Httpsresp或NettyResp),并复用框架提供的内容分析(binary/xml/jsonparser)、证书加载(keystore/truststoreloader)加解密签名(encrypt/decrypt/sign/verifysign)在提高渠道接入效率的同时,组件可以尽可能降低新渠道接入的风险。访问框架的流程结构如图3所示。访问框架的过程结构如图3所示。为了解决问题(2)中渠道之间的相互影响,一个简单而直观的想法是渠道隔离。如何隔离,隔离到什么程度?这是两个主要问题:如何隔离考虑进一步按照渠道拆分支付服务,继续做小系统。但拆分后,支付API的调用端需要区分不同的渠道,调用不同的支付API接口,相当于将渠道隔离问题抛给调用端;同时,拆分后服务增加,调用端需要维护同一渠道的多个不同RPC支付业务-API,复杂度提高,在目前的业务流量规模下,增加了开发人员的维护负担,这是不可取的。因此,我们选择在同一支付服务API内进行渠道隔离。因此,我们选择在同一支付服务API内进行渠道隔离。由于共用同一支付服务API连接池,渠道隔离的主要目标是避免故障渠道占用大量AP连接池,影响其他正常渠道。如果故障通道可以自动检测,故障通道的要求在故障发生初期迅速失败,故障通道的隔离可以从业务逻辑上自动完成。在一个支付渠道下,有不同的支付方式(信用卡支付、借记卡支付、余额支付等),有些支付方式(如信用卡支付)仍有多家银行。因此,我们直接将渠道隔离的最小粒度定义为支付渠道->支付方式->银行。基于以上思路,我们设计并实现了故障通道的快速失败(fail-fast)机制:将每个支付请求附带的支付信息抽象成特定的fail-fast路径,请求抽象成fail-fast事务。成功的请求意味着事务成功。相反,事务失败了。在fail-fast事务执行过程中,级联有两个fail-fast断路开关:静态开关,根据人工配置(on/off),确定一个付款请求是否需要快速失败。动态开关,根据历史统计,确定当前的健康状况,然后确定当前的支付请求是否迅速失败。动态断路开关抽象了三种健康状态(closed-放行所有请求;half_open-请求放行部分比例;open-根据历史统计信息(总请求量/请求失败量/请求异常量/请求加时量),快速失败所有请求),在其内部维护一台健康状态变化的状态机。状态变化如图4所示。状态机器的每一次状态变化都会产生一个健康状态事件,收银员服务可以监控这个健康状态事件,实现支付渠道的上下联动切换。历史统计信息将在每个付款请求结束后动态更新。*流量模拟压测观察后,fail-fast机制增加了系统支付请求1~5ms的额外耗时,比第三方渠道的支付接口耗时1%~2%,属于可控范围。fail-fast机制启动后,结合压测配置,经过几次微调,稳定了*环境中的fail-fast配置参数。前不久某渠道支付故障时,通过公司内部监控平台,明显观察到fail-fast机制具有良好的故障隔离效果,如下图5所示。为了解决问题(3)中支付链路的可用性监控,依靠公司内部监控平台的报告,实时监控支付成功通知趋势曲线;同时,渠道网关系统从业务层面实现了对支付链路端到端的监控。基于这两个指标的历史统计信息,二级监控支付链路端到端支付总成功率和支付成功率,并提供实时支付链路邮件或短信报警。在流量高峰期,监控也可以手动降级(异步化或关闭)。这大大提高了开发人员核心支付链路故障响应速度。为了解决问题(4)中的“绿帽子”,渠道网关系统配合DBA回收所有外部系统的DB直接访问权限,为外部系统访问提供替代API,为提高DB稳定性、DB容量规划和后续可能的异步多机房部署奠定基础。针对问题(5)中的退款case,渠道网关系统配合退款链路上的其他交易支付系统,从源头上统一收集、整理、分类第三方渠道异常退款case,形成退款链路核心指标(退款当日成功率/次日成功率/7日成功率)监控。随着上述实践的逐步完成,渠道网关系统的可用性显著提高,核心链路API接口的可用性达到99.99%。在公司917推广中,渠道网关系统顺利度过流量高峰,迎来了新的记录:提交第三方渠道支付请求的TPS达到历史新高。当部分渠道接口出现故障时,可以保证核心支付API接口的稳定性,实现故障渠道的自动检测和恢复,实现收银员相应渠道的上下联动切换。此外,当部分渠道接口出现故障时,可以保证核心支付API接口的稳定性,实现故障渠道的自动检测和恢复,实现收银员相应渠道的上下联动切换。同时,当第三方渠道内部故障通过核心支付链路支付成功率监控实现时,渠道上下手动切换。到目前为止,渠道网关系统的灵活性在一些第三方渠道受损的情况下基本得到了保证。本阶段系统架构演化如图6所示。4、在逐步完善渠道网关系统的过程中,经验和总结踩了很多坑,吸取了很多教训,收获了一些小东西:1.坚持核心思想,拆分解耦,大系统小而简单;2.当系统出现问题时,重要的是如何快速定位、恢复和解决问题,这是一项长期而艰巨的任务;3.高可用性的最大敌人不仅是技术,还有那些使用技术来实现系统的人,在业务和系统快速迭代的过程中,如何保证自我驱动,不落后;4.高流量和大并发不仅是每个工程师的挑战,也是机遇。
推荐阅读
- 听音乐软件排行榜 听歌软件 全免费排行
现如今人们版权意识越来越高,音乐平台也开始了版权争夺战。以前每个平台都能听到喜欢的歌曲,现在却不得不在几个APP之间来回切换,实在是非常麻烦,也不知道这场版权争夺战什么时候能结束。但在此之前万商云集*找到了5个非常不错的听音乐软件分享给…查看详情
- 盒马鲜生首家购物中心将在深圳莲塘开业
我们得到最新消息盒马鲜生的全国首家购物中心“盒马里”将于11月23号开始试营业,11月30号正式营业。此次盒马鲜生的首家购物中心选择在深圳莲塘开业。盒马里将带给我们一种怎样的美食体验,让我们拭目以待。现在我们叫外卖已经非常方便了,打开美团可…查看详情
- 海报制作软件哪些比较好用?这几款不能错过
如果想要进行宣传,或者是想要让自己的照片打造出独一无二的效果,那么就可以制成海报的形式,其实海报的制作也是非常简单的,如果不懂得很多制作,就可以找到相关的软件来帮助自己,这样打造出来的海报效果也是非常独特的。那么海报制作软件哪些…查看详情
- 商城网站建设报价的影响因素
一个商城网站建设报价范围在1万到几十万不等。目前的网站分类有企业网站、个人网站、咨询网站、团购网站等多种分类。商城网站是建设需求比较大的一个网站类型,因此很多企业对于商城网站建设报价的影响因素很是关心,下面小万就商城网站建设报价的影响因素进…查看详情
- 盗墓电影排行榜前十名有哪些?好看的盗墓电影排行
相信有很多人特别喜欢看电影,尤其是盗墓系列的电影是比较受欢迎的,因为这样的电影给人的感觉特别刺激,而且也会步步惊心。相信了解过盗墓电影的朋友们也都知道盗墓电影,其实也是有很多的选择不同的电影带来的剧情以及带来的感受都是不一样的。…查看详情
- 视讯系统都有哪些特点和功能?
随着互联网技术不断的更新和发展,人们在日常的会议或者是教学方面,也可以通过远程的视频去互动或者是交流信息。而视讯系统的应用就越来越广泛了,那么到底视讯系统都有哪些特点和功能呢?下面就来看看吧。一、视讯系统的特点视讯系统不同于传统的视频系统,…查看详情
- 域名注册都应该要有哪些法则?需要从五点来进行分析
域名可以说是一个企业网站的面子,选择一个好的域名,更容易被百度收入,而且相比较来讲,也能够得到很好的发展。选择一个好的域名来注册,也是更容易被很多用户记住的。所以说域名注册是非常重要的,在进行注册的时候,也应该要注意一些相关的法…查看详情
- 请人做一个网站需要多少钱
网站建设是很重要的,其实现在很多大型的企业也都有了属于自己的网站,能够将自己的企业信息更好的展示出来,也能够得到更好的推广,展现出自己的实力,所以说一些中小型企业也蠢蠢欲动,想要建立自己的网站,在进行网站建设的时候,关于价格的问题应该要搞清…查看详情
- 电商平台需要哪些系统来支撑线上交易流程?
互联网技术在发展,消费者线上消费的行为也在不断进化,电商不仅仅局限于商品交易,现在需要满足更多的消费需求和市场营销。企业电商平台从采购、入库、上架,到前端销售,选购、下单、支付,再到收货、退款、评价。这一系列的交易流程都需要电商平台进行支撑…查看详情
- 图书版权登记材料、流程及收费标准
图书版权登记就是一般范围的作品版权登记,直接根据中国版权保护中心的相关流程规定进行正常的版权登记和材料提交就可以了。通常可以选择个人到版权中心进行现场登记,也可以选择代理机构进行协助登记。如果对于登记流程和提交材料比较模糊,也不像自己整理提…查看详情
- 新零售风口下,要了解、要选对生鲜电商的商业模式
生鲜电商要发展起来、重点是解决用户需求,养成用户的消费习惯,且在此过程中保证应用系统性能稳定、业务系统内部配合。当然,要想走得更远,更重要的是选对生鲜电商的商业模式,通过模式优势赢在起跑线上。 图片来源于网络 目前,有几种生鲜电商的商业模式…查看详情
- 图片如何打包? 图片打包的几种付费
打包图片,是指将多张图片进行压缩、归档,以便于存储、传输或备份。这样可以在不占用过多空间的前提下,将图片整理出来,方便管理和使用。接下来,就让我们了解一下打包图片的方法和步骤。 一、压缩图片 1.压缩软件选择 压缩图片通常需要借助…查看详情
- 怎么查询注册商标?这些知识你必须知道
众所周知商标申请一般历时一年多在此过程可能遇见各种问题,所以在申请注册商标之前更应该做好完全的准备,在这准备之中最重要的一步就是查询商标是否被其他人占领,但很多人不知道应该怎么查询注册商标,所以今天*就为大家整理了一些方法,希望能对你有所帮…查看详情
- 如何设置QQ自定义头像
QQ自定义头像可以让我们在QQ聊天或者其他QQ相关功能中展示出自己的个性,吸引他人注意,提升自我表达力,真正达到“一花一世界,一叶一菩提”的境界。下面,就和*一起来详细了解一下如何设置QQ自定义头像吧。 一、选择自己喜欢的头像图片 …查看详情
- 动画片排行榜前十名,家有萌娃不要错过
动画片不仅孩子喜欢看,大人也是比较喜欢看的,还有很多经典的动画片,都是老少皆宜的,不同年龄段的人群看动画片,还能够收获不一样的乐趣,那么下面就在文章的内容中,为大家重点介绍动画片排行榜前十名,一起来了解吧。 1、爱冒险的朵…查看详情
猜你喜欢
最新文章

扫码二维码
立即领取《千元实战营销秘籍》
还可免费试用营销管理系统
*如有疑问,请随时拨打免费咨询热线:400-0033-166
邮箱:zjb@iwanshang.com
服务时间:8:30-18:00
软件企业
认定号:川RQ-2018-0216
高新技术企业
认定号:GR201951001121

关注微信公众号
和10万中小企业共同成长

扫码下载APP
享全方位服务一触即达
Copyright © 2004-2022 万商云集(成都)科技股份有限公司 版权所有
蜀ICP备12001963号-2
川公网安备 51010402000322号

快速找产品

找一找哪款产品适合您?
咨询热线:400-0033-166
-


-
电话沟通
获取方案
下载APP
官方微信
扫码下载APP
全方位服务一触即达

关注万商云集
和10万中小企共成长

TOP

企业首选的AI增效平台

400-0033-166
8:30-18:00















































注册有好礼



