BanTech智库

中国工商银行软件开发中心上线金融业首例国产编程语言业务系统

2024-06-25

来源:BanTech智库

作者:中国工商银行软件开发中心北京服务支持部

 

金融科技产业的基础服务设施保障是衡量国家金融安全的核心因素。工信部印发的《“十四五”软件和信息技术服务业发展规划》中将提升产业基础保障水平作为主要任务之一,程序设计语言是其中的一项重点课题。中国工商银行软件开发中心(以下简称“工行软件开发中心”)积极探索基于仓颉国产应用编程语言(以下简称“仓颉语言”)实现业务研发与商业化落地的可行性。工行软件开发中心于2024年3月完成仓颉语言版短信业务系统正式投产及对客服务,实现国产编程语言在金融行业的首家商业落地,完成从芯片、操作系统、中间件、数据库到编程语言的全栈架构转型业务系统建设。 

 

一、金融领域现状分析

编程语言的安全性、稳定性,以及执行性能方面的特性是金融IT领域选择编程语言的核心考量因素。

首先,金融行业处理大量的敏感数据和资金交易,也受到严格的监管和法规约束,需要防止代码注入、SQL注入、跨站点脚本攻击等常见的安全漏洞,因此对编程语言的安全性要求非常高。

其次,现阶段金融领域中后台应用服务中开发语言以Java为主,同时银行金融系统需要保持长时间的稳定运行,须避免“断链”风险,因此需要逐步实现技术栈转型,保证稳定性和可靠性。

最后,银行金融系统通常需要处理大量的交易和数据,高性能的编程语言能够提高系统的处理速度和响应性,从而提升用户体验并降低系统的负载,提升运行性能,降低时延、资源的占用也是对编程语言的核心诉求之一。 

 

二、仓颉语言研发应用

目前,工行软件开发中心已经建设出包括芯片、操作系统、中间件、数据库等软硬件的转型架构体系,编程语言的转型已纳入工行系统全栈架构转型目标研究范围。

仓颉编程语言作为一款面向全场景应用开发的现代编程语言,通过现代语言特性的集成、全方位的编译优化和运行时实现,以及开箱即用的IDE工具链支持,为开发者打造友好开发体验和卓越程序性能,具备安全可靠、轻松并发、卓越性能、高效编程等优势特性,经评估仓颉语言已经基本具备支撑实现业务系统研发的编程语言能力。工行软件开发中心选取短信业务系统实现仓颉语言的商业化落地,该系统作为直接对客服务渠道之一,承载客户查询业务、办理业务及授权确认等类型服务。仓颉语言版短信系统分别选取部分查询类及办理类业务功能完成重构,基于仓颉语言、仓颉版微服务开发框架、仓颉版三方库与中间件(数据库驱动、Web容器、日志构件、定时任务调度构件等)完成系统的设计研发,并打包应用镜像,部署在行内PaaS云容器平台。

 

1.业务系统设计实现

仓颉语言版短信业务系统按照功能划分为以下四个模块:引流模块、业务预处理模块、业务处理模块以及数据处理模块,如图1所示。引流模块通过识别用户身份和场景来控制系统流量,实现了基于流量动态调整及交易异常自动引流至原系统的高可用机制;业务预处理模块对场景进行前置处理,实现服务的精准分发;业务处理模块运行核心交易逻辑,同时负责用户层交互;数据处理层提供基础数据层交互服务,仓颉语言版数据库引擎保障了数据的准确性与完整性。

 

图1 仓颉语言版短信业务系统功能模块

 

金融业对软件系统的高可用和稳定性有着极高要求,仓颉语言版短信业务系统设计了以下方案保障高可用性:

(1)微服务架构。仓颉语言版短信业务系统拆分为多个微服务模块,通过集群化的多点部署有效降低了服务的单点故障风险。单个服务模块故障或性能下降时,仍能保障业务的正常运行。同时,微服务架构降低了因仓颉语言中间件及三方库迭代升级带来的升级适配的研发运维成本。

(2)高可用的服务间通信模式。微服务模块在负载均衡模式下进行HTTP协议通信,基于仓颉语言标准库网络通信包实现了超时重试、幂等、连接池管理等高可用通信机制,保障服务间通信的准确性和实时性。

