支付系统的洪峰应对之法

导语: 随着科技和社会的进步,移动支付已经成为大众支付的第一选择,支付越来越便捷,公司在近几年也突飞猛进,随之诞生了一下巨型业务,加上各种节日,活动日的造势,支付量常常有10倍,20倍于日常量的突发支付量。在这个过程中,我们总结了一些经验。

1. 整体设计

1. 1 限流

整个支付流程下来,需要经历很多环节,如:加载商店页、加载订单页、下单、支付、发货等,其中如果涉及到活动的话,可能还有各种资格查询等。整个交易流程比较长,其中任何一个环节失败,都可能导致交易失败,最终所有已经完成的操作都浪费掉了。当洪峰流量来临时,各阶段均可能因超载而导致整个交易失败;更甚者,如果这种状况得不到有效的控制,用户反复重试,还会对系统造成进一步的伤害(风暴)。最终,大部分的人都不能交易成功。

通过扩容,是可以解决这里的问题的,但是任何方案都需要考虑成本因素。解决问题的阶段越早,成本越低。因此,在不大规模扩容的情况下,我们采用“及早拒绝”来解决一大部分问题。

及早拒绝:

为了避免进一步的伤害(风暴)导致整个支付系统瘫痪,我们采用了“入口竞争”的措施,海量用户通过竞争有限的机会,进入后续的支付环节,没有取得机会的用户被及时拒绝,保障已经取得机会的用户尽可能的完成整个支付流程。

友好反馈、频率控制:

对于没有获得机会的用户,我们会在1秒之内就给出拒绝的结果,并给出建议性的提示,将用户的页面冻结10秒,配上解冻倒计时,解冻后才能再次发起“竞争”购买的动作。

通过这些操作,用户可以迅速拿到结果,不用不知所措的傻等转菊花;并对自己的等待有一个预期,比如刷了几次都没有打开的话,用户可能会稍后再来,不用一直等。通过竞争和倒计时,也会增加以下用户抢购的紧迫感。

1.2 排队

在支付环节,用户已经通过竞争,进入了支付流程,后续的就需要尽力帮用户完成整个流程。我们引入了预下单的机制,让用户通过预下单进行排队,并引入一个查单cgi,用户可以通过查单cgi查询自己的排队进度。排队完成后,自动拉起支付密码输入框。以排队的体验代替竞争的体验,使用户有一个更好的预期,减少中途放弃的概率。

在发货环节,用户已经支付完成,待发放的物品,也通过排队进行发放,避免对后端发货系统的一个冲击。

1.3 有损服务

支付流程中,有涉及到用户体验的,如支付成功通知tips,各种提醒等体验性的流程。在洪峰情况下,可以选择性的关闭,保证支付系统核心功能的正常运转。

1.4 分离原则

主要涉及:业务分离、渠道分离、部署分离、快慢分离、用户分离等。尽可能的保证业务之间、渠道之间、不同的系统之间、用户之间的相关影响最小化。快慢系统分离,尽可能保证整体系统的高效运转。

2. 单系统设计

2.1 容量预估与资源监控

每个系统通过压测和现网演练,可以评估出一个容量,并针对cpu、内存、磁盘IO、网络IO等指标进行实时监控,并在负载告急之前能给出告警。

2.2 尽力而为

第一点的限流实际是整个支付系统的过载保护的一部分,这里再提一下单系统的过载保护。首先所有的系统,都具备保护自己的能力;同时所有的系统,也需具备一定的保护后端系统的能力。系统容量需要一定余量,并在70%左右的容量时进行预警,以提醒运维提前进行准备,在90%时,系统能够自己进行过载保护,确保系统不会被冲垮。

2.3 动态调节

基于监控,实现动态扩缩容,调节单个系统的容量。(目前还没完全自动化)

通过以上的设计计平在面对洪峰的情况下,顺利扛下了不断增长的业务需求。并在一次次实践检验后,我们会不断的完善和细化这方面的实践。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

余威的专栏

1 篇文章1 人订阅

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏重庆的技术分享区

使用物联网网关将“物联网”连接到云

原文地址:https://internetofthingsagenda.techtarget.com/feature/Using-an-IoT-gateway-...

3796
来自专栏竹清助手

推送通知策略分析

好的消息推送三要素:timely、personal、actionable。消息推送对用户留存率与活跃度至关重要。用户愿意打开消息推送,是对你的 App ...

882
来自专栏互联网数据官iCDO

Domo 还是 Tableau,如何选择正确的商业智能解决方案?

编者注: 随着行业对营销和推广效果的重视,数据的作用越来越大。而营销渠道的多样化,也导致数据来源的数量和数据本身的体量都越来越大。如何挖掘,分析和展现各种数据就...

4887
来自专栏开源项目

企业代码安全知多少?这些是你应该了解的…

企业代码安全问题 代码是企业的信息化核心资产,是开发团队智慧的结晶,如何安放才更可靠? 代码管理系统,自建?选择云平台?有哪些需要考量的因素? 希望这一篇,能...

2485
来自专栏WeTest质量开放平台团队的专栏

想做 iPhoneX 抢购活动?压测大师先教你优化网站后台

用户们只愿意访问那些打开速度最快、性能最好的网站,本文将详细讲述如何在活动前做好压力测试。

2870
来自专栏姬小光

见了这么多萌萌哒的小妹妹之后,我终于忍不住了...

话说自从今年 1 月份开始,我就没再发过文章了,因为找我聊天的小妹妹实在是太多太多了,目测大部分年龄在 10-20 岁之间。有发照片给我的,有发语音给我的,有发...

1055
来自专栏数据库新发现

DBA2.0的时代 - DBA将向何处去?

最近接触和参与了很多关于DBA职业生涯发展的讨论,也有很多朋友问过我,DBA将向何处去? 思考了很多,在这里和大家分享一下关于DBA的我的看法。

891
来自专栏大数据钻研

2018最具就业前景的7大编程语言,Java、Python和JavaScript?

2018 年即将到来,Coding Dojo(编码道场)近期发布了 2018 最具就业前景的 7 大编程语言。该公司分析了来自 Indeed 的 25 门编程语...

4377
来自专栏华章科技

机器人“卧底”数月,伪装成人类修复补丁,未来程序员会失业吗?

现代计算机程序非常复杂,在开发过程中难免会出现错误。查找和修复补丁是一件需要耗费大量资源的事情,虽然研究人员已经开发除了许多流程自动化的机器人,但是它们往往很慢...

632
来自专栏云计算D1net

桌面虚拟化发展之路 新伴侣出现

目前,桌面虚拟化技术的发展已经进入快车道,随着桌面虚拟化的深入应用,越来越多的用户开始使用客户端虚拟容器这一新的桌面虚拟化技术,来获得单一镜像管理的诸多优点(如...

3739

扫码关注云+社区