设计目标和系统的架构设计
在最初我看到需求文档的时候决定用MFC来实现,但是查阅相关资料发现MFC的使用需要一定的学习投入,相当于重新学习一门新的语言,后来有搜到了Windows编程中的Delphi,无耐自己没有学过Delphi,虽然Qt没学过,但是听说比较容易上手,所以Qt成了我最终的选择。
完成了开发平台的选择后,我就开始决定了系统的架构设计以及数据库数据结构的设计最终的交易系统流程,如图4-1所示。
图4-1交易撮合系统流程图
第一步:在委托程序界面输入委托申请,确定后写入委托数据库中的ashare_ordwth委托表。
第二步:报盘程序实时读取委托数据库中的ashare_ordwth委托表,发现有新增记录,立刻读取。
第三步:报盘程序将读取到的新记录写撮合数据库中的ashare_ordwth委托表。
第四步:第三步成功后报盘程序将该笔新记录回写到委托数据库中的ashare_ordwth2委托确认表中。
第五步:撮合程序实时读取撮合数据库中的ashare_ordwth委托表,发现有新增记录,立刻读取。
第六步:撮合程序读取到的新记录进行撮合,并写入撮合数据库中的ashare_cjhb成交回报表。
第七步:报盘程序实时读取撮合数据库中的ashare_cjhb成交回报表,发现有新增记录,立刻读取。
第八步:报盘程序读取到新记录回写到委托数据库中的ashare_cjhb成交回报表中。
第九步:委托程序实时读取委托数据库中的ashare_cjhb成交回报表,发现新记录,立刻读取,并在界面显示。
(1)能够根据价格优先、时间优先的撮合原则进行撮合。买方向的,出价高的先成交;卖方向,出价低的先成交;如果买卖方向相同,出价也相同,则比较出价时间,出价早的先成交。
(2)系统具有一定的容错能力,至少达到功能需求中的中级要求。
4.2 撮合系统设计需达到的性能
一、高可靠性
系统必须具备很高的可靠性:交易过程要求系统连续无故障,如果在交易中出现单点故障,都应自动排除故障,不会影响交易的运行;系统遭遇故障不得不异常停止运行后能够恢复到最后的状态;[1]系统应具有在现实的备份和恢复能力,并有应急处理、恢复故障能力;在条件具备的情况下,建立在异地的灾备系统,防止不可预见的故障。[3]
二、高性能
期货交易系统对报价的实时性要求很高,客观上要求系统具有在大规模并发的会员报价下快速处理能力。要做到在交易达到峰值时系统的响应速度仍应当在一个合理的、会员能够接受范围之内。期货交易系统在处理效率、并发调度等方面有其独特的要求。
三、数据吞吐量大[3]
由于交易系统中同时段可能有成交上万个用户同时在使用,则可能会造成瞬时的成交十分密集,数据吞吐量的大小也直接影响着系统的性能,所以设计的系统应考虑交易极端情况,结合本系统是采用数据库撮合的方式,故应该选用Oracle、Sybase、SQL这样较大的数据库来存储数据。[3]