分布式架构的高性能技术栈
目前,国内商业银行都在加速数字化转型和金融科技转型,其中一项关键的举措就是将原来基于传统集中式技术架构的银行核心系统升级改造为分布式技术架构,并在新的分布式技术平台上构建新一代银行核心系统,目的是为了应对快速发展的业务需求及日趋激烈的竞争环境,为更广泛的客户持续提供高质量的、更加多样的产品和服务。
相对于分布式技术架构,传统的集中式架构在性能、稳定性和可维护性上都有其天然的优势。企业应用架构方面的专家Martin Fowler在他的《企业应用架构模式》一书里提出了著名的分布式对象设计第一定律:“不要将对象设计成分布式的”。分布式系统的复杂度要比集中式系统的复杂度提升一到两个数量级,因此,分布式架构在各方面对底层技术框架提出了更高的要求。
目前一些银行的核心系统分布式架构转型工程已经有了很好的成果,在此我们收集了三家银行的相关信息,试着在性能方面做一些探讨,这三家银行分别是两家国有银行和一家全国性股份制银行。
从以上数据来看,两个国有银行的数据是相当的,而股份制银行在达到类似的每秒交易量(TPS)和交易平均用时(ART)的同时,其应用服务器和数据库服务器的数量要比两个国有银行少一个数量级,这说明其分布式技术架构的性能要比两个国有银行的分布式技术架构高一个数量级。
三家机构分布式核心系统的底层技术都是Java, 都是基于JVM的托管运行环境,那么差别到底在哪里呢?两个国有银行,其Java应用框架都是基于Spring、Dubbo等开源框架, 而该股份制银行,其Java应用框架是基于领驭框架公司从零规划、完全自主研发的CBF Stack应用框架。
CBF Stack是一个分布式架构的应用技术栈,与国内其他基于Spring,、Dubbo等开源软件开发的分布式技术框架相比,CBF Stack是完全重新规划、以极高的标准自主研发的,其性能、资源消耗、可靠性,以及可维护性等指标均远远超过基于Spring等开源框架的各种分布式技术框架,可以广泛应用于开发各种业务系统,也能满足银行核心系统对技术平台的严苛要求。
CBF Stack采用了一些独创的关键技术来大幅提升系统的处理性能,其中之一就是避免采用Java的反射机制。不同于开源软件的普遍做法,CBF Stack的序列化引擎和持久化引擎是基于MAP和接口来描述对象映射关系,运行时不依赖反射机制,处理性能可以超过各种主流开源引擎数倍。对于存在大量序列化、持久化、数据同构传送、数据统一截取/设置之类需要使用对象映射关系的操作的业务应用,上述机制不仅可以在大幅提升系统处理性能,而且可以大幅降低内存资源的消耗。
另外,不同于开源软件的普遍做法,CBF Stack更多地运用内存缓存而非分布式缓存来提升系统处理性能。持久化引擎使用的事务级缓存和静态数据全局缓存都是基于内存的,在常见的高度组件化的交易应用的处理场景中,基于这种有缓存的持久化引擎的应用处理性能可以超过MyBatis应用10倍。CBF Stack的组件对象模型亦支持组件对象缓存,这种缓存的运用可以让系统运行时内存对象结构几乎处于静止不变的状态,系统运行更加平稳高效。
第三,CBF Stack基于中断/重入机制来支持长时间阻塞流程,达到应用系统的高并发处理。例如,跨服务节点的服务调用是基于中断/重入机制实现异步RPC的,因此,前端的服务应用能够应对的流量不会因为后端的服务应用响应缓慢而降低。再例如,批量处理任务的大规模分块并发调度也是基于中断/重入机制运行的,这让批量调度系统能够在单台服务器上轻松推进一百万个并发分支。
CBF Stack应用框架通过高标准的设计为客户提供高性能的底层技术平台,同时,CBF Stack也是易于自主掌控的。相对于Spring等开源框架动辄数百万行甚至上千万行的代码量,CBF Stack的代码只有区区数万行,银行的技术部门很容易学习掌握,对其进行定制增强,并将其整合到全行的技术架构标准之中。
目前国内的自主可控分布式技术平台大致可分为上述两大类,一类是基于Spring、Dubbo等开源软件而定制开发的,一类是像CBF Stack这样完全重新规划、从零出发而开发的,它们代表了两种技术路线。如上述数据所显示的那样,两者的性能差别有可能是数量级级别的,因而,要达到同样的性能指标所需要采购的硬件和系统软件,其成本差别也有可能是数量级级别的。
商业银行用相对廉价的PC服务器替换昂贵的主机系统,其初衷之一就是节约IT成本。但是,如果需要用数量庞大的PC服务器集群才能达到以往主机系统的性能,很可能无法达成节约成本的目标,反而会大幅增加成本。
另外,最近有消息称,美国针对华为的芯片禁令,其范围有可能扩大至14nm及以下制程的所有中国芯片公司,这些公司在购买或使用美国14nm及以下技术的半导体产品时都必须获得美国许可。虽然美国商务部仍在对此项动议进行审议,但是其发出的信号是明白无误的。这些禁令的影响传导到国内商业银行,很有可能就是PC服务器的价格大幅上涨,导致商业银行的IT成本激增。
由此可见,选择一个高性能的分布式技术栈对商业银行来说是至关重要的。
我们认为,银行在对分布式技术平台进行选型的过程中,不能简单地选择某种流行的开源框架,或者基于该开源框架的技术,而是应该综合考虑各种因素,其中特别是成本因素。这就好比当年集中式架构技术平台选型,选择IBM好像是最稳当的,但是银行目前面临的竞争格局是不进则退,需要银行求新求变,稳稳当当已经不太行得通了。