SACC 2019:云闪付APP架构优化实践之路

中国银联科技事业部架构师 程朝

程朝2011年加入中国银联,拥有三年应用开发设计经验,三年MySQL与Redis内核开发设计经验,三年应用架构设计经验;擅长分布式系统设计,有丰富的系统设计与调优经验,现任云闪付架构优化技术负责人,致力于云闪付系统架构设计与优化工作。

摘要:

云闪付APP作为银联在移动支付领域的重要产品,推出三年多以来用户数已经突破两亿规模,随着近年来营销活动的频次和力度不断加码,现有系统的压力也越来越大,本次演讲程朝主要分享了云闪付后台系统通过不断迭代的架构优化,完成对业务和营销活动的有力支撑。

业务扩大后台迎挑战

云闪付APP与传统的金融APP相比,除了常规的信用卡账单查询和还款、二维码主扫和被扫支付、公共缴费等业务外,也有很多自身特色,比如余额查询,支持330余家银行的余额查询,能够在云闪付中查询所有绑定的借记卡的余额,比如信用卡帐单查询和还款,目前也已经对接140多家银行,并且信用卡还款是免费的,再比如银联卡权益,白金卡的一元机场停车,钻石卡的一元机场接送机等,也是非常给力的。

云闪付APP推出三年多以来,用户量增长迅速,并且在今年9月突破两亿用户;用户活跃度也不断提升,目前云闪付APP月活五千多万;同时,伴随着高频的营销活动和较大的营销力度,交易量也大幅增长。用户迅速增长,活跃度不断提升,交易量大幅增长,营销活动层出不穷,业务增长的同时也对整个后台的系统设计带来了巨大的挑战。

为了应对这些挑战,云闪付后台系统经历了一轮又一轮的架构优化,本次分享将展开其中的一些设计方法和思路,主要包括系统的拆分与隔离,数据层的水平扩展,异步化框架使用,应用级分布式事务解决方案,营销资金类问题解决方案等。

拆分与隔离

云闪付在后台架构设计上最开始对系统进行拆分和隔离,来解决最先碰到的系统横向扩展和系统间业务耦合的问题。

首先对整个系统业务线重新划分,垂直拆分成包括支付业务、营销业务、商城业务、优惠业务在内的十几条业务线。结合内部组织架构分组和板块划分,使得系统相互之间的耦合性减少。纵向拆分完之后再进行横向拆分,对服务进行分层,拆分成WEB层、接入层、业务服务层、数据层等,并将拆分过程中形成的一些公共服务独立成单独的基础业务层。

初期的拆分完成后系统耦合性降低,业务功能相互隔离,问题不会在业务线间蔓延。但是随着业务量的增长,发现某一单独业务线里依然有很大压力,相互之间依然会有一些干扰,此时对支付服务做了进一步拆分,比如拆分为主扫二维码、被扫二维码、乘车码等,形成系统内的多个子系统,耦合性进一步降低。

伴随着系统的拆分,应用也做了很多去状态化工作,形成无状态的应用层,便于应用层的横向扩展。然后在每次的活动之前,业务方都会提一些指标,系统需要根据这些指标做扩容工作。

而评估需要多少台机器需要经过多次压测,每次调整系统规模都比较耗费时间。通过将拆分后的系统单元化分组,得出每组最佳配比,每组每一层多少台机器提供多少性能,就能够根据实际业务指标从容的计算出需要多少资源和每一层的资源数量。通过不断实践优化,现阶段将之整合成一个表格,只要基于业务指标进行输入,就能计算出每条业务线需要扩多少组,需要多少台机器,每台机器分布在哪些业务上。更加从容的应用生产扩缩容。

数据分片

应用层通过一些拆分和隔离做到了应用的无状态和水平扩展,这样系统的压力就到了数据层。数据层解决方案分为两种,一种是应用和数据库之间是松耦合,可以通过消息队列解耦数据库,提升联机交易的处理性能;另外一种是应用和数据库之间是紧耦合,需要提升数据库的整体性能,主要是通过对数据库进行水平拆分。

整个云闪付系统的数据库发展历程,也是伴随着整个银联数据库的演进过程,从七年前的集中式单一数据库DB2,到五年前引入了MySQL,根据业务进行垂直拆分成各个业务库,再到现在的随着现在银联定制数据库UPSQL的发展,以及数据库代理对水平分库的支持,真正做到了数据库的水平拆分。

