经济的中枢是金融,金融的中枢是银行。如果四大行这样的大银行出了大故障,整个国民经济都会乱套。大部分人对银行的认识,只是银行网点里的柜员和ATM机。其实,网点只是银行这只大章鱼的千千万万根触须之一。

资金和信息被网点这些触须抓取,汇集到总行这个大脑中去处理。我们看到柜员们在玻璃背后猛敲电脑,其实这些电脑仅仅是前置终端。网点柜员录入的数据,不是在网点处理,而是被传送到服务器上处理。银行的前置终端有几万个,但服务器没多少。大家都知道,除了大脑,章鱼的腕足也是由一定智能的。也就是说,章鱼的腕足自己就可以处理简单的工作,无需大脑参与。我国的银行,在两千年之前,也是这种模式。网点的业务,在网点、支行、二级分行、一级分行各自处理一部分,最后才汇集到总行,总行负责处理最终的那部分。

这样的模式简单易行,符合当时的实际情况,但效率很低,反应很慢。比如说,八十年代时候,老百姓的存款是不能通存通兑的。你在某行广州分行有存款,但你在同一家银行的深圳分行取不出来。因为你存款的数据,只保留在这家银行广州的分行,深圳分行查询不到。随着跨地区经济活动的不断增多,这样的模式越来越不适合。

于是,银行就开始了一轮又一轮的业务数据大集中运动。把业务数据一级一级上收,从网点集中到支行、二级分行,乃至一级分行。银行在一级分行设立了数据中心,汇集了全省的业务数据。但是,一级分行仅仅是省一级的,各省之间的数据还是不能互相查询。后来,跨省的经济活动也越来越多,银行又得做出改变。怎么办呢?只能是继续集中数据呗,全部汇集到总行这个大脑里。

但是,这件事很难办,是一步一步来的。先是把各省份的数据中心,迁移到总行来。也就是说,把这些服务器,全都拉到总行的机房里去。总行自己建一个服务器,连接各省分行的几十台服务器。虽然这些服务器都在一起,但是还是不能直接查询。各种跨省的业务,都要在总行服务器上中转。总行服务器得天天和几十个分行服务器核对数据。任何一笔跨省业务,都得保证两个省份和总行三方一致。

这样仅仅是表面上的集中,不是实质上的集中,三方不一致天天发生,总行陷入无休止的对账工作中。但是,实质上的集中,问题就复杂多了,这意味着得把几十个服务器的数据都迁移到一个服务器上。这样,就对这一台服务器,提出了极高的要求。几十台服务器工作时,其中一台出了故障,只会引起局部问题,但是集中到一台服务器上的时候,一旦出错,后果不堪设想。这时候,普通的服务器肯定难堪大任,得用高级的服务器。这样才能让宕机时间降到最低程度。

服务器是有三六九等的,简单的X86服务器能满足大部分单位的需求,再往上,就是小型机和大型机了,而我国,是不能自己生产小型机和大型机的。说实话,连X86服务器技术,都是联想从IBM手里买来的。

银行要想实现业务大集中,只能购买小型机和大型机。业务少的银行,可以买小型机,这个有惠普和IBM两家可以生产。业务多的银行,只能买大型机,这个只有IBM一家能生产。

这样一来,一方面,IBM可以漫天要价,我国无法讨价还价,只能任由IBM狮子大开口,想怎么宰割就怎么宰割。另一方面,大型机的底层架构是黑盒子,我们无法知道是否有后门。美国政府规定,美国企业的信息产品如有缺陷,要及时上报政府,美国政府有可能利用他所掌握的这些漏洞进行非法活动。

斯诺登棱镜门事件曝光后,我国高层相当重视信息安全工作。国务院制定了周密的计划,想要逐步实现国产化。政府引导、鼓励、扶持企业加快自主技术研发,从底层芯片到移动设备,从办公软件到数据库,从网络制式到手机操作系统,甚至卫星导航系统,都在快速自主化,逐步脱离海外巨头束缚。

IT国产化的核心是去IOE化。IOE是指IBM、Oracle和EMC三巨头,也就是说去掉以IBM的大小型机、Oracle的数据库和EMC的存储设备为代表的IT基础设施核心架构。但是,这项工作很艰难,尤其是去掉IBM的大型机,国务院对其他指标均有严格要求,唯独对大型机没有。

