作者:王步宙、陈晨
2008年似乎是个有魔力的一年,在这一年里大西洋两岸的德国和纽约两大证券交易所集团几乎不约而同的启动了交易系统开源化项目。对于开源项目的动因,有人提出成本论,有人提出是低延迟论,我们认为可能兼而有之。
我们作为一家以建设一流交易所为目的的企业,面对全球交易所的这种开源化技术潮流,首先将仔细研究、储备相关的技术,再做判断。既不会固步自封无视技术潮流,也不会盲目的跟风。
操作系统和集群技术是企业IT系统的建设基础,也是目前业界开源化技术潮流中,软件最成熟、用户群较为广泛的技术。选择此类技术作为此次研究方向既符合开源化潮流在各交易所的实践,也能为我们未来的技术规划提供参考。
1 开源软件在全球交易所的应用综述
纽约证券交易所
2008年5月纽约证券交易所宣布使用开源软件Red Hat Linux构建下一代交易系统(Universal Trading Platform,简称UTP),同年600台x86服务器(CPU处理器共4800核)购买了Red Hat Linux服务。随着2008年底UTP交易系统的第一阶段上线成功,纽约证券交易所将盘后处理、企业系统都逐步迁移到Red Hat Linux上。在积累了一定的开源技术经验后,尝试使用又一个开源软件JBoss中间件,用于交易大厅数据系统、实时监察系统(Stockwatch)、外部网站。其中构建于Red Hat Linux和JBoss两个开源软件之上的实时监察系统每秒能接收10万条以上的消息。
德国证券交易所集团
2008年德国证券交易所集团启动了新交易系统(Global Trading System,简称GTS)的开发,使用开源软件Red Hat Linux作为操作系统平台,08和09两年共投入3220万欧元,原计划2010年第4季度首先在美国国际证券交易所ISE(期权交易)上线,但由于ISE会员的反馈上线将延期到2011年4月。部分模块基于Red Hat Linux和Red Hat MRG Messaging这两个开源软件的交易实时风险管理系统,已于2010年初上线,将风控信息的传输从每10分钟一次,提高到可选择每秒一次传输。
芝加哥商品交易所
2004年芝加哥商品交易所已经在商品期货交易系统Globex中开始引入Red Hat Linux 2.1,后来逐步在交易系统、交易大厅数据系统中更多的使用Red Hat Linux和JBoss两种开源软件。截至2009年底,芝加哥商品交易所共有4000台x86服务器使用并购买了Red Hat Linux服务。
东京证券交易所
东京证券交易所的新一代现货和期货系统都基于开源软件Red Hat Linux开发,其中已于2010年1月上线的“Arrowhead”交易系统,每秒订单处理能力提升了10倍,行情发布延迟缩减到3毫秒。
伦敦证券交易所
伦敦交易所基于开源软件SUSE Linux和Real Time Extension的新一代交易系统Turquoise原计划于2010年11月上线,但由于几次尝试失败,上线暂延期到2011年早些时候。Turquoise系统使用了300台x86服务器和万兆以太网络技术。
Chi-X
Chi-x作为一家交易系统基础设施供应商,支持多家大型另类交易系统。目前交易系统运行在经过裁剪的开源软件CentOS上,支持万兆以太网和Infiniband网络,延迟低于120微秒。
其它
拉合尔证券交易所2010年完成了原交易系统向开源软件Red Hat Linux平台的迁移,并上线成功。
境外主要交易所的开源项目小结
多数交易所的开源项目是基于开源操作系统Red Hat Linux、SUSE Linux等各种Linux分支进行的,部分技术实力强的交易所引入JBoss、MRG Messaging等开源中间件软件。
交易所 |
应用系统 |
软件平台 |
硬件平台 |
|
纽约证券交易所 |
交易大厅数据系统; 实时监察系统 Stockwatch; 交易所外部网站 |
Red Hat JBoss Enterprise Portal Red Hat JBoss Enterprise Application Red Hat Enterprise Linux |
x86服务器和刀片 |
|
新一代交易平台(现货、期货)Universal Trading Platform; 盘后处理;企业系统 |
Red Hat SELinux Red Hat Enterprise Linux Red Hat Network |
200xHP DL585(8C) 400xHP BL685c(8C) |
2008年底完成1阶段 |
|
德国证券交易所集团 |
交易实时风险管理系统 |
Red Hat Enterprise MRG Messaging with AMQP Red Hat Enterprise Linux |
MRG Messaging for OpenVMS (for DBAG) |
2010年初上线 |
新一代交易平台(现货、期货)Global Trading System |
Red Hat Enterprise Linux |
2011年4月上线 |
||
芝加哥商品交易所 |
商品期货交易系统Globex; 交易大厅数据系统 |
Red Hat Technical Account Manager Red Hat JBoss Enterprise Application Red Hat Enterprise Linux |
4000 x86 Servers |
已上线 |
东京证券交易所 |
新一代交易系统(现货)Arrowhead |
Red Hat Enterprise Linux |
Fujitsu PRIMEQUEST & PRIMERGY |
已上线 |
交易系统(期货) |
Red Hat Enterprise Linux |
已上线 |
||
伦敦证券交易所 |
新一代交易系统 Turquoise |
SUSE Real Time Extension SUSE Linux Enterprise Server |
300 IBM xServers 10Gb/s network |
2011年初 |
Chi-X交易系统技术公司 |
多家大型另类交易系统 |
CentOS |
10Gb/s network Infiniband |
已上线 |
拉合尔证券交易所 |
交易系统 |
Red Hat Enterprise Linux Advanced |
IBM xServer Red Hat合作伙伴 |
已上线 |
注:以上消息来源为互联网和厂商宣传资料,仅供参考
2 操作系统的开源技术
传统的闭源操作系统由统一的架构团队规划和设计实现操作系统各个组件;但开源操作系统则不同,它不存在一个统一的架构团队,而是由每个社区各自独立的完成操作系统组件的开发,由使用者来完成开源操作系统的各个组件挑选和组合构建,挑选过程中一个操作系统组件常常会有适应于不同场合的多种实现,可能是不同社区的实现,也可能是同一个社区不同版本的实现。因此这就对开源操作系统的使用者提出了很高的技术要求,而且安装配置复杂。这些制约了早期开源操作系统的推广和发展,为了解决这种曲高和寡的局面,一些商业公司根据自己使用和测试的经验,定期推出不同版本的开源操作系统组件组合,并简化安装配置流程,方便用户的使用,也促进了开源操作系统的推广,目前比较流行的企业级开源操作系统有Novell公司的SUSE Linux、Red Hat公司的Red Hat Linux和近几年新起的Oracle公司Oracle Linux等。使用这些公司发布的操作系统版本,虽然方便部署和运行,但按照默认选项运行并不能很好的适应所有的应用场景,因此对于性能依赖形的应用,仍然需要针对应用特性进行操作系统组件的配置或者调整。开源操作系统Linux也可以提供与商业UNIX产品类似的安全性和易管理性,但同样也需要特别的配置。
目前我们在企业内部使用开源操作系统时,还停留在一切默认安装的状态,没有针对应用的优化配置、也缺乏统一系统管理。因此,有必要对以下3个方面进行研究,并建立原型试用便于日后的推广。
(1) 主要系统组件的优化配置
l 文件系统:开源操作系统Linux支持多种文件系统,常见的有Ext3/Ext4、JFS、VxFS等;这些文件系统的功能特性、技术成熟度、社区活跃度、技术优劣等都是值得考虑的,可以作为基于Linux应用选择文件系统的技术参考。建议研究过程中构建基于我所典型应用的IO模型,对各文件系统的IO性能进行测试,从吞吐量、低延迟、可靠性三个方面评估。
l 进程调度:当应用以多进程方式运行,特别是当系统运行在一定负载压力下时,进程调度就显得非常重要,直接影响应用的执行性能。Linux操作系统从支持FIFO、RR、NORMAL的调度策略,到最近SD、RSDL、CFS的调度器,显然没有一种调度算法可以满足所有应用的需求,因此建议从吞吐量、低延迟两个方面进行研究,比较这些调度器的优劣,同时可关注Apache Qpid项目对低延迟应用的支持,研究其在消息转发应用中SUSE Real Time Extension和Red Hat MRG商业发行版本中的实际低延迟效果。
l 多线程:开源操作系统Linux在2.6内核以前对线程的支持很有限,但随着NPTL线程库在2.6内核上的实现,多线程在Linux上的应用也开始广泛。建议研究在Linux上多线程相关的线程通信和同步方式、调度粒度,权衡在Linux上实现多线程还是多进程应用在性能和健壮性上的差异。
(2) 安全加固
数据安全一直是商业应用关注的重点,操作系统作为应用软件的基础,配置过程中也需充分考虑到数据的保护。建议从超级用户的权限限制、记录系统的运行日志、FTP/NFS/远程登录/X-Window等工具的安全防护等提供数据安全,并结合SELinux组件建立一个安全操作系统的原型。
(3) 统一的系统管理
当在企业中广泛的使用开源操作系统Linux后,要部署管理的服务器可能有上千台、其中可能还涉及集群,如何部署安装软件、更新补丁、实时监控系统运行状况、定期备份是一个艰巨的任务,建议研究如何利用开源的软件产品或者廉价的商业软件完成统一管理的工作,例如:Red Hat提供的Network或者Novell提供的ZENworks商业组件方式。
操作系统故障诊断是系统管理员的一项重要工作,如何利用现有的工具诊断Linux操作系统的挂起和崩溃,是具有现实意义的。
3 集群的开源技术
常见的集群配置模式有两种:高可用性集群和负载均衡集群。基于开源操作系统Linux的常见集群产品,既有Novell Cluster Services、Red Hat Cluster Suite等开源软件,也有Veritas Cluster Server、HP Service Guard、IBM Tivoli System Automation等商业化软件。涉及的集群组件大致可分为三类:集群成员管理、集群文件系统管理、集群资源管理,常见的技术有Heartbeat、Corosync、OCFS2、GFS2、DRBD、Pacemaker等。建议结合现有成熟的开源集群软件和商业化集群软件的方案,根据技术成熟度和未来发展,研究并提出一套稳定的集群组件组合原型。对于其中关键技术之一的分布式锁组件DLM测试其性能,并解决基于GPL协议不能被闭源软件引用的问题。
除了集群技术,近年来兴起的虚拟化技术也是一个很好的研究方向,对于开源操作系统Linux上的Xen和KVM两种技术,进行历史回顾、比较当前实现的优劣以及未来的发展。并选择一种比较成熟的技术,提出统一部署、迁移、管理和监控的解决方案原型。
4 应用迁移
下面讨论的应用,可以分为两类:完全基于中间件开发的应用,例如:JAVA应用、Perl语言应用;完全基于操作系统链接库开发的应用,例如:C语言应用。
(1) 非Linux操作系统的应用迁移到Linux下
对于基于中间件开发的应用程序,由于中间件的函数调用屏蔽了操作系统的差异性,使得迁移工作会进展的比较顺利。
对于基于操作系统链接库开发的应用程序,由于不同UNIX、LINUX变体之间存在的差异会使应用迁移工作变得困难。迁移的主要工作是发现两个系统之间的引用库差异和头文件差异,虽然符合POSIX的函数调用能在所有支持相同标准的操作系统上不加修改的使用,但是函数定义的位置也可能会不一样,而且应用程序中还可能会有对特有操作系统的函数调用。由于企业使用的主要平台是HP-UX、WINDOWS、OPENVMS,建议研究一种方法论,帮助找到应用程序中和LINUX不兼容的代码,整理库函数和头文件的对应关系,以及如何构建LINUX平台上的新应用程序。
(2) Linux操作系统之间的应用迁移
虽然各Linux的发布都是基于相同的内核,但是由于选择的内核版本不同,以及各厂商在后期更新的补丁不同,使应用在不同的Linux发布版本之间很难做到无缝迁移。建议研究在何种约束条件下,可以做到应用在不同Linux发布版本之间的无缝迁移。
(3) 相同Linux操作系统的应用在不同硬件之间的迁移
选择Linux操作系统的最大优势在于对硬件有自由的选择权,但是如果由于硬件驱动而影响应用的无缝迁移,那么Linux将不再具备这种自由性。建议研究在何种约束条件下,能实现相同Linux上的应用能在不同硬件之间的无缝迁移。
5 研究展望
开源软件的研究,首先针对不同的应用特性(吞吐量、低延迟、或者高可靠性)挑选相匹配的一套成熟操作系统组件、集群组件和虚拟化技术,并考虑数据安全和统一管理,建立测试原型;其次对于非Linux操作系统的应用迁移到Linux下,提出一种方法论;对于Linux操作系统之间的应用迁移和相同Linux操作系统的应用在不同硬件之间的迁移,找出其可能实现无缝迁移的约束条件。