当然,对于缓存银联也有自己的定制产品UPRedis,也支持水平拆分,这样从应用层到数据层都具备了一定的水平扩展力,每次营销期间系统的性能也就不再棘手。

即便这样,为了系统整体的稳定,限流也是必不可少的,目前的限流主要两方面,一个是入口层网络设备F5上的限流,根据每个接口限制总的流量,比如设计性能10000,那么一般会在入口上限制为8000;另外一个限流策略则是在服务间调用,对于关键服务调用,会在RPC调用框架(magpie)中设置限流、熔断、降级策略,以保证整体系统的稳定。

最后,值得一提的是所有的架构设计都离不开业务,业务上的设计可以对后台架构设计产生很大影响,一个简单的业务上将营销时间分散,将多个活动峰值错开,就可以大大简化后台系统的设计,同时也可以节省大量的机器资源。

异步化

起因为两年前的一次活动,因为一个行业方过载整个系统响应很慢,导致调用方的线程全部阻塞,进一步导致该调用方提供的其他服务由于没有线程处理也超时,从而上层调用方的线程也全部阻塞,最终蔓延到整条业务线。本来只是一个局部性的问题,但就是因为每一层都是同步调用,最终所有线程全部挂住,问题蔓延至整个系统。

所以当时就将存在不可靠调用的部分外部系统调用做了异步化处理,比如部分余额查询从串行同步执行变成串行异步执行,并最终优化成目前的并行异步执行。

上图为云闪付自研异步化框架,为什么要做这个框架,原因是流程调度并不是简单A调用B,很多时候需要做流程编排,可能有并行调用,也可能串行调用,也可能先并行后串行等等,这样的情况需要一套框架来避免应用自行处理流程调度的内容。

另外一个原因是做基础组件一定要更加方便为应用开发服务,尽量减少应用开发犯错的可能,这个框架将常规的http调用、rpc调用、webservice调用统一封装成标准接口,开发人员只用实现call、onComplete、onTimeout、onError几个接口,系统就能够很好的run起来。

通过性能测试数据可以看出,异步化的性能整体上与同步相当,这是因为整个异步化本质上并不解决性能问题,性能问题依然是依靠于上下游系统的整体性能,但是有效减少了工作线程分配,更是减少了慢服务对快服务的影响,同时通过并行调度在一定程度上缩短了响应时间。

柔性事务

在做拆分中难免有磕绊,服务拆分到一定程度后,各种分布式一致性的问题便纷纷出场,比如扣钱、扣优惠名额问题,如果后一笔超时怎么办?各个业务条线都有自己的异常处理模式,有的把失败和异常记录到数据库或缓存,通过定时任务去回补,有的记录到消息队列,通过消费者去补偿,有的在数据库集群内,通过数据库分布式事务XA方式解决,更有的记录到日志,日终通过手工方式追补。明显各个系统实现的各不一样,会有各种问题,比如消息队列数据丢失,定时任务的可靠性等等,带来较大的业务风险。

后来整体上参考了业界柔性事务解决方案-TCC,自研了一套轻量的应用层分布式事务框架UPTCC,能够较好的支持银联分布式数据库和缓存,也集成了银联RPC框架,通过异步化加速改善整体性能,目前正在一些系统推广使用。

营销资金与安全

在营销这一块碰到的第一个问题就是热点账户问题,由于所有活动的出资方都是同一个账户,每一笔折扣立减都需要访问这个账户,形成了一个超级热点。最开始的方案自然是拆账户,但是拆多了业务方无法接受。再之后也使用硬件解决方案,比如SSD,业内常说所有能用硬件解决的问题都不是问题,但是硬件解决方案依然不能满足新要求。直到两年前UPRedis同步复制出现和数据可靠性的提升,最终通过UPRedis集群解决了此问题。

营销资金是个严肃的话题,所有关于资金类的设计都要慎之又慎。现阶段,云闪付APP对接了银联实时风控系统,防范黄牛和黑产,自身也有平衡试算机制,及时发现异常的资金变动,在应用设计方案上,做到交易幂等,并发控制,分布式一致性,业务监控预警等等,多维度防范资金风险。

补短板对外赋能

