证券交易系统架构设计杂谈

个人简介 陈晨,上海证券交易所技术开发部执行经理。2003于清华大学自动化系控制理论与控制工程专业毕业后,一直在上海证券交易所技术部门从事交易系统的研发工作。作为主要成员之一完成了交易所新一代交易系统(目前在用生产系统,2009年11月23日上线)架构和应用的设计、开发和后续维护工作。2012至2013年期间在伦敦大学学院进行了为期一年的金融系统工程的学习。学业完成后,目前在上海证券交易所技术开发部负责衍生品交易平台的设计开发工作。

全球架构师峰会(International Architect Summit,下简称ArchSummit)是由InfoQ中文站主办的一次全球性架构师峰会。ArchSummit专门针对架构师人群,讲述与架构和架构师相关的各方面趋势、技术和案例。这也是继QCon之后,InfoQ中文站主办的又一次高端技术盛会。

   

1. 欢迎大家来到2014全球软件架构师峰会北京站,我是记者程显峰,坐在我对面的是来自上交所的陈晨,原来上交所是很少在这种互联网技术大会里分享,这次走出来有什么样的感受和感想呢?出于什么样的目的走出来跟大家交流的呢?

陈晨:的确。原来可能和互联网方面交流的比较少,这次出来一个是跟大家分享一下我们做了一些什么事情,因为大家可能对交易所在做什么事情不是很了解。另一方面也是抱着开放和学习的心态,看看大家在做什么,我觉得技术还是要以比较开放的心态,大家相互学习,因为有时候可能你想很久的问题,别人早就解决了,大家交流一下,也能够促进技术发展。

   

2. 我看到上交的技术体系很多都是依赖于一些专有的系统,在技术架构演进的过程中,这个专有架构体系有没有遇到一些困难呢?

陈晨:专有的架构体系,它自然有它的优势,因为毕竟这么多年了,有它的积累,但是它也有它不足的地方。一个是开放性不足,所以可能了解它的人不太多,有时候我们寻求外部帮助上会有一定的困难。因为用的人少,在遇到问题时,不像Linux或者Java有社区,你可以寻求相同的用户去看有没有同样的问题,可能大家遇到过这种问题,已经有解决方案了。专有的系统有时候可能你是第一个遇到这个问题的,就要花费比较大的精力去解决。

   

3. 在你的演讲当中,你们要实现一致性算法,实际上Paxos这个算法是非常难以实现的,你们是自己实现的吗?

陈晨:我们没有自己实现。我只是介绍了定序层,因为那个是从比较通用的交易系统的设计方面来考虑的,并不是用Paxos算法,而是基于自己的一些算法,还是比较简单。Paxos算法的确特别复杂,据我所知,只有谷歌实现了,也没有开源。

   

4. 讲到操作系统,我刚才看到你们原来是用OpenVMS,你展望未来的时候,有探讨Linux的可能性吗。

陈晨:这个是我们的一个考虑,也不是说确定的,只是说我们在尝试往这方面去转,就是探讨这个可能性的一个发展方向,因为Linux也是大家目前应用比较广的一个操作系统,大家在使用上也觉得还可以,所以我们做了一些这方面的尝试。

   

5. 要迁操作系统,还要依赖于原来这个操作系统的一些特性,其实风险还是很大的。

陈晨:我们还是要着眼于未来,因为目前这套系统也不可能一直用下去,总有升级换代的一天。那在升级换代的时候是继续用这个操作系统,还是说会换用新的系统。这个系统现在用的人的确是比较少,再过五年,过十年,它还会有多少用户,它本身的支持力度怎么样,这也是我们目前无法预计的一个事情,也是一个风险点。我们需要考虑采用Linux这种方向是不是可行。

   

6. 证券交易系统的软件生命周期是很长的,像您说的已经运行了五年。如果横向比较其他交易所,比如说美国的交易所和伦敦的交易所,它们的软件也会稳定地运行这么长时间吗?它们升级换代有没有什么其他的特色呢?

陈晨:具体的实现,具体多少时间我不太清楚,但是相对也是比较稳定的。因为交易系统基本上都是专用系统,每个交易所它的系统都是单独专门开发的,开发一套系统的成本很高,一旦开发出来,使用的肯定要比较长一点,不可能在很短的时间内就做出下一代系统。

   

7. 国内外的交易所用的技术体系有很大差别的吗?还是上交所是一个交易所的典型,大家可能都是这样的?

