随着支付业务量的激增,支付团队不断壮大,为满足日益增长的业务需求,大量的支付通道逐渐被接入,但由于接入的银行、第三方系统稳定性参差不齐,支付通道故障时有发生。作为承接上下游的核心系统,在一系列不稳定的系统上搭建一套能为上游提供稳定服务的系统是远远不够的,单纯依靠人工维护更是远远不够,建立一套完整的支付渠道自动化管理体系势在必行。本文主要介绍美团点评技术团队的支付渠道自动化管理演进历程。
初级阶段
监控系统初始阶段
故障排除流程图如下:
支付通道自动化管理初期阶段从2014年6月到2015年9月,通过手动关闭再开启的方式处理故障,处理支付通道故障的具体流程如下:
(1)支付网关监控器监测到支付通道成功率异常,向美团点评科技发送报警信息;
(2)美团点评技术人员立即查看监控页面确认故障,并登录渠道路由配置页面修改相应支付通道状态,将该通道设置为不可用;
(3)收银员实时读取支付通道状态,切断故障通道的所有流量;
(4)美团点评技术团队联系银行或第三方反映问题,第三方对问题进行核查,确认问题修复后,通知美团点评技术团队。
(5)美团点评的技术将支付通道状态改为可用,收银员实时读取支付通道,导入在线流量;
(6)若支付通道恢复,用户可以正常交易,故障结束;
(7)若支付通道无法恢复,出现大量交易失败,美团点评技术需要将该通道重置为不可用状态,并再次联系银行或第三方处理,直到该通道所有交易恢复正常,故障解决。
半自动化初期的问题
初级阶段系统的主要目标是扩大支付通道的覆盖范围,提高用户支付成功的概率。随着支付通道的不断接入,公网环境、银行或第三方系统的不稳定导致故障频率增加,故障时间变长。此时初级阶段的监控系统已经不能有效保障通道的稳定性:
(1)支付网关监控报警误报率较高,微小的流量通道故障无法及时发现;
(2)支付通道切换采用人工处理,不仅增加了技术工作量,而且无法保证故障处理过程中不发生误操作;
(3)故障解决时间越长,对用户的影响就越大。同时,用户不断的重试也给支付系统本身带来了很大的压力。
(4)在尝试恢复故障通道时,必须打开所有通道进行真实在线交易测试。由于通道尚未恢复,这可能会引发二次故障并扩大影响范围。
系统优化 优化监控系统
(1)优化监控算法:优化监控算法,提高报警准确率至95%,基本实现零误报、零漏报;
(2)新增自动置通道不可用功能:当监控检测到支付通道故障时,向技术人员发送告警消息,并调用通道路由接口置支付通道不可用,实现支付通道故障的快速降级。
此时的监控系统如下图所示:
频道路由支持实时频道变更
在初级系统中,渠道路由的主要功能是提供通过页面修改支付通道配置的方式手动管理支付通道的功能。随着监控系统的完善,监控的准确性和灵敏度得到了提升,此时监控系统拥有了支付通道管理的决策权,渠道路由需要提供能够实时更新支付通道状态的接口,实现支付通道的自动化管理。作为自动通道切换的补偿机制,渠道路由还实现了基于手机APP的手动一键切换功能,尽可能保证故障的快速解决。
通道路由提供的接口除了实时通道状态变化功能外,还需要控制以下几个方面:
(1)一键切换功能需要权限控制;
(2)具备交易控制和时效控制,无论是自动切换还是一键切换,故障必须能够且只能切断通道流量一次;
(3)必须保证通道状态的变化能够通过各种渠道告知相关技术人员。
故障诊断流程
支付通道自动化管理半自动化阶段从2015年10月持续到2016年10月,故障处理采用自动切换,人工切换回。通道故障具体处理流程如下:
(1)监控若检测到渠道成功率异常,则会向美团点评技术发出报警信息,并自动将该渠道设置为不可用;
(2)美团收银员实时读取通道状态,切断故障通道的所有流量;
(3)美团点评技术团队第一时间联系银行及第三方反映问题,第三方确认问题及恢复状态后反馈给美团。
(4)美团点评的技术将通道状态改为可用,收银员实时读取通道状态为正常后,将线上流量放入该通道;
(5)若通道恢复,用户可以正常交易,故障结束;
(6)若通道未恢复,出现大量交易失败的情况,美团点评的技术或监控将再次将通道状态置为不可用;
(7)美团点评技术团队将再次联系银行或第三方解决该问题,并重复此过程,直至线上交易恢复正常、问题解决。
主要改善工程已完工
(1)优化报警监控算法,支持一键查看通道状态,确保快速发现支付通道故障;
(2)实现故障通道一键切换、自动切换,保证从各个环节快速处理通道故障;
(3)大幅减少处理支付渠道故障的人力成本。
全自动和半自动化阶段的问题
半自动化阶段大大简化了故障处理流程,但系统仍然存在以下问题:
(1)渠道恢复依赖于银行或第三方的反馈,导致支付渠道恢复时效较长;
(2)渠道故障涉及系统和人员较多,单靠人工无法保证全面、及时的通知。
但由于早期设计的限制,通道布线无法完全实现自动化,监控系统和通道布线系统需要优化。
系统优化,实现监控自动切换回
监控自动切回的主要思路是将故障通道的音量稍微调大,通过检测音量调大交易的成功率来判断通道是否恢复正常。如果小幅音量调大交易的成功率正常,则继续调大音量。否则,直接将通道切回故障处,过一段时间后重新开始音量调大测试,直到通道设置正常。自动切回状态机如下图所示:
此流程的重点在于控制通道放量节奏。影响通道放量节奏的因素有三个:第一次放量的大小、两次放量的间隔时间、通道放量的速度。放量节奏过快容易造成二次故障,过慢则通道恢复太慢,达不到缩短故障影响时间的效果。以下是最终通道切换流程示例:
(1)渠道扩张,但扩张失败
(2)再次增加音量,如果成功,则增加音量
(3)通道切换回正常
实现渠道相关系统联动