由于海量的交易和庞大的用户规模,为了进一步提升系统的可靠性,目前程朝的团队正在做双中心双活工作。

最后,开放赋能也是云闪付APP的重点工作,目前的乘车码、理财平台等都是通过开放平台对接,云闪付APP未来会进一步开放平台打造良好的产业生态,也会输出解决方案对外赋能。

Image placeholder
IT头条
未设置
  22人点赞

没有讨论,发表一下自己的看法吧

推荐文章
SACC 2019:达梦数据库推进实践与思考

2019年10月31日~11月2日,由IT168旗下ITPUB企业社区平台主办的第十一届中国系统架构师大会(SACC2019)在北京成功召开。本届大会继续沿用四大主线并行的演讲模式,设置业务系统架构设

SACC2019:爱奇艺的大数据中台战略(附演讲实录)

  孙斌爱奇艺高级总监主要负责爱奇艺的大数据中台、商业智能、内容智能制作等业务。在互联网产品设计和研发方面有十多年经验,曾就职于微软、hulu、雅虎等公司。摘要:爱奇艺的业务已经从单一的视频业务发展为

DTCC2019:陌陌直播推荐的0到1

作为社交+直播行业的领军者,陌陌直播依托于开放式社交平台所承担的职责不同于社交和短视频推荐,需要在内容分发、社交匹配和营收目标上进行综合考虑。如何进行多目标分发的问题抽象和预估建模,以及针对业务的独特

DTCC2019 :“数据架构设计实践专场”等您来!

  2019年5月8日~5月10日,由IT168旗下ITPUB企业社区平台主办的第十届中国数据库技术大会(DTCC2019),将在北京新云南大酒店召开。本次大会将以“数据风云,十年变迁”为主题,邀请百

Android篇 | 爱奇艺App启动优化实践分享

导读性能优化一直都是各个APP推进中的重点、难点,爱奇艺App也不例外。在此之前,爱奇艺AppAndroid版的启动速度虽然一直处于同类App领先的水平,但优势距离其他同类的APP距离一直很小。面

2019年度IT168技术卓越奖名单:云计算类

时光飞逝,转眼已是2019年最后一个月,又到了盘点、总结进行时!纵观各大云厂商动态,似乎并没有停止征战与厮杀的任何迹象。在过去一年里,不管AWS、微软Azure还是国内的阿里云、腾讯云、百度云、华为云

HPC CHINA 2019:面向E级计算时代的HPC/AI协同设计

蓝天飘白云,牧场奶茶香。蒙古大营雄风在,琴声传远方。骑马又滑沙,豪饮河套王。敖包相会歌一曲,笑发少年狂。中国一年一度高性能计算领域的盛会——全国高性能计算学术年会(HPCCHINA2019)在内蒙古呼

盘点2019:对国产数据库的一点观察和总结

“想,都是问题,做,才有答案”—–华东师范大学副校长、CCF数据库专委会副主任周傲英。之所以开篇引用周教授这句话,是因为笔者觉得,这短短10个字,是对国产数据库发展的最好诠释。中国能否翻越数据库这座大

Hadoop YARN:调度性能优化实践

背景YARN作为Hadoop的资源管理系统,负责Hadoop集群上计算资源的管理和作业调度。美团的YARN以社区2.7.1版本为基础构建分支。目前在YARN上支撑离线业务、实时业务以及机器学习业务。离

来SACC2019共论“数字转型 架构演进”之道

2019已经过半,第十一届中国系统架构师大会SACC2019的脚步也越来越近了,十年来中国系统架构师大会SACC一直紧跟系统架构关键技术热点,成为架构师、CTO、CIO以及各研发人员学习交流的前沿阵地

嗨!你的 2019 晒好封存了吗?快来看程序老兵的 2019 吧!

时间过得真是太快快快了,2019还剩下最后几个小时了。回望即将过去的这一年,老兵哥做了不少事情,有计划内的,也有计划外的,当然还有不少事情没做。赶在最后时刻晒一晒我的2019年,希望从成绩荣誉中获得一

直击DTCC2019现场:数据库智能化运维探索与实践

5月10日,第十届中国数据库技术大会(DTCC2019)正在火热进行中。作为本届大会讨论的焦点之一,“数据库智能运维”专场人气爆棚,来自京东物流、腾讯、字节跳动、京东商城、便利峰的行业专家出席现场,他

