[Fintech情报局]不可能的网联之五:网联是否也”容错“
金融混业观察, 获得微信公号“双认证”(媒体认证及原创认证),关注请点击图上方小字金融混业观察,参加VIP计划请见文尾。
观察者言:分布式之所以可以承受巨大流量的前提,是和中心式相比,可以一定程度容错。建设中的网联为了承受巨大的支付流量压力,选择了分布式架构(参见本公告系列文章),那么网联是否也会出现一些时间段内的数据不一致呢?
注:本公号新近推出新栏目“FinTech情报局“供试读,首批文章来自网联的技术专家们,解析网联如何完成“不可能的任务”,今日是最后一篇。日后相关精彩文章请移步财新数据+相关栏目。
财新特约作者 周欢/文
2015年5月27日杭州市萧山区某地光纤被挖断,全国多地网友反映支付宝出现"无法登陆"异常。一时间,民心骚动,腾讯新闻网友“匆匆那些年”抱怨说:“试着登录了半个多小时,还以为被坏人转走了,支付宝赔偿我精神损失。”得到了广大网友的一致声援,可以发现广大百姓皆在担心支付宝不能恢复,或者恢复后个人账户余额与实际存储的不一致而担忧。支付机构如此,银行账务紊乱的例子也时有发生。当然这一切也不是机构或者银行所希望出现的。
网联作为向支付机构提供支付业务转接清算的专业化服务机构,秉持对社会和百姓的责任,致力于提供不重复、不遗漏、不出错的资金清算服务,全力保障数据高一致。为实现该目标,平台重点从数据库、网联内部、平台与机构银行外部三个维度来对数据一致性加以保障。
搭建安全稳定数据库
众所周知,数据库是很成熟的数据存储介质,而丢失数据,首当其冲就是用户的大量投诉。因此,数据库层面必须保障数据强一致性,网联平台从数据库安全到数据库容灾,再到数据库灾难恢复都努力做到这一点。
(一)数据库安全
目前,平台选用MySQL数据库,是目前世界上较为成熟稳定的数据库,且是全球最受欢迎、使用率最高的数据库,足以保障平台的安全、稳定运行。在该数据库下,交易要么成功、要么失败,并且各个交易间相互独立,互不影响,从而保障了清算服务不出差错。平台在设计之初将交易流水号和机构号上设置为唯一,确保了任何一家机构的交易流水号的唯一性,进而保障了清算服务不重复。任何交易的产生都会持久化到磁盘上,保障了数据不遗漏。
为保障数据存储的完整性,[网联使用数据库异常自动切换组件,最大程度的提高可用率。网联数据库集群选用主备架构,在主库出问题时如何保障数据一致性呢?网联选择在成熟的高可用自动切换组件基础上,进行二次开发,保障主备之间强一致性。如果单台数据库出现故障,监控程序会自动探测多次,确认异常后,再交给仲裁探测,双方确认数据库异常后,开始检查主备数据一致性状态,只有数据一致,才会发生自动切换,否则该套数据库停止提供服务。如果主备都异常,会在提交央行大额清算系统前从同城灾备数据库中拉取数据,应用日志也会抓取交易成功数据,全面保障数据最大化和最终一致性。
(二)数据库容灾
在容灾方面,平台整体采用多地多中心的分布式架构,整个数据库集群采用成熟的CDS组件进行分库分表,确保数据相互独立又完整统一。任何一套数据库都包含同机房主库、同机房备库、同城灾备、异地灾备4台机器,某城市出现地震等灾难性故障时,能及时从同城灾备或异地灾备中恢复数据。那么容灾备库是如何保证和主库的一致性呢?为了尽可能减少对业务的影响,网联容灾库选用异步方式同步,仅从数据库角度显然无法保证容灾库的强一致性。为此,网联采取了多项措施,包括从应用日志中恢复数据、交易到清算半同步方式,如果交易主备都宕机,可以从清算库恢复交易数据、兜底等等方式,保证数据最终一致性。
完备的内部高一致性
为保障交易清算一致性,网联内部做了大量的方案,通过与市场顶尖专家充分探讨,理论与实践相结合,最终采取按每小时清分一次的方式进行任务处理。当一小时的交易都完成时,系统会首先校验交易和清分数据的一致性,发现异常时及时告警,通知相关人员紧急处理。接着其次,清算系统在发起清算任务前,也会自动检查上个批次交易数据的准确性,如果发现数据不一致,清算任务会自动停止,监控通知人工介入,宁可延迟至下一批次清算,也坚决不能让清算出错。如果在规定时间内,数据恢复一致,会立刻启动对该批次的清分任务,保证了交易清算数据的一致性和最大化。如果恢复时间较长,不能在规定时间内恢复,那么对清算库现已有的数据清分,先保证清算最大化。遗漏的数据通过第2天进行补清分和补对账确保数据一致。
网联会将清算结果生成对账文件,分别发送给相应银行和机构确认,确保网联清算的数据与机构、银行三方一致。那对账文件是何时生成的呢?清结算系统在清分时按原有清分逻辑进行处理,在批次清分汇总任务完成后,清结算系统主动向对账系统生成对账通知:某个批次、某些中心、某些库、总笔数(以库为单位分别统计)、清分状态信息。
对账系统收到清结算系统通知后,对账子系统按照某个批次、某些中心、某些库、清分状态读取清算库的交易记录,对账子系统根据通知的总笔数进行数据完整性校验,校验完成后生成常规交易对账单,保证清算与对账单数据结果的一致性。
参与者一致性
交易以平台状态为主,网联会将清算结果生成对账文件,分别发送给相应银行和机构,让他们确认,确保网联清算的数据与机构、银行三方一致。清结算系统在清分时按原有清分逻辑进行处理,在批次清分汇总任务完成后,清结算系统主动向对账系统通知。对账系统收到清结算系统通知后,对账子系统读取清算库的交易记录,对账子系统根据通知的总笔数进行数据完整性校验,校验完成后生成常规交易对账单,保证清算与对账单数据结果的最终一致性。
为解决交易不一致问题,网联平台建立了交易查询重试、关单机制、终态通知、对账机制、差错处理等多重机制,确保与银行、机构三方数据一致性。具体流程如下:
首先,机构会发起交易,通过报文发给平台渠道,渠道会转发交易模块进行处理,同时调用银行前置接口查询交易状态,如果处于未名状态,则会重试3次,最终会将网联交易状态置为终态,返回支付机构,协议支付整个过程最长持续1分钟,退款和付款10分钟,最后进行关单处理。整个过程在架构和报文上保证了三方一致性。
其次,每个批次清算完成后还会进行对账处理,平台会给机构和银行发送对账文件,机构和银行会与平台进行对比,如果发现不一致,将立刻通知网联,如果平台发现数据存在缺失,会进行补对账处理,重新生成对账文件,发送给机构和银行,确保三方对账一致。
最后,当银行或机构发现自己对账文件和网联对账文件不一致时,银行或机构会始终以网联平台为准,银行或机构将走差错处理。如果出现银行扣款,但用户还未收到商品时,此时银行就会将这笔资金退换给用户,用户就不要再担心多扣款的情况了。
综上所述,网联平台会从各个维度去保障数据一致性,即使机构或者银行造成了不一致,网联也会把他们纠正为一致状态。即使极端情况下,出现数据短暂不一致场景,平台也会通过对账、差错处理等措施把数据补上,保障数据最终一致性。■
作者供职于网联
财新更多网联独家报道:
《财新周刊》2016年第34期“网联归位”“
《财新周刊》2017年26期“‘不可能’的任务”
《财新周刊》2017年第32期 “银联打网联 支付三国杀”
财新网即将全网收费阅读。现在按年订阅财新周刊,有机会以惊喜价上升到“财新通”,通览全网精彩内容
扫码订阅财新数据+ ,能先睹为快 ,并有专享内容。
特别提示
公号繁似牛毛针,何不就此择精准?请即日加入本公号的VIP组。可直接向“金融混业观察”后台回复:真实姓名+微信号+单位+职务+联系方式(邮箱/手机等,绝对保密)
加入VIP组计划后,您可以专享以下服务:
1、不定期收到VIP组专享特殊文章推荐,专题回复
2、VIP组成员可优先参加“金融混业观察”粉丝线下活动,与行业大佬面对面
3、优先享受财新的内容推广计划
未来还有更多惊喜~ 赶快加入VIP组吧!
金融混业大潮势不可挡,各类金融创新层出不穷,金融混业观察(caixinfinance)秉承新闻专业主义精神,提供客观及时的金融行业报道精粹,分享深度专业的评论点睛。欢迎建议、意见、合作、投稿至jinrongwexin@caixin.com
特别声明:
"金融混业观察"由财新传媒出品。"金融混业观察"所刊载内容之知识产权为财新传媒及/或相关权利人专属所有或持有。未经许可,禁止进行转载、摘编、复制及建立镜像等任何使用;转载请联系yongwang@caixin.com。
财新网App5.0版本已全新上线!扫描二维码(可长按或保存到相册进行识别)下载。
- 多烧钱能维持fintech名头?美国上市这四大平台单季研发投入超2亿
- 【NBA情报局】紫金青年军对阵三旬老汉 达拉斯改名队造访奥克兰
- 【企业飞鸿】挑战不可能,运友物流人这“可能”了
- 厨房故事|无论情况多糟,你都不可能不爱那个为你做吐司的人
- 国台办:台当局靠美军舰“挟洋自重”不可能得逞
- 职位情报局 | 城投意谷、酷旅互动数据、网帅科技相关职位招聘in
- 【NBA情报局】骑士主场战老鹰 湖人对阵尼克斯 76人大战森林狼
- 东北的这些土特产,我敢保证你不可能都吃过
- 程序员不可能实现的愿望
- 稻盛和夫:不敢去做“不可能”的事,就不可能成大事
