【大文观链】支付宝用区块链灾备:即使流浪地球,你也得还“花呗”

2132 天前
1084

图/《流浪地球》

链得得注:【大文观链】,是链得得App推出的区块链技术分析系列栏目。由链得得App独家作者马文佩,对区块链、数字货币市场中前端技术方案进行应用层讲解与热点事件的技术层分析。每个工作日与大家一同分享“链圈技术宅”的那些头脑日常。

随着2019年春节档期上映的国产科幻电影《流浪地球》,科幻这一在国内较为冷门的题材一下子成为了焦点话题。在电影情节中,杭州市虽然没有直接出现,但作为重要的剧情转折点,杭州市的毁灭也让观众们议论纷纷。

在电影上映后,支付宝在微博上回答了网友们的问题:杭州市毁灭了,花呗还要还吗?

在这份回答中,阿里表示,“现在支付宝的机房是‘三地五中心’,也就是在三座城市部署五个机房。如果其中一个或两个机房发生故障,支付宝的底层技术会将故障城市的流量全部切换到运行正常的机房,并且能做到数据保持一致、零丢失,以此应对自然灾害、断电、光缆被挖断等黑天鹅事件……为了应对地球2500年的流浪,支付宝的地下机房肯定不会‘三地五中心’,大概是‘七十二地下城一百零八中心’,即使杭州一个地下城没了,也能把所有数据切换到其他中心。如果运气不好,一百零八中心全部受灾,而按照电影设定的科技水平,支付宝到那时可能已经实现了去中心化的区块链处理和量子计算,所有数据节点完全是分布式的云端架构,只要地球上还剩下一台计算机在线,支付宝就依然可用。”

对于支付宝来说,出色的灾备能力背后也是血的教训。2015年5月,杭州市萧山区某地光纤被挖断,导致部分用户无法使用支付宝。随后支付宝工程师紧急将用户请求切换至其他机房,受影响的用户逐步恢复。两个小时之后,支付宝方面宣布用户服务已经恢复正常。

当时的支付宝灾备模式为异地双活的架构,即杭州和外地两处机房同时为用户提供服务,系统会将全国所有用户的需求分流到两处机房。异地双活不同于常见的一主一备式方案,通过这样架构,如果某一个地区发生了一些意外情况以后,可以更加快速的把服务分散到别的机房去。

发生意外的并不仅仅是支付宝,谷歌甚至还经受过更加严重的考验:2013年8月,包括搜索在内的大多数谷歌服务宕机数分钟。市场研究公司表示,谷歌服务宕机对全球互联网产生了广泛影响,在一段5分钟长的时间内造成全球互联网流量下降40%。

在面临突发事件例如火灾或其它严重事故时,谷歌有能力将所有数据转移到其它数据中心中并使用户能够顺利继续访问的技术。他们表示,整个转移过程是“顺畅无缝”且“完全自动”的,但并未提到具体实施细节。这项技术无疑是参考了谷歌自行设计的知名灾备平台Spanner,但具体细节外界依然不得而知。但对于体量如此巨大的企业来说,发生黑天鹅事件似乎是板上钉钉的——2018年10月,youtube再次宕机两小时,造成了巨大的负面影响。

另一方面,在支付宝宕机事故发生三年之后,支付宝改用了 “三地五中心”的容灾解决方案——即在三个城市,安置五个机房。一旦其中的一个甚至两个机房发生故障,底层数据库系统,会自动将流量全部切换到正常的机房。这个底层数据库系统采用的是其自主研发的分布式数据库OceanBase,数据库之间利用Paxos协议保持数据一致性。

Paxos算法是莱斯利·兰伯特于1990年提出的一种基于消息传递且具有高度容错特性的一致性算法。Paxos算法解决的问题是在一个可能发生进程缓慢、被杀死或者重启,消息可能会延迟、丢失、重复的分布式系统中如何就某个值达成一致,保证不论发生以上任何异常,都不会破坏决议的一致性。一个典型的场景是,在一个分布式数据库系统中,如果各节点的初始状态一致,每个节点都执行相同的操作序列,那么他们最后能得到一个一致的状态。为保证每个节点执行相同的命令序列,需要在每一条指令上执行一个“一致性算法”以保证每个节点看到的指令一致。在实际应用中,Paxos算法的意义就是让五个机房的数据始终保持一致,从而使用户的财产在任何情况下不会多出来或者消失。

但是Paxos算法有一个先天的缺陷:在算法中并不考虑可能出现消息篡改,即拜占庭将军问题的情况。拜占庭将军问题也是由莱斯利·兰波特在其同名论文中提出的。Paxos算法解决的问题是,在分布式系统中可能存在的不稳定性,而拜占庭将军问题则加入了不确定性。换句话来说,Paxos算法能解决机房消失,网络阻塞等问题,但无法应对机房被入侵发出的假消息。

在《流浪地球》的世界观里,不仅在地下城中出现了飞船派、地球派的分歧,在地面上也有叛军的存在。支付宝的“一百零八中心”在城市随时都会被毁灭的背景下出现问题的机会也更大:即使是现在,支付宝也不能彻底杜绝机房被入侵的可能性——黑天鹅效应就是指极不可能发生,实际上却又发生的事件。这也是为什么支付宝在回答中一定要加上“支付宝到那时可能已经实现了去中心化的区块链处理”的原因:在出现信任问题的时候,区块链是最佳的解决方案。

将区块链技术引入云储存系统灾备的目的是利用区块链技术去中心化、去信任的特点实现云存储系统中存储节点的分布自治以及存储节点间基于共识算法的数据交换与数据共享。与目前主流的中心化云服务系统相比,网络节点可以建立多对多而非一对多的联络关系,能够大幅提升数据的传载效率;在数据存储、交换以及上传、下载过程中采取数据的区块化封装、匿名交换以及非对称性加密算法,能够极大地保证数据云存储整个生态链的安全性和可靠性。

在基于区块链的灾备系统之中,灾备中心不仅要接收并校验金融数据,也要对校验后的金融数据和金融状态数据进行哈希处理生成金融数据ID,并将金融数据、金融状态数据以及金融数据ID进行封装以生成区块数据和区块高度,从而缓解金融数据多变与区块链执行操作单一之间的冲突。

实际上,这种基于区块链的金融数据灾备系统早就成为了各家金融科技企业的重点发力对象:通过检索欧洲专利管理局数据库,我们可以发现,不仅是阿里巴巴,京东金融、点融、云象等企业都申请了类似专利。

根据其中一些文档的表述,可以预见,将区块链技术应用到灾备云存储领域可以实现在众多网络存储设备和存储需求之间直接建立多对多的联络关系,无需搭建统一的管理平台,从而大幅降低系统的搭建、运行、管理成本。毫无疑问,区块链灾备技术是未来金融科技行业灾备方式的一个重要发展方向。