数字转型 架构演进 2019中国系统架构师大会盛大召开

2019年10月31日~11月2日,由IT168旗下ChinaUnix社区主办的第十一届中国系统架构师大会(SACC2019)在北京隆重召开。自2009年举办以来,大会云集了国内CTO、研发总监、高级

(PPT 下载,来了!)DTCC2019 中国数据库技术大会见证实录

2019年5月8日-10日,DTCC2019第十届中国数据库技术大会历时3天,圆满收官。作为国内顶级的数据领域技术盛会,共有23个技术场次,邀请超过125名专家,包括来自阿里、京东、苏宁、滴滴出行、百

【跃迁之路】【868天】全栈工程师IT知识库更新记录(2019.1.3更新)

[叨叨两句] 跃迁之路整体迁移至GitHub做为开源项目,未来的更新提交都在那,其它地方只做更新记录的发布 该项目将定位为全栈工程师养成,目标是可以独立完成项目的全流程工作 项目地址https://g

探秘ASC19:首次设置的“超级团队对抗赛”究竟是什么?

4月21日,2019ASC世界大学生超级计算机竞赛(ASC19)总决赛在大连理工大学正式拉开帷幕。根据赛程,在4月23日正式竞赛之前,所有参赛队伍的主要任务是完成竞赛系统的搭建与调试,力求在3000瓦

大咖齐聚DTCC2019,共论云数据库前景

2019年5月8日,由IT168旗下ITPUB企业社区平台主办的第十届数据库技术大会(DTCC2019),在北京新云南皇冠酒店正式开场。本届大会以“数据风云十年变迁”为主题,百余位行业专家就热点技术话

准独角兽雷鸟科技出席SACC2019,讲述AI在场景互联网下的创新革命

10月31日至11月2日,由IT168旗下ITPUB企业社区平台主办的第十一届中国系统架构师大会(SACC2019)在北京召开。作为国内最具价值的技术交流盛会,也少不了今年热门的智慧大屏话题。据了解,

Oracle ADW业务数据平台点亮DTCC2019数据库技术大会!

数字大脑、互联网+、智能+、人工智能、边缘计算……信息技术领域好像从不缺少概念,但无论世界如何变化,数据是一切业务的核心。要想有效管理、分析和挖掘数据带来的价值,数据库一定是必需品。2019年5月8日

DTCC2019 爱奇艺实时数据传输服务

数据库间实时数据传输服务可简化业务系统的数据架构,使其专注于业务开发。DBIO是爱奇艺研发的数据库间实时数据传输服务,用于同异构数据库间实时复制与数据变更捕获,是业务系统数据共享的核心通道。作者:郭磊

DTCC2019数据库技术评选结果全面揭晓,四大类别奖项新鲜出炉!

数据风云,十年变迁,而DTCC是一切变革的见证者。作为数据库领域顶尖级的盛会,DTCC已经成功举办了九届,今年是第十届。继承往届会议规模大、涉及话题更前沿、演讲内容更深入等特点之外,DTCC2019数

再见,2019!你好,2020!

今天,是2019年的最后一天。虽有不舍,但终归还是得说再见!明天又会翻开新一年的篇章,希望各位在新的一年都能升职加薪迎娶白富美,走上人生巅峰。19年某月某日突发奇想,想用公众号分享一下这些年学到的技术

送别2019,期待2020!

概述2019年时间过得很快。有欢笑、有离别、有压力、有收获。关于工作项目发生了变动,团队也发生了变动,不过总体是成长的,在这感谢领导的关照、信任!下半年开始学习Go语言,并用Go进行搭建项目,也算是刚

架构转型先行——金融业务场景下的新一代架构实践

  赵勇中国农业银行研发中心架构管理办公室主任工程师中国农业银行研发中心架构管理办公室主任工程师,十年以上金融行业信息化架构设计与管控经验。历经互联网金融、两地三中心、分布式核心银行等大型银行系统工程

英特尔:云从此处升起

如今,云计算已真正走过了“早期采用者”阶段,进入“早期大多数”。更多的组织已经认同了云计算所能够带来的巨大价值,将业务负载迁移到云上,以获得云的敏捷性、可用性、可扩展性等优势。而云计算也正式迈进2.0