当支付通道发生故障时,一方面通过消息组件通知营销活动、退款等系统,协助进行活动关闭、渠道退款关闭等处理,减少通道故障对其他系统的影响;另一方面通过接口通知业务系统,协助业务系统进行故障分析。
渠道路由重构优化解决业务难题
支付通道有两种,第一种定义为“单卡通道”,即只能用于指定银行的指定卡种的通道,例如“中银储蓄卡快捷通道”只能用于输入中银储蓄卡号的请求;第二种定义为“跨卡通道”,即可以用于多家银行的指定卡种,例如“银联API储蓄卡”可以用于“中银储蓄卡”、“建行储蓄卡”等多家银行的储蓄卡账户。
(1)“跨卡通道”银行倒闭处理
由于旧路由系统在设计之初,只从“银行通道”和“支付通道”两个维度考虑存储信息,表结构设计得比较简单。当支付通道故障时,只能进行整条通道切换。如果“跨卡通道”中出现单个银行故障,旧系统无法只切断故障银行的流量——要么让整个“跨卡通道”因单个银行故障而降低成功率,要么切断整个通道的流量。在新路由系统中,针对每家银行指定的卡类型,分别记录“跨卡通道本身不支持”和“跨卡通道支持但银行系统故障”两类数据。在执行路由逻辑筛选时,根据这些信息进行过滤,实现“跨卡通道”切断单个故障银行。
(2)配合通道监控系统实施通道切换和容量释放,并逐步尝试性恢复通道。
解决技术问题
(1)融合去中心化业务和存储逻辑
重构路由系统的主要原因之一是老的路由系统业务逻辑和数据存储比较分散,系统间逻辑耦合严重,边界不清晰,系统间模糊区域经常存在陷阱。因此重构后需要将所有路由逻辑都汇聚到路由系统中,具体包括两个层次:
代码层面——新的路由系统需要整合旧的路由系统逻辑(Java代码)和上游收银机中的路由逻辑(PHP),明确上下游的职责。
存储层面:原有收银或交易系统从配置中心、缓存、数据库表、代码配置文件、老路由系统接口获取数据的方式不同,数据无法集中管理。改造后,所有数据由新的路由管理集中管理,任何上游数据需求都通过RPC接口请求路由系统。
(2)系统容量和时效性
由于路由逻辑和基础数据已经汇聚到新系统中,重构后的路由将成为支付路径中的关键一环,用户在美团点评上每笔支付都会至少调用一次路由系统,以美团点评目前的规模,这对路由系统的峰值容量提出了考验。另一方面,由于重构后的系统需要兼容之前的老逻辑,这会导致部分接口的响应时间达到几百毫秒甚至一秒以上,这对于内网调用来说是不可接受的。
机器水平扩容可以解决第一个问题,但不能解决第二个问题。路由型业务场景是典型的“读多写少”且基础数据量有限的场景。数据可以在业务机器上做缓存,可以大大减少读数据库的次数。采用本地缓存方案后,系统接口响应时间从秒级降低到毫秒级。由于请求处理时间的减少,线程的处理能力也提升了几十倍,系统整体处理能力提升了一个数量级。
(3)系统容灾解决方案
路由系统的容灾主要从两个方面实现:
减少对外部组件的依赖——“本地缓存”的引入意味着路由系统在处理实时业务请求时不会直接读取外部缓存中心或数据库,从而规避了这些基础组件可能带来的风险。
制定服务异常备份方案——如果路由系统出现异常,将直接导致用户无法支付,因此收银系统需要降低对路由的依赖。采取的解决方案是:
a.路由系统定期从数据库读取基础数据,根据路由策略生成备份数据并同步至配置中心;
b.当路由系统出现异常时,收银系统会降级读取备份数据,确保用户完成支付。
故障排除流程
支付通道自动化管理半自动化阶段从2016年11月开始至今,故障处理自动切换,通道故障处理流程如下:
(1)监控检测到渠道成功率异常,将向美团点评技术人员发出报警信息,并自动将该渠道设置为不可用;
(2)收银员实时读取通道配置,将不再将流量放入该通道,从而切断故障通道的所有流量;
(3)监控使得通道不可用一段时间后,尝试放通一些流量到故障通道,检测通道是否正常;
(4)若投入金额成功率正常,监控则继续投入双倍金额,直至通道满,监控置该通道为可用;
(5)若入站流量成功率异常,则直接将通道置为不可用,经过一段时间的监控后再重新放行流量,直至通道再次可用。
(6)在发现渠道故障后,美团点评的技术可以向银行或者第三方询问故障原因,并记录下来,以便日后分析。
在系统发展的这个阶段,支付渠道的管理基本已经实现了完全自动化,只需要手动获取失败原因等额外信息。
解决的主要问题
(1)渠道路由重构优化后,提供按配比扩容功能以及由于渠道故障向各个需要了解渠道状态变化的系统发送推送消息的功能;
(2)监控可根据通道当前的状态和成功率,主动选择置通道故障、开始加量、继续加量、切换回故障、置通道正常等操作,检测通道是否恢复,实现支付通道自动化管理的功能;
(3)释放了大量处理渠道故障所需的人力资源;
(4)及时通报相关系统,减少故障影响,并协助业务方进行系统故障分析。
各阶段系统优化数据对比
支付通道管理系统在故障处理方面性能对比数据如下:
阶段 初级阶段 半自动阶段 全自动阶段
平均故障响应时间
1分钟
1分钟
平均劳动力成本
2分钟
平均故障恢复延迟
笔记:
故障响应时间:从通道发生故障,到该通道不可用的时间;
平均人工成本:故障期间所需人力;
平均故障恢复时延:银行或第三方真正恢复并打通美团通道入口所需的时间。
总结与展望
支付通道管理系统的演进是支付通道自动化管理的一次完整实践。自动化不仅提高了系统的故障处理能力和系统可用性,还释放了大量的人力。随着支付系统的发展,后续的支付通道自动化管理系统也会面临新的问题和挑战。总结实践过程,主要有两点:
监控系统完善优化
监控系统从单一的成功率计算发展到覆盖几乎所有维度,以及后续与其他系统的联动,实现支付渠道的自动化管理,对维护和提高系统的可用性和稳定性起到非常重要的作用。
通道路由功能的改进
通道路由提供通道切换、切回功能,与监控系统完美配合,实现支付通道自动化管理功能。
当前支付通道自动化管理需要在以下四个方面进行优化:
(1)优化监测算法,报警准确率由95%提高到99%以上;
(2)故障自动通知银行或第三方技术人员,完全释放人力进行故障排除;
(3)自动处理银行及第三方网关网络异常;
(4)回程路由切换时,优先对容忍度强(统计上客户投诉少)的用户进行成功率检测,减少对业务的影响。
如果发现文章中有错误或者对内容有任何疑问,可以关注美团点评技术团队微信公众号(),后台给我们留言,我们每周都会评选出一位热心小伙伴,送上精美小礼品,快来扫描二维码关注我们吧!