开源技术在金融行业的应用探究

论坛 期权论坛 期权     
期权匿名问答   2022-11-25 09:22   5855   0


中邮理财有限责任公司金融科技部资深专家  徐福昌

伴随着互联网、分布式、云计算、大数据、人工智能、区块链等前沿技术的陆续诞生和发展,以Apache基金会为代表的各个组织和社区逐步开源了众多支持各种新技术的开源软件。这些开源社区使全球信息技术领域发生了全局性、持续性的重大变化,在社会基础设施建设方面也发挥着越来越重要的作用。开源软件具有开放性、共享性、专业性、高质量、高安全等特点,因而越来越多的企业转向使用开源软件进行系统开发,支撑自身业务发展。在国内,众多互联网公司一方面通过IDEA建立商业模式,另一方面使用开源软件快速开发出适配自身商业模式的信息系统,在短时间内实现了百花齐放。对金融行业来说,虽技术敏感度相对较低,但近年来逐渐意识到开源技术在业务创新和支持差异化竞争方面的价值,积极探索利用开源软件的自主创新之路。

一、什么是开源
开源,即开放源代码。开源的用户群体主要有两个:程序员和终端用户,程序员关心源代码能不能进行二次开发利用;终端用户关心软件的功能够不够强大。

二、开源软件的基本特点
1.开放性
很多人认为开源软件最明显的特点是免费,但实际上,其最大的特点是开放。开放性带来了高透明度,任何人都可以得到开源软件的源代码,并在此基础上进行修改学习,甚至在版权限制范围内重新发放。

每一个开源软件或组件都是对某个或某些领域的研究成果的实现,使用开源软件可以在仅知道表层原理,不理解其深层原理的情况下,通过其暴露的轻量级API及简单的部署方式等,使用其所提供的能力。以zookeeper为例,它是分布式协调服务,可以做配置中心、注册中心,用户只需根据网上提供的部署方式,进行简单的配置,再通过zookeeper客户端开源组件,对zookeeper调用,就可以实现zookeeper带来的便利。当然,如果希望使用好zookeeper,还需要深入理解zookeeper的原理:要了解它的选举机制,它是基于CP的还是AP的,它包含哪几种节点(持久、持久顺序、临时、临时顺序、容器、持久 TTL、持久顺序 TTL)、它包含哪几种角色(leader、fellower、observer),这些节点和角色的作用、它的watcher机制等;再深入一些,还需要理解其Paxos算法、Quorum算法、改进后的Zab协议等。我们可以在使用的过程中逐步深入,从一般的使用zookeeper,到能够将它应用于各种复杂的业务场景并解决其可能产生的各种问题。而由于它的开放性,我们通过代码就可以逐步深入的了解其原理和机制。

2.共享性
开放性和共享性,本质是相通的,开放带来了共享。所有人都可以免费使用开源软件,并享受其带来的便利。在使用开源软件的过程中,由于场景不同,会发现各种问题及软件缺陷。这样,一方面可以通过社区提问和解答,获得较商业软件更多、更好的解决方案;另一方面,每一个用户都可以成为缺陷贡献者,通过提交自己的代码对开源软件进行缺陷修复和能力增强,促进开源软件的快速迭代,提高开源软件的可靠性。因此开源软件在经过一定的迭代之后,往往比商业软件的缺陷更少。

3.专业性
每一个开源软件或者组件都是对某个或某些领域的研究成果的实现,具有很强的专业性。如在hadoop出现之前,高性能计算领域的从业者需要开发底层基础软件,才能实现集中多台服务器闲置算力进行并行计算的任务;而hadoop出现后,只需要部署一套hadoop集群,通过编写mapreduce代码即可实现。

4.高质量
因具有开放性和共享性,开源软件拥有了众多使用者,这些使用者也是开源软件的测试者、问题修复者和业务场景创造者。大量的使用、更加有效的开发模式、更多的独立同行对代码和设计的双重审查、更多的发现和修复缺陷、大部分作者对自己作品的极大荣誉感……保证了开源软件的高质量。

5.高安全
尽管在一些人看来,开源软件存在不可避免的安全问题。但实际上,开源软件的绝对安全性明显要高于商业软件和自主开发的应用系统。在开放和共享环境下,开源软件的使用者、白帽子、黑帽子会在有意或者无意之间,对开源软件进行安全测试。大量测试在发现更多的安全问题的同时,也促进了开源软件对安全漏洞的快速修复,从而使得开源软件的安全性更高。