银监会和工信部做了大量调研工作,针对银行业下达了安全自主可控技术的推进指南。从2015年起,各银行业金融机构对安全可控信息技术的应用,以不低于15%的比例逐年增加,直至2019年达到不低于75%的总体占比。PC 服务器这块,要求增量采购100%国产,操作系统、中间件,15%国产。唯一没有明确要求的就是大型主机,这方面的难度,监管部门自己也是知道的。

阿里的艰难尝试

去IOE化这个词,最初是阿里巴巴提出的。小型公司的数据量小,远远够不着瓶颈,但阿里巴巴业务模式,让它很快就撞上了天花板,每年一度的双十一,都是极大的考验。

阿里巴巴和银行一样,也是从IOE开始的。但是,2008年时候,阿里巴巴的数据库规模成为亚洲最大。从这样的海量数据中查询、处理并得到报表,相当困难。阿里巴巴请来各家顶级DBA服务商,包括IBM、微软,没有一家能够提供一套完整的解决方案。阿里巴巴没办法,只能自己硬着头皮上。马云从微软亚洲研究院,请来王坚做首席架构师,开始去IOE。思路是以廉价的PC服务器、开源的MY SQL数据库和低端存储设备来替代IOE,用分布式处理的架构,替代IOE的集中式处理架构阿里巴巴调集了1.7万名工程师,花了整整三年时间才艰难完成。这是中国最早的去IOE尝试,也是已公开的最昂贵的去IOE尝试。

但是,这种尝试是极其个别的案例,很难推广到其他企业,特别是传统行业。阿里巴巴这样的互联网企业的业务系统,虽然面临更高的并发、更大的数据量,比如双十一时候的爆发式访问,但是大部分访问请求不涉及数据操作,而且这些数据都是松耦合的非关系型数据,可以用分布式处理来很好地完成,所以近几年来,大型互联网企业开始尝试分布式处理系统。

传统行业

但是对于金融、电信、电力等传统行业,核心业务系统最理想的解决方案,仍然是集中式紧耦合关系数据库方案。如银行存取汇兑、证券报价撮合、通讯计费网络管理系统,业务吞吐量巨大,高峰期交易量高达每日上亿笔,每笔交易响应时间要求达到秒级。由于关系数据耦合度高,同时要求保证响应实时性和数据一致性,因此大量数据操作必须串行进行,只能采取用紧耦合大系统来承担,分布式的数据处理方案,基本上是行不通的

很多人以为,银行的业务很简单,千千万万的业务都可以归结到存款取款汇款,只是数据的海量堆积,不涉及复杂的处理,比不上互联网企业的处理难度。这么想,真的错了

举个简单的例子,拿银行最基础的服务——转账来分析。假设我要给你转账一万块钱,银行的系统是这么处理的:首先是去查询很多张表格,去查看账户、客户的信息是否存在,机构和柜员的信息是否合法,是否超出限额,是哪种货币,有没有业务限制,是否跨行,余额是否充足等等,这些前置条件全都满足以后,就锁住我和你的账户,我的减去一万块钱,你的加上一万块钱,然后返回处理结果。一旦返回处理结果,就说明这些数据已经被写入硬盘中,之后无论断电断网,只要硬盘可读,以上信息依然存在

这样的操作,在IBM大型机上,一秒可以完成两千笔以上,也就是说,全国有两千人在同一秒转账,系统都可以正确处理。但是,如果用IBM 3850这样普通的四核企业级机架服务器,把数据量降低到大型机的几十分之一,一秒也只能处理个位数的交易,还不能保证系统稳定。

有人说,阿里巴巴的数据量比银行大多了,为什么可以去IOE。仔细说来,在安全性方面,银行和其他行业的标准差太多了。阿里巴巴的数据,只有一小部分涉及资金,主要是信息类的。比如各种的商品的文字、图片、视频的描述,这些数据不要求很严谨。比如你和淘宝客服聊天,突然遇到系统中断,你说的话对方没有收到。这没什么大不了的,重说一遍就行,你也不会因此而大发脾气。

阿里巴巴的大部分数据处理,不涉及资金往来。因此系统架构就可以采用异步式处理,也就是说,系统不需要马上把你的数据写入硬盘,就能立刻返回处理结果,等到10秒以后,再写入硬盘中去,而客户不会发觉这个空档。这样一来,从客户的角度会觉得,阿里的系统响应速度太快了。但是,对于银行,事情就大不一样了,银行大部分数据都涉及资金。这种有点“偷奸取巧”的做法,银行是不能采用的。

在转账时,如果系统把我的账户扣款一万后,突然间中断了,那我的账户的确少了一万块,你的账户却没有多出一万块,这一万块钱,不知道跑到哪里去了,问题可就严重多了。