陈晨:这个其实是取决于,从大的方面,比如对这种性能,对可用性的追求,基本上大家都有这方面的需求,但是可能着重点会略有不同。国内的交易所可能会更加注重可靠性,因为我前面也说了,比如说可靠性和性能,它们其实有时候是个此消彼涨的关系,国外的交易所可能更加注重性能。

   

8. 因为它交易的量比较大吗?

陈晨:量大是一方面。另一个方面,单从性能来看,其实大家的追求也不一样。比如有吞吐量的指标,有时延的指标。国内可能就更注重吞吐量的指标,因为订单量比较大,但是时延可能相对就会差一点。国外交易所,特别是美国的交易所,它对时延的指标要求就很极致,因为它存在交易所间竞争的关系,同一个产品可以在不同的交易所交易,谁快用户就去谁那交易了,时延指标直接影响交易量,也就影响交易所的收入。大家的大目标可能是一致的,但是具体细化下来的话,可能会略有不同。

   

9. 我看了你那边写了很多非常基础的这些库,比如说像高可用的,还有算法的这些库,未来有可能公布这些技术细节吗?

陈晨:有的,我刚才也说了,我们还是希望走开放的道路,其实我们最近是有一个开源项目的,就是行情FAST相关的一个开源项目,已经在社区发布。不过,现在知道的人还不是很多,希望能够多和大家交流。

   

10. 从您跟大家业界之间的交流来看,您觉得上交所的技术体系里,哪一部分开源出来对大家的帮助会比较多?基础的类库有没有这样的比较有特色的会开放出来呢?

陈晨:目前包括已经开源的这个,还是考虑一些市场上可能会使用到的技术。目前我们开源的就是FAST行情相关的,也就是说所有的券商都会用到这个。最开始会考虑开源跟市场直接相关的一些接口或者是软件内部架构。交易所毕竟不多,也就那么几家,而且有自身保密安全一些问题,可能还是优先考虑开源外部的接口方面的技术。类库我们是有几个,是不是开源,还没有很明确。

   

11. 回头谈到这些类库,涉及开发人员,从交易所的角度来讲,大家都关心什么样的人才,交易的技术人员有什么特质是特别好的?什么样的技术人员你特别想招到?

陈晨:首先要比较能够沉得下心来,因为交易系统相对还是比较复杂的,从刚入行到把整个体系摸透,是需要花相当多的时间的。还需要比较负责任,因为毕竟这个系统的影响会比较大,所以我们希望在做的过程中,要有这种责任心,把各方面的问题都考虑到,而不是说只是为了完成一个任务。

   

12. 有没有什么技术方面的考量?特别注重的。

陈晨:技术就是看做哪块了。我们也用C,用Java,各块用的语言都不一样,但是我觉得技术这方面,只要你有基础可以慢慢去了解。我们后台基本上是C,Java主要是前端软件这块。我们一直以来就是用C写的。现在其实Java也可以做得很快,很多交易系统都有用Java。

   

13. 好像纳斯达克是购买了一个专用的无停顿的Java数集是吧?

陈晨:对,所以你要做特别优化。因为它的优化,特别到后面优化到极致之后,每步的提升都是相当困难的,都是一些很底层优化了。因为到后面可能在应用层面,所有的优化都做完了之后,可能会考虑我底层的一些优化,甚至操作系统层面的一些优化,提升整个系统的性能。

   

14. 您刚才也提到了,因为上交所每天有交易时间,有休市,有休息的时间,这种股票的还好,如果拓展出来的像外汇市场,就更复杂一点,现在的互联网金融,比如说比特币的交易,它就是24×7的,没有休息,从你的经验上去判断,他们可能遇到的风险点都在哪里呢?

陈晨:7×24的确压力更大,升级其实就是个很大的问题,升级的时候是不是要停顿服务。出现问题的时候怎么去解决。设备总归是有常规维护的,我们设备可能都有定期的重启,以保证设备的稳定性,这些方面在7×24下面都是一个很大的压力。因为所有的情况都不能停机,的确比较困难。或者说比如在切换的时候,只能做实时的切换。像我们的系统要升级要上线,你还有时间周期,周末可以去做一把测试,做演练,7×24小时就没有这个条件了。

   

15. 还有什么想跟InfoQ的观众们说的吗?

陈晨:这次来分享,很高兴见到很多互联网方面的朋友,因为交易所跟行业接触的不是很多,还是希望大家以后能加强联系,在技术方面相互交流,能够起到一个相互促进、相互学习这么一个目的。

你可能感兴趣的:(证券交易系统架构设计杂谈)