而开源软件安全问题显得更多,只是因为商业软件和自主开发的应用系统使用的人和场景相对少,对其进行安全测试的白帽子、黑帽子也比较少,更难以发现而已。

三、开源软件在金融行业应用示例
当前在金融行业,开源软件的大量使用已成为不可逆转的趋势。尽管很多金融企业坚持使用商业软件,但实际上,目前的商业软件大多也是使用开源软件作为底层的基础组件,通过科技公司自身强大的集成能力,在基础组件的基础上开发出一键部署和启停脚本,各基础组件的全链路监控及可视化操作界面等功能,提高开源组件的易用性。

笔者在实际的工作中,大量使用了各种开源软件。本文以某个项目为例,探讨开源软件在金融行业的应用模式。

该项目需要实现内部多个应用系统之间的文件交换。传统方式是使用sftp,需要搭建sftp服务,每个应用系统都有自己的sftp服务,文件的交换过程变成了点对点模式,由于sftp的单点特性,在sftp服务不可用、服务器宕机时,会出现文件丢失、文件传输失败等情况,且文件交换双方除了传输文件外,还需要开发交易去通知对方取文件,以及取完文件要给发送方响应等。

基于上述分析,在项目实现过程中,采用了消息机制,实现通知和文件处理的解耦,发送方传输文件之后,通过消息模式通知接收方,再处理其他任务;接收方接到消息后,处理完文件操作,再给发送方一个处理成功的确认结果。此外,针对sftp单点及点对点的特性,建立一个共享的分布式存储/网盘,将所有文件集中管理。实践中,采用RabbitMQ消息队列作为文件交换时的通知发起、文件处理结果响应的中间件;采用FastDFS替代sftp,将原来的请求/响应模式的sftp文件交换模式,转换成了消息/响应模式的FastDFS文件交换模式,并通过springboot开发框架对发送方和接收方进行了API的封装和通知的路由(不同的文件要交给不同交易处理),大大提高了开发效率和文件管理效率,实现了文件存储的可靠性和可用性。文件传输架构如图1所示。

图1 文件传输架构

在前面示例中,笔者通过才用RabbitMQ、FastDFS开源中间件,springboot开源框架完成了两个系统、甚至多个系统的文件交换过程,通过FastDFS对文件进行统一的传输、存储和管理,通过RabbitMQ来实现消息的传递,通过springboot 对发送方和接收方进行了大量的封装。如果没有这些开源技术,就只能使用sftp/ftp、或者上商业软件来进行文件的传输、存储和管理,只能使用如WebsphereMQ这种重量级的商业软件来进行消息传递。对发送方和接收方的封装也只能使用底层的Java代码来开发,无法用到springboot所带来的便利。

四、总结
上述示例中,笔者使用开源组件完成了以往需要商业软件等才能完成的文件交换场景。笔者在使用这些开源技术时,一方面由于开源软件的专业性,使得每种开源软件往往专注于某些问题,在解决一些专业问题的同时也带来了新的问题,需要我们理解开源软件的基本原理,从功能上、性能上评估其是否满足业务需求,并根据业务场景通过不同的开源软件组合来完成应用架构设计。另一方面,也需要认识到, 由于开源软件的开放性,导致尽管其具有很高的安全性,仍然比一般的商业软件和自主开发应用更容易成为安全攻击的目标,需要我们提高自身的安全风险意识,在安全可控的范围内使用开源软件。

2021年发布的《企业开源现状调查报告》显示,全球98%的金融机构正在使用由开源技术衍生的产品。目前,开源技术已经以多种形式渗透到金融行业,包括操作系统、中间件、数据库、存储、网络、分布式、云计算、人工智能、区块链、大数据、低代码、工具等技术领域。

在此背景下,金融企业在使用开源软件时,应注意以下问题:一是坚持“安全可控、合规使用、问题导向、开放创新”四大原则,把保障信息系统安全作为使用开源技术的底线;二是建立健全开源技术应用管理制度体系,规范开源技术的引入审批、技术评估、合规使用、漏洞检测、更新维护、应急处置、停用退出等行为;三是加强开源技术人才培养,加快提升技术创新能力,切实掌握开源技术核心代码,推进开源技术迭代升级,促进开源技术成果转化。
更多前沿趋势观点,请登录数字金融创新知识服务平台-金科创新社官网查看。
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:400157
帖子:80032
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP