共1条
1/1 1 跳转至页
行业观察:看现在金融软件系统的虚假繁荣
----有个证券公司的技术负责人问了这样一个问题:为什么美国人能够做集中式交易系统而我们却不行?这真是一个值得思考的问题。在中国不但可以买到美国制造的最先进的计算机硬件,也可以买到美国工程师使用的各种系统软件和开发工具,但是,为什么我们的实际应用水平却相去甚远呢?
----经过多年的演变和实践,美国证券公司的实时交易系统已经十分成熟,不同的证券公司系统之间的技术架构基本相似,在软件和硬件技术上也没有任何秘密和壁垒可言。我们的近邻韩国的证券公司在1997年开始开发基于互联网的新一代集中式交易系统,经过5年踏实认真地学习和实践国际潮流技术,不但在集中式交易系统建设上获得了成功,而且在技术上也取得了长足的进步,积累了丰富的经验。
----中国的证券公司致力于建设集中式交易系统由来已久。深圳一家对IT系统投入很大的证券公司在1997年就开始规划集中式交易系统,但直到现在还没有获得一个可运行的系统。在集中式交易系统中,每秒钟对交易事务处理的数量是标志系统是否成功的关键参数。国内某个IT公司正在给这家证券公司开发集中式交易系统,第一次压力测试的结果显示每秒钟可交易40多笔,与系统设计目标200笔/秒相差很远,经过系统优化之后也还是没有完全达到设计指标。还有一家证券公司为了建设一套集中式交易系统,先是购买了IBM的AS400服务器,后又购买了IBM的RS6000,系统建设前后历时3年多也没有实现全公司的集中交易。
----这里面有一个相似之处,就是许多证券公司在建设其集中式交易系统的时候,都是相应的硬件系统早已到位,而自行开发的应用软件系统却无法达到实际应用的标准。可以说,国内证券行业迄今为止所开发的应用于全国范围的集中式交易系统还没有一个可以成功推广的经验。
----问题出在哪里呢?在计算机的硬件系统上吗?许多证券公司在开发其集中式交易系统的时候,已经花去了大把的真金白银,买回了大量美国的计算机。如果说只要购买高价先进的计算机硬件就可以解决问题的话,中国的证券公司5年前就大功告成了。
----这些证券公司出现的问题无法考证,也许问题出在比较容易修正的程序技术处理上,也许出在系统测试的环境上,而最不乐观的估计是从技术路线、系统架构设计,到对目标业务理解都出了问题。这样,即使成倍地增加对计算机硬件的配置和投资,也将无法达到设计的要求。
----软件技术影响集中式交易系统效率
----许多证券公司都在执着地开发集中式交易系统而未果,问题的原因很可能是缺乏对软件技术的理解和正确应用。然而,对应用软件技术认识的缺失,甚至会导致整个系统开发的失败。
----从技术的角度来讲,即使数据类型定义这一项在编程中最常用和最基本的技能也会直接影响软件系统的运行效率,而软件系统的运行效率,又对系统硬件的选型和是否能够得到一个成功的系统起着决定的作用。
----以目前国内证券交易软件中的股票代码为例,许多传统的柜台交易系统都把它定义为字符串,这种定义方法与上海和深圳两个交易所所提供的交易库中的定义是相一致的。
----但是计算机在计算整数时要比计算字符串快得多。整数是计算机程序中定义变量的一种基本类型,而在运算字符串变量时计算机首先把字符串中的每一个字符逐一转换为整数,然后再对每一个整数分别进行运算。可以证明,计算机软件处理整数的效率要比处理字符串快2n倍,其中n是字符串中字符的个数。这是一个很可怕的差距。
----上海和深圳两个证券交易所的股票代码长度均为6位数。在计算机中,股票代码000001可以被定义为整数,也可以被定义为字符串。以整数定义时在计算机中表示的长度为1,而以字符串定义的时候其长度为6。如果一家证券公司要求其集中式交易系统的处理能力达到10000笔/秒,同时我们把交易过程中对股票代码的使用分解成以下6个步骤:
----1. 接收交易; 2. 验证股票;
----3. 冻结股票; 4. 提交交易;
----5. 处理成交回报; 6. 记录日志。
----假设以上每一个步骤都只对股票代码进行一次计算的话,处理一笔交易就需要对股票代码进行6次计算。按照系统要求,计算以整数定义股票代码的计算能力为6万次/秒,而计算一笔以字符串定义的股票却需要达到78万次/秒,后者比前者需要多出72万次/秒的计算能力。
----此外,许多柜台系统把股东代码也定义成了字符串。按深圳交易所股东代码的长度是10位来计算,假设一笔交易同样需要对股东代码做6次与股票代码相同的处理步骤的话,集中式交易系统仅仅对字符串定义的股东代码和股票代码的计算就需要增加192万次/秒的计算能力。
----还有,每一笔交易都要和数据库做相关的运算。通过计算得知,按股东代码被定义为字符串来计算,当数据库每验证一个客户时就要比整数定义的股东代码多480次比较运算,仅仅在验证股东代码这一项运算上计算机就需要多出480万次/秒的计算能力。
----如果把股票冻结、交易日志和成交回报数据都储存到数据库中的话,单是对数据库进行使用字符串定义股东代码的计算就需要多出1920万次/秒的计算。一天4小时的交易,系统将需多负担2765亿次的计算。
----对任何一个数据库设计人员来讲,这些都是十分可怕的数字,更重要的是这还不是一个完整的计算过程。 由于数据库需要保证数据的一致性和完整性,以及数据计算的可逆转性等等,如果再把对股票代码和资金账号的验证考虑进来的话,在实际的交易系统中数据库运算的次数将远远超过以上的估算。
----事实上,影响一笔交易的因素还有很多。比如,交易系统架构中的中间层次越多,则对一笔交易计算的次数越多。如果设计架构中采用第三方开发的中间件软件,则更需要重点考查其在实时计算方面的能力。假如第三方产品的开发语言没有采用C或是C++语言编写,其实时计算的能力已经大打折扣。因为计算机界公认的结果是C语言的运算效率最高,C++语言排在其次。虽然第三方产品的代码不向用户开放,但还可以从其对事务处理的流程中推算出计算的次数。目前,美国和韩国的同行基本上都采用C和C++语言来开发实时交易的处理过程。经验还告诉我们,通用中间件产品在其设计中通常对实时运算的考虑不充分。
----以上这些数字和因素是任何一个系统分析师和结构设计师在设计集中式交易系统时都不能忽视的,因为这些附加的计算能力需求,在一般的情况下都需要通过增加服务器的配置或者是提高服务器的型号来满足。而对做甲方的证券公司来讲,提高服务器的配置或是型号,将直接转换为增加项目的投资。
----跳出硬件思维的定式
----证券公司的CIO们完全可以在项目的前期把好效率关,要求IT公司在完成系统设计阶段之后进行一些必要的证明,充分地说明一下为什么他们设计的系统是实用的、有效的、实时的、可扩展的和可靠的,以规避系统后期开发带来的风险。不然的话,将浪费大量的人力、物力和时间。
----国内有不少证券公司和IT厂商对硬件的投资比较关注,特别是一些系统集成商和跨国公司会说服证券公司在完成系统设计阶段之前购买服务器。这样的做法会造成以下三种情况的投资浪费:
----1. 最终系统对计算能力的要求低于提早购买的服务器,造成投资浪费。
----2. 最终系统对计算能力的要求超过提早购买的服务器,需要二次购买更强大的服务器,造成前期投资浪费,损失更加惨重。
----3. 如果早早地买好了服务器,而系统开发的时间拖了一年二载,并且服务器处于闲置状态的话,按照计算机硬件设备折旧的计算方式,服务器很快将被淘汰,损失同样惊人。
----不少证券公司都有过硬件系统躺着睡觉的经验。一家大券商为了实现交易的实时监控,购买了IBM著名的“深蓝”计算机,但由于软件应用开发时间过长,当软件要上线运行的时候,却发现需要对几年前购买的IBM“深蓝”计算机追加投资之后才能使用。
----韩国证券业的IT人员对软件和硬件的关系做过十分精辟的注释。在中国某大证券公司访问韩国的时候,中方的技术人员一而再、再而三地询问不同的韩国证券公司和IT公司有关如何选取集中式交易计算机硬件的问题——是IBM的主机系统好,还是UNIX系统好?而我们的韩国同行们却一遍又一遍地、反复地强调系统的处理能力主要取决于交易软件,而不取决于硬件。韩国大宇证券公司在没有增加任何硬件设备的基础上,依靠对中间件软件的重新设计和编排使整个交易系统的运行效率提高了30%。这是一个十分可观的数字,也更进一步说明了软件设计和编程的魅力所在。
关键词: 行业 观察 现在 金融 软件系统 虚假 繁荣 证券
共1条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
与电子爱好者谈读图二被打赏50分 | |
【FRDM-MCXN947评测】Core1适配运行FreeRtos被打赏50分 | |
【FRDM-MCXN947评测】双核调试被打赏50分 | |
【CPKCORRA8D1B评测】---移植CoreMark被打赏50分 | |
【CPKCORRA8D1B评测】---打开硬件定时器被打赏50分 | |
【FRDM-MCXA156评测】4、CAN loopback模式测试被打赏50分 | |
【CPKcorRA8D1评测】--搭建初始环境被打赏50分 | |
【FRDM-MCXA156评测】3、使用FlexIO模拟UART被打赏50分 | |
【FRDM-MCXA156评测】2、rt-thread MCXA156 BSP制作被打赏50分 | |
【FRDM-MCXN947评测】核间通信MUTEX被打赏50分 |