什么是金融中间件

什么是中间件?中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯,是连接两个独立应用程序或独立系统的软件。相连接的系统,即使它们具有不同的接口,但通过中间件相互之间仍能交换信息。执行中间件的一个关键途径是信息传递。通过中间件,应用程序可以工作于多平台或OS环境。中间件是一个软件系统的基础,通用的中间件有Tuxedo,MQ等,在很多行业都有使用。但金融行业发展至今,有许多行业的特殊性要求(具体下文将会有详细说明),皆是通用中间件无法满足的。

笔者将会从金融行业中间件的发展历程说起,详细阐述金融行业的特殊性,并畅想金融中间件未来的发展方向。

金融中间件的昨天 金融行业最开始使用的服务器是windows系统,数据库使用的是Sybase、SQLServer;到后来开始接受Linux系统,Oracle数据库;再到现在考虑私有云环境、MySQL数据库。每一次硬件资源数据库的变革对于中间件平台都是一个挑战。最开始的金融中间件,是Windows下Delphi开发的中间件,所有业务都集中在一个中间件平台开发,没有进行模块细分,性能和扩展性都是瓶颈,这种架构是符合当初每个营业部独立部署的场景。

后来随着集中交易的要求出现,新一代金融基础件开始采用C++开发,基于Linux服务器运行,开始对接Oracle数据库,同时业务开始进行模块细分,这样架构整体性能和扩展性都有了极大提升,可以支撑千万级别的用户。

随着进一步的金融业务发展,超级券商开始出现,用户规模可能要达到3千万或者亿级别,同时对用户体验也开始有所追求,对业务系统要求做到弹性扩展,灰度升级,业务微服务化等等。对应这些需求,中间件平台开始支持分布式扩展、MySQL数据库,业务可以分库分表,达到系统的无限扩展,但是分布式也带来了运维的难度,需要结合运维工具实现快速扩展和部署,结合Docker、云平台进一步降低运维难度。

另外随着对极速交易的追求,业界发现通用中间件无法满足要求,极速中间件由此应运而生。让交易业务可以在4微秒内完成,未来在极速方向还会继续追求更低的延迟,达到纳秒级别。从金融中间件的发展历程来看,金融中间件始终在不断去使用和尝试新技术,不断将对金融行业发展有价值的技术引入中间件平台,从而确保中间件与时俱进,真正做到技术引领行业变革。

金融中间件的今天 Tuxedo作为中间件平台,曾在金融行业得到应用。但是随着金融行业特殊性要求不断出现,我们发现通用中间件已经无法满足这些需求,自研中间件平台势在必行。恒生从2000年开始探索金融中间件国产化之路,2000年最初诞生的是HSComSvr组件服务器,经过几年的发展,到2004年正式推出金融基础件1.0,成为国内领先的金融中间件,经过多年的演化和持续完善,在2008年正式将金融中间件平台化,推出金融基础件2.0。恒生中间件在十几年的发展过程中曾获得多个国家重大软件专项的支持。

下面笔者将结合具体业务场景,谈谈恒生中间件如何满足金融行业的特殊性要求。

>>网络拓扑复杂难题

每个证券公司,都有自己的营业部,分布在全国各地,大的证券公司一般都有上百家的营业部,每个营业部都有自己的柜员,负责股民的日常业务处理。针对证券公司的集中业务运营系统,每个柜员都会使用桌面终端来完成业务办理,接着所有请求从各地营业部统一汇总到证券总部的系统,进行统一汇总处理,整个系统的软件物理部署模式如下图所示:

从上图来看,每个营业部都有自己的转发应用程序与总部的总线路由程序对接,这样就把营业部所有请求转到总部处理,然后营业部的所有柜台桌面程序对接自己本地的转发应用程序。为什么营业部柜员程序不可以直接对接总部总线路由程序?这是因为营业部需要使用柜面程序的营业员不确定,有多有少,按照200家营业部,一家10个营业员,也就2000个连接,当业务流量大的时候(譬如:文件更新,档案上传),总部的带宽会扛不住,如果通过营业部转发代理,就可以从2000变成200,同时耗费流量的操作可以先在本地转发服务上缓存,等待交易收市之后再跟总部更新。

对于经纪业务运营系统这种场景,中间件需要支持这种网络拓扑下的请求流转,一个大型券商,考虑每个营业部会开启两个请求转发程序进行备份,所以整个系统的中间件节点基本会到千级别的数量。恒生中间件就针对这种网络情况和系统需求,完成了整个网络拓扑的计算,做到了点对点之间的通信,这样业务系统层面开发的时候就不需要关心网络的拓扑细节,降低业务开发难度,同时提升了业务系统各种部署的灵活性。

