作为当代大学生,我们网购的次数可能比我们逛商场的次数还要多。以为为例,上了大学之后,自己几乎没有去商场买过衣服。之前的每年十一月十一日,都是俗气的光棍节,现在,随着电商的发展,摇身一变,成了疯狂的购物节。
网购,支付少不了。每年双十一,刚到零点,就有好多购物狂欢者为自己购物车内心仪已久的物品付款。我们真的难以想象,那么大的成交了,在同一时间,有多少人和我们一样在用支付宝进行付款!这么大的用户量,支付宝还能正常使用,在快速的时间内让人们完成下单,就让我对支付宝的框架十分好奇!是什么样的框架支撑了如此大的一次全国性活动,还不会崩溃!
支付宝的架构设计上应该考虑到互联网金融业务的特殊性,比如要求更高的业务连续性,更好的高扩展性,更快速的支持新业务发展等特点。整个平台被分成了三个层:
- 运维平台(IAAS):主要提供基础资源的可伸缩性,比如网络、存储、数据库、虚拟化、IDC等,保证底层系统平台的稳定性;
- 技术平台(PAAS):主要提供可伸缩、高可用的分布式事务处理和服务计算能力,能够做到弹性资源的分配和访问控制,提供一套基础的中间件运行环境,屏蔽底层资源的复杂性;
- 业务平台(SAAS):提供随时随地高可用的支付服务,并且提供一个安全易用的开放支付应用开发平台。
在双十一大促当天业务量年年翻番的情况下,支付宝面临的考验也越来越大:系统的容量越来越大,服务器、网络、数据库、机房都随之扩展,这带来了一些比较大的问题,比如系统规模越来越大,系统的复杂度越来越高,以前按照点的伸缩性架构无法满足要求,需要我们有一套整体性的可伸缩方案,可以按照一个单元的维度进行扩展。能够提供支持异地伸缩的能力,提供N+1的灾备方案,提供整体性的故障恢复体系。基于以上几个需求,我们提出了逻辑数据中心架构,核心思想是把数据水平拆分的思路向上层提到接入层、终端, 从接入层开始把系统分成多个单元,单元有几个特性:
- 每个单元对外是封闭的,包括系统间交换各类存储的访问;
- 每个单元的实时数据是独立的,不共享。而会员或配置类对延时性要求不高的数据可共享;
- 单元之间的通信统一管控,尽量走异步化消息。同步消息走单元代理方案;
支付宝在2015年双十一当天的高峰期间处理支付峰值8.59万笔/秒,已经是国际第一大系统支付。支付宝已经是全球最大的OLTP处理者之一,对事务的敏感使支付宝的数据架构有别于其他的互联网公司,却继承了互联网公司特有的巨大用户量,最主要的是支付宝对交易的成本比传统金融公司更敏感,所以支付宝数据架构发展,就是一部低成本、线性可伸缩、分布式的数据架构演变史。现在支付宝的数据架构已经从集中式的小型机和高端存储升级到了分布式PC服务解决方案,整体数据架构的解决方案尽量做到无厂商依赖,并且标准化。
经过这么多年的高可用架构和大促的准备工作,蚂蚁金融技术团队可以做先胜而后求战”,主要分为三方面技术积累:“谋”,“器”,“将”。
“谋”就是整体的架构设计方案和策略;“器”就是支持技术工作的各种基础中间件和基础组件;“将”就是通过实践锻炼成长起来的技术人员。