(3)数据缓存机制。热点数据实现基于仓颉语言标准库并发集合包的缓存处理,有效应对大并发量请求场景,减少业务过程负载,提高吞吐量,保证系统的可用性。同时,使用仓颉语言锁机制实现高并发场景下数据并发写入控制,保障了多线程写入下的线程安全。

 

2.业务系统与工行软件生态系统融合

工行软件开发中心在仓颉语言落地实践中,不局限于业务系统对客功能的实现,还积极探索仓颉语言与工行软件生态打通融合的可行方案。此外,对客服务系统故障的自动监控、运维安全合规及故障问题排查方案等能力建设也在迭代优化提升。工行软件开发中心提出并实现了多种仓颉语言与工行软件生态系统基础支撑平台的融合对接方案,为仓颉语言扩大应用范围可行性及转型成本评估提供参考依据。具体包括:中间件服务对接模式与跨语言服务对接模式。

 

图2 仓颉语言与工行软件生态打通融合方案探索

 

中间件服务对接模式:工行软件开发中心搭建了分布式日志中心、分布式配置中心、监控系统等基础服务平台,业务系统通过客户端中间件与基础平台进行交互通信。为实现仓颉语言服务与行内基础平台对接,工行软件开发中心设计了中间件服务对接模式,通过通信协议重构的方式,实现仓颉语言系统和现有系统的无缝集成和数据交换,该模式不仅简化了不同系统间的通信流程,还提升了系统整体的可扩展性和响应速度。

跨语言服务对接模式:工行软件开发中心已形成Java语言为主,Python、C语言等为技术补充的多语言生态体系,仓颉语言系统需要实现跨语言的服务调用。为了满足金融软件数据安全性要求,设计并实现了加密服务对接模块,基于仓颉语言跨语言互操作特性,对接加密服务平台C语言动态库,实现了仓颉语言业务系统调用C语言加密服务的场景,保障了跨平台、跨系统的安全数据交换和通信保密性。

 

3.仓颉版短信业务系统集成交付部署

项目研发的快速迭代离不开快捷、高效的CI(持续集成)与CD(持续部署)系统作为支撑,而高度自动化的集成部署系统也是生产运维及故障快速应急的有力抓手。工行软件开发中心在持续集成部署领域,提供了一种多语言生态下的高度定制化开发和部署方案,实现了高性能的基础镜像以及高度自动化的集成流水线。工行软件开发中心基于转型架构体系(芯片、操作系统等)构建出仓颉语言版基础镜像,结合编排部署、PaaS云等平台化技术实现了镜像资源的灵活调度、自动伸缩等能力。同时,将仓颉语言接入现有持续交付部署系统,提供了从应用镜像制作,到编译打包,再到部署管理的全流程自动化流水线,确保了仓颉语言版系统在快速迭代模式下的敏捷发布与部署。 

 

三、仓颉语言生态共建

工行软件开发中心除推进仓颉语言在金融业商业化落地外,还积极参与仓颉语言生态共建。首先,通过对仓颉语言社区开源第三方库的问题修复和优化,提升了开源构件的稳定性和性能。工行软件开发中心已对仓颉社区现有开源构件完成多个优化需求的自主研发及验证,后续将持续推进构件的完善,确保其在复杂应用场景下的可靠性和灵活性。此外,工行软件开发中心致力于构建完善的生态体系,包括开发工具链、库和框架的丰富化,通过引入高效的开发模式和开发范式,创新研发了仓颉语言版lombok、雪花算法、分布式批量等开源构件。 

 

四、后续展望

后续,工行软件开发中心将继续深入推进架构转型工作,持续关注架构转型相关技术栈的发展动态,积极拥抱技术发展带来的挑战,在实践的基础上为金融IT领域全栈架构转型输出更多实施案例。此外,工行软件开发中心将加强与国内领先科技企业的合作,共同推动以仓颉语言为代表的国产技术创新,探索更多适合架构转型和市场需求的先进解决方案,为实现金融IT业全栈架构转型目标添砖加瓦。

-END-

前期精彩原创推荐(点击图片进入阅读):

这是科技创新最好的时代,这是属于我们每个人最好的时代,关注“BanTech智库”,专注银行科技发展,探索无界金融生态!

 

 

收藏

BanTech智库

 

专注银行科技发展 探索无界金融生态