《金融电子化》 李伟:银行业金融机构实施分布式架构的思考
- 发布时间:2017-01-11
- 来源:李伟
- 大 中 小
- 打印
文 / 中国人民银行科技司司长 李伟
分布式架构的发展历程
分布式架构是随着网络技术的发展而逐步发展起来的,与网络连接从工作组级小型网络,到部门级局域网,到企业级广域网,到全球互联网的发展同步演进和发展。在20世纪90年代以前,应用系统普遍采用二层架构(客户端—服务器),用户通过客户端直接访问数据库服务器,服务的用户范围以及数量非常有限。随着20世纪90年代中后期开始流行J2EE/.Net架构,三层架构(客户端—应用服务器—数据库服务器)逐步发展成熟,应用服务器开始分布式部署,2000年后逐步开始大规模应用,服务的用户范围以及数量得到显著提升。为解决互联网时代用户高并发以及海量数据处理分析效率的问题,国际国内均开展了大量研究。2004年以及2006年,google分别发表了MapReduce以及Bigtable论文,标志着基于分布式数据库技术开展数据分析处理研究获得了突破。在此基础上,由互联网应用需求推动,以分布式计算框架和分布式数据存储为基础,支持大规模、突发性、高并发量的分布式应用架构逐步发展成熟,并在实践中得到验证,能够支持用户数为亿级、数据量为PB级的应用场景。
表1总结了系统架构各个发展阶段特点,其中最重要的一点是计算性能的发展,从每秒几笔并发交易发展到今天的每秒几十万。
银行业分布式架构应用情况
分布式架构主要由部分互联网公司开始研究和推动,银行业真正开始关注分布式架构是近五年才开始的,这其中主要有以下几方面原因:一是国家对于技术安全可控的要求越来越高,尤其是“棱镜门”曝光之后,国家鼓励在银行业推进安全可控技术的应用已经是一个明确的方向。二是互联网企业的跨界渗透,给商业银行造成巨大的经营压力。商业银行要在产品的推出效率、客户体验、精准营销、业务场景等方面做出改进和安排,这就要求银行的IT系统架构必须灵活、开放。三是商业银行经营竞争日趋激烈,要求IT的投入必须低廉高效。四是中国大型商业银行客户数量和账户数量多,基本都在“亿”级的规模,传统供应商提供的解决方案和成熟商用软硬件难于满足互联网时代业务快速发展的要求,银行IT系统运行面临巨大的风险。以上动因驱使商业银行积极探索和实践,把研究集中式架构向分布式架构迁移、分布式架构在银行IT系统中应用、开源分布式技术等作为信息化工作的一项重点工作来落实。
银行业是信息化程度较高的行业,信息化队伍及知识储备相对充分,因此短短几年,各银行业金融机构在分布式架构领域已有很多收获。在2015年度银行业科技成果中,有很多的成果得以展现,这其中既有分布式的核心银行系统(如邮储银行、招商银行成功上线了分布式核心系统),也有基于分布式存储技术的大数据平台等。但总体而言,由于CAP原理的约束,银行对于分布式架构的应用仍然落后于互联网行业。银行分布式架构特点是混合模式,在应用层广泛采用分布式实现,但在数据库层,还普遍采用集中的数据库模式。
银行实施分布式架构的关键点
银行实施分布式架构,需要从信息化建设理念、系统设计方式、IT运维模式、灾备中心机制、人才队伍建设和产业生态建设等6个方面进行通盘考虑。
从信息化建设理念上看,分布式架构需要全新的“弹性”架构的思维。传统架构是按照“峰值性能要求”来规划和设计信息化的基础设施和运维能力,采购和部署信息化资源的,所以成本较高,信息化系统的处理能力在一个阶段内是固定的,处理能力的变化非常繁琐而且容易导致风险和事故。分布式架构则不然,是按照“日常性能要求”来规划和设计的,信息化资源可以灵活动态增加,在业务高峰期采用“错峰调剂”和“临时租借”的方式快速响应计算能力要求,所以可以降低IT资源成本,并且满足更高的突发性、大规模并发的业务需求。
从设计方式来看,传统的系统设计方式是各个系统独立运行,系统之间采用应用集成和数据交换的方式实现互连互通。分布式架构则强调组件化和服务化,功能模块按照业务可以采用横切、纵切等方式灵活划分组件和服务,数据则大量采用本地化小数据库的方式实现分布式数据访问,通过轻量级服务和高速的消息机制实现应用和数据的整合。
分布式架构需要使用新的IT运维模式。传统的IT运维强调的是在服务水平约定的基础上实现标准化和流程化。而在分布式架构下,IT资源节点更多(数量上会上升1~2个数量级),节点的增加和减少更加实时和动态,要求更加自动化和智能化的监控维护,在应用代码的设计和开发环节就需要统一考虑监控维护。因此,需要研究和应用DevOps(实现开发、运维一体化的一系列过程、方法和工具的统称)模式,在软件开发、数据中心运营和质量保障(QA)工作之间实现更紧密的沟通、协作与整合。这对我们的很多银行而言是非常巨大的挑战。
分布式架构的灾备实现方式是全新的课题。由于应用的分布式计算框架的“先天”能力,以前一直困扰银行界多年的灾备数据中心的“多活”问题不再是一个难点。反而是以前容易解决的远程数据灾备问题更加复杂了,往往需要至少保留3个或以上副本才能保障数据的可靠性,需要在设计中充分考虑。
分布式架构人才队伍的建设也是一个关键。过去二十多年,无论是合作厂商还是银行自有的科技人员大都是传统架构的技术背景。而市场上现有的分布式架构人才主要聚集在互联网公司和金融科技公司,属于热门人才,人力成本比较高。银行需要考虑倾斜性的人力资源政策,创新科技人才薪酬体系,尽快建立自己的核心技术团队。
分布式架构作为当前信息化发展的重要方向,事关国家信息化建设的水平,需要进一步探索适应我国现状的产学研用合作模式,构建完整的生态体系。其中,政府部门通过资金支持、配套制度等,推动研究机构、大学等进行相关的理论和技术研究,并加大与产业界合作,提升成果转化率。产业界则应加大与银行合作力度,尽快研发相应的软硬件产品和工具,促进其在商业银行的实际应用,以应用促发展,为金融机构尤其是中小金融机构提供成熟的整体解决方案。商业银行作为最终用户,需要综合考虑产品质量、供应商准入标准、成本费用等因素,避免“恶性竞争”。
分布式架构的实施策略
选择分布式架构,是国家安全可控战略的要求,也是随着互联网发展,商业银行提升自身金融服务能力的需要,各单位应根据自身现实情况,按照“整体规划,分层分类,逐步推进”的策略,走出一条有自身特色的转型之路。
首先,应充分考虑自身业务特点,高度关注分布式架构系统的风险特点,从信息化战略的高度,明确目标,统一思想,制定IT架构蓝图,明确分布式架构整体规划。
其次,在业务场景的确定和应用系统的选择上,需要区分不同的业务种类和应用层次,采取区别的方式。在业务场景层面,电子渠道和其他内外部协作的互联网应用场景,包括大数据征信、大数据营销、大数据风控等业务场景,可以优先考虑应用分布式架构。从应用架构分层来看,对交易和数据的强实时一致性要求不高的环节,如渠道层,数据分析层,内部管理层,可以应用分布式架构。对于核心账户处理,受限于CAP理论的约束,在目前业务流程对数据强实时一致性的要求下,实现完全的分布式处理存在一定困难,可通过优化业务流程,借鉴BASE理论(基本可用、软状态、最终一致性)逐步实现分布式处理。最后,制定稳妥、有效可行的实施路径。各家商业银行的业务规模、信息化系统现状、人才和技术积累、IT资金投入情况各不相同,不可能制定一刀切、齐步走的实施路径。各家单位需要量力而行,制定切实可行的演进路线。
文章转自公众号金融电子化