>>处理性能的高要求

金融行业对速度的追求一直是无止尽的,证券交易的便捷性和速度都在不断的提升。先到先得的交易规则,对交易(尤其是策略交易)的速度提出了更高的要求,从秒级交易进化到微秒级交易,现在已经做到了纳秒级别的交易;除了交易之外,清算也是对性能要求极高的,在2015年行情大好的时候,大型券商每天的交易额都在创新高,但是每晚清算也是苦不堪言,清算一下都要4到8小时,几乎需要天天通宵。对于交易系统要求降低单笔的延迟时间,但是对于清算系统要求提升并发处理的能力,底层中间件平台需要同时支持这两种场景。

恒生中间件为了达到性能的极限,首先研发了内存对象数据库;然后通过C++高性能编程的技术,实现代码最优化的编写;最后为了提升最终性能,就需要设计修改系统相关参数,兼容低延迟的网卡,网络通信的时间可以降低到2微秒,其次就是对操作系统进行调优,不相关的服务都关闭,让系统保持最优的状态。

基于以上的改进,目前恒生中间件已经完成期货业务原型,速度达到4微秒,除了交易的优化,在清算方面,恒生中间件提供的内存数据库技术和调度处理框架,也大大提升清算的速度。

>>接入安全要求

自从证券公司对外部接入系统进行严格管理以后,证券公司的系统对客户端接入的安全需求越来越多,主要包含以下几点:

1、客户端接入需要许可认证。
2、客户端所有的请求都需要带上本机IP、MAC、硬盘序列号等机器特征码。
3、客户端通信进行SSL加密,部分加密算法禁止使用,譬如:MD5,推荐国密算法。
4、客户端登录密码不可以明文传输,需要加密。
5、针对不同客户端,后台可以开放需要的接口,没有开放的接口就无法访问。
6、客户端服务端通信的报文进行签名验证,报文完整性校验,确保报文没有被篡改。

所有的接入安全,都是针对中间件的需求,中间件自有API和服务端通信的时候就需要支持上述的所有安全特性。恒生中间件对于证券接入相关的需求,都进行了完善,另外在中间件接入安全基础之上,恒生还研发了针对接入专用的统一接入网关产品,更多从业务层面进行了控制,做到更高级别的安全。

>>金融业务复杂问题

金融行业经常会有各种新的业务发布,譬如:沪港通,深港通,适当性管理等,还有各家金融机构,针对系统都有很多个性需求,作为一个中间件平台就需要快速响应需求的变化,快速实现,快速交付。恒生中间件除了网络通信和性能追求之外,还有一个重要的点就是业务开发平台,让业务开发变简单。

恒生中间件作为业务的二次开发平台,封装了各类接口、模型、业务上下文、组件等等,让业务开发无须关心技术细节。因为整个中间件采用插件化的设计,让所有的技术模块在注入的时候都很简便,不会因为功能的堆积,让整个中间件笨重不堪,从而降低系统的性能。

金融中间件的明天 经过多年的中间件研发,性能和易用性到目前为止依然还是中间件永恒不变的主题。性能主要还是两大部分,一部分是极速的性能,目前已经做到4微秒,接下来还会继续探索更快的做法,不排除硬件嵌入的编码,把速度发挥到极限,这种模式下只是针对极个性的场景,这种开发和部署对个人水平要求较高;另一部分就是并发量,随着更多人对金融的关注,投资理财的用户越来越多,系统吞吐量也会越来越高,随着硬件性能的进一步提升,如果充分利用硬件资源,是中间件后续持续关注的点,通过提升单机性能进一步降低部署的复杂性。易用性也分为两大部分,一部分是运维的易用性,这部分就是要求中间件内部状态尽可能透明化,中间件需要及时暴露自己内部的状态,在业务问题出现之前,可以提前预警,快速处理问题;另一个部分就是开发的易用,基于中间件的开发越简单越好,入门学习成本越低越好,目前通过自有开发工具提供,大大降低了业务开发时间,后续希望实现图形化拖拽,拼装出新业务,让业务人员自己开发,真正做到懂业务就可以开发业务。

未来随着金融业务的进一步丰富和金融参与者的进一步增加,业界对中间件的要求也会越来越高,中间件在金融行业地位会更重要,同时结合目前云计算,大数据,人工智能的技术发展,中间件也需要更多的技术引入,从而提升业务的效率,做到让金融变简单!

By 许欣芃