对于阿里巴巴,即使是资金方面的数据,问题也小很多。因为客户完成付款以后,资金没有立刻转移。这些款项被支付宝锁住,等到收货后才付给商家。这中间有大量的时间,可以去纠正错误的交易。而银行的转账,大多数是实时交易,一秒钟就完成了。如果款项去了错误的账户,客户可以立刻把钱转走。

假设淘宝的系统出了故障,给一个客户重复发货一百次,那淘宝不需要太担心,中间的物流时间长着呢,有足够的时间可以去纠正,客户很难发现。而银行就不一样了,假如银行系统发生了故障,给某客户重复汇款一百次,那客户马上就能收到银行入账通知,客户可以立刻把钱转出来,带着这笔巨款跑路给个人客户的钱,撑死了几百万几千万,给公司客户的钱,很多是以亿为单位的。如果出了问题,后果不堪设想

早年美国纽约银行系统故障,导致款项只能付出不能收入,很快耗竭了它在美联储的准备金,酿成重大事故。纽约银行不仅是美国的主要结算银行,而且是世界各国各大银行在美国的主要清算行,纽约银行的事故,眼看要造成全世界金融体系大混乱,美联储不得不紧急贷款两万亿美元,才轧平头寸,事后,纽约银行付出了巨额罚息和罚款。

有了这样的前车之鉴,银行在系统建设上极其保守,宁可多花钱,宁可费事,来尽可能地降低风险。在我国,从央行中国人民银行工农中建交五大行,再到招行中信浦发民生兴业光大等股份制银行,都在使用IBM的大型机(Z系列)。至于IBM小型机(P系列、I系列)或惠普的小型机,那更是几乎每个银行都在使用了。

IBM卖大型机,不仅是卖硬件,同时还在卖软件。比如,数据库有DB2/Informix/VSAM,中间件有CICS,MQ,WAS等,操作系统有AIX/OS400/VSE/OS390等。银行买了IBM的硬件和基础软件之后,然后才能在IOE提供的IT基础架构上,开发自己的各种业务系统。IOE已经给银行打好了底子,就这样,工行还得有近万人的IT队伍去建设系统。而且,这样都不够,很多系统建设还得外包

所以以阿里巴巴为代表的互联网企业,可以养一堆程序员去搞IT建设,但银行的主业不是IT,不可能养活那么多程序员,选择购买成熟的系统再做本地化改造比较合适,像阿里巴巴一样自己去重来一遍不合算。即使银行打定主意要去IOE,以其他技术路线去绕过IOE也很难。邮储银行搞过以小型机集群代替大型机的路线,虽然勉强可行,但是实施效果不如大型机。而且后期维护成本很高,其他银行不敢跟进。这些小型机还是是从IBM和惠普购买的,只不过没有大型机那么贵而已。

浪潮公司这些年在服务器领域上进步明显,不仅X86服务器性价比很高,在小型机领域内也有所斩获。浪潮天梭K1系统已经在很多企业实施部署,但是只能替代某些小型机和边缘系统在核心系统上,仍然是IBM大型机的天下

现在新开立的银行,比如阿里的网商银行和腾讯的微众银行,他们没有历史包袱,又有强大的IT实力,和各自的云计算平台,所以轻易就能实现去IOE,但传统银行很难。建系统如同盖房子,新银行是新建房子,很容易。老银行好比扒掉老楼,迁走人员和家居,再原址重建,期间还要正常营业,难度太大。

想要实现去IOE,员工既要懂金融,又要懂IT,无论是懂金融,还是懂IT,都是如今最紧缺的人才,既懂金融又懂IT,那简直是人才中的人才,这样的人才,开出的价码一定很高,银行也难承担。况且懂普通IT技术不够,还得既懂分布式架构和云计算,又懂传统的集中式处理架构和闭源系统。因为只懂一方面是无法让历史存量数据无缝迁移的。符合这几个要求的人才,在中国还真不多。而且这样的人才,需要几万个一起工作才行。

当年IBM开发大型机时候是在六七十年代,总共花了几十亿美元,要知道那会儿的几十亿美元,比如今值钱多了。经过几十年的不断验证和改进,已经成熟多了。国内要想自己搞一套,能不能拿出这么多钱不说,企业愿不愿意拿自己的系统做小白鼠去验证和调试,这一关就过不去。有人说,中国在超算计算机方面进步明显,银河系列和神威系列都很强大。但超算机和大型机的用处是不同的,不能互相替代。打个比方,超算是比上限,比木桶最长的一块板,而大型机是比下限,是比最低的一块板。高可用性是大型机的关键优势,是其他类型计算机难以超越的。

大型机通常采用软硬一体化的容错技术,板卡信号、关键应用主机模块、操作系统、应用等每一个层次都有错误诊断和隔离模块,保证软硬件错误不会影响实际业务。

大型主机的高可用性,如果用数字来体现的话,就是要达到至少99.999%的可用性,比如IBM大型机就宣称,一年宕机时间不超过5分钟。银行每年的年终决算就是一次大考。全年积累下的数据都要在元旦三天假期里,全部跑一遍。期间几百个业务系统交换数据,生成成千上万张各种报表。如果这时候发生系统宕机,那麻烦可就大了。

还有,大型机的封闭性可以有效应对黑客入侵。大型机采用的软件、中间件和操作系统是专用的,只有很少的人懂得,普通黑客完全不熟悉。而分布式架构、云计算、开源软件是当今的显学,大部分程序员都在往这个方向转移,如果系统有漏洞,特别容易遭到攻击。

分布式架构和云计算技术在不断发展,很多人期待银行逐步把边缘系统逐步抽离大型机,等分布式架构和云计算技术相对成熟后,再把核心系统迁出IBM大型机。

但是,IBM自己也没闲着啊,研发出来新一代大型机Z13系列。Z13有全世界最快的处理器,内存提升了300%、带宽提高了100%,交易速度以毫秒为单位,是业界首款能够每秒处理30,000次交易单日处理25亿笔交易的系统。

而且,IBM不仅仅像个人电脑一样,提升了硬件参数,还增加了其他功能。针对银行特别重视的数据加密需求,z13可以对移动交易进行实时加密。通过提高移动交易的实时加密速度,z13致力于确保交易数据的安全性并降低响应时间,从而提升用户体验,大幅提高移动设备交易的安全性。

IBM系统事业部总经理Tom Rosamilia向客户保证:“由z13处理的交易从始至终都是稳定的、端到端的、安全且可审计”。

z13还能支持嵌入分析技术、针对所有交易提供实时洞察。IBM宣称:“通过提供比其他系统快17倍,且成本小得多的飞速数据洞察,z13可以帮助所有商业交易实现实时反欺诈检测。”

z13还全面支持OpenStack、KVM等开源技术,支持客户在z Linux平台上部署新的移动应用。

这些技术普通人听不懂,是要做什么呢?

简单来说,就是IBM大型机这条老狗,居然学会了许多新把戏。作为集中式处理的闭源系统的代表,逐渐适应了云计算时代的要求。支持开源技术,意味着z13可以真正地支持成为私有云和混合云架构的合适平台。据说在scale-out模型中,z13最多可以运行8000个虚拟服务器,使每个核承载至少50个虚拟服务器,从而节约软件、能耗和设备上的成本。

如今处处都在讲大数据分析,银行也不例外。但是,银行掌握了客户如此之多的数据,却一直得不到有效的回报。因为银行可以分析的数据都是结构化数据,对非结构化数据难以处理。但是,z13为Hadoop提供了全新支持,支持在系统中分析非结构化数据。z13在数据分析上的提升还包括对IBM DB2数据分析加速器的增强,以及针对具有复杂计算步骤的数据分析负载大幅提升的性能。

这样一来,既然可以用大型机去满足未来的要求,那跟着IBM走就行了,银行就更没有动力去改换门庭了。至于政府要求的国产化比例控制,IBM也有应对的办法。上到工信部,中到地方政府,下到普通厂商,IBM都和他们签订了各种协议,或者成立合资企业,把低端技术出售或授权使用,规避掉政府的各种限制。没有了国产化比例控制,银行更没有动力去替换大型机。

银行最根本的业务,其实是风险的定价和管理。去IOE会带来各种意想不到的风险,银行很难承担。如果是IBM的大型机出问题,那监管部门很难处罚,因为这已经是最顶级是设备和技术,没有更好的选择。如果是采用了其他的设备和技术出了故障,那主管的领导一定会被问责。

2013年钱荒期间,工行信用卡系统升级出了故障,搞得人心惶惶,工行领导被国务院问责。这时候,IBM主动出来顶雷背黑锅,帮工行上上下下躲过一劫。这样的厂商,哪个银行领导不喜欢呢?国内的厂商,哪一家敢这么做呢?

综上所述,IBM的大型机,从各种方面来讲,都是很难替代的。

即使大型机可能有后门,可能被美国政府在战时利用,

我国的银行业以及电信电力等行业,还是不得不继续依赖进口。