电子撮合系统是典型的高性能场景下的信息化系统,研发的核心难点集中在算法设计、系统架构、数据一致性等多个关键方面。
当下,鹏交所每日成交订单仅一百多笔,可随着上市公司数量的增多以及股民和机构投资者不断涌入,订单量定会呈爆发式增长。
他清楚地记得,前世鹏交所在电子撮合系统上线当年,日均订单量就飙升至五千笔,1998 年首批基金公司进场后,更是迅猛增长到日均十万笔。而到了后来全民炒股的 21 世纪 20 年代,每日订单量竟高达三到五亿笔。
依据这些经验,秦奕将如今设计的这个电子撮合系统峰值处理能力定在每秒五百笔,他预计这个系统在未来五年内应该能稳定运行,不会出现大问题。
为实现电子撮合算法,团队首先得设计一个适合动态插入、撤单且能动态排序的数据结构。
堆、跳表、红黑树这两类高效数据结构及相关算法已被完整提出,秦奕无需给团队详细介绍其中的算法设计,只需把去年出版的那本《算法导论》拿给负责算法设计的团队成员研读即可。
数据结构之外,由于撮合系统会同时接收不同营业部发来的订单信息,必然涉及多线程处理。
在多线程环境下,订单的插入、撤单和撮合操作,都要保证数据一致性,而要让性能不被这一致性要求拖累,就必须采用优化的乐观锁机制。
秦奕召集团队成员,详细讲解了这一机制的要点,成员们认真记录,不时提出疑问,大家围绕着技术难题展开热烈讨论。
系统可靠性与容错同样是巨大挑战。为保证交易不间断运行,避免宕机或数据丢失,交易数据需实时落盘。但以现有的技术条件,频繁的 I\/o 操作严重拖累性能,团队需要设计轻量级的预写日志结构。
团队成员们围坐在会议桌前,对着电脑上的数据和设计图纸,反复探讨如何优化,有人提出一种思路,马上就有人从不同角度分析其可行性与不足。
此外,系统崩溃后,要快速重建内存中的订单簿和账户状态,可当下缺乏高效的快照机制,恢复时间难以把控。团队成员只能不断摸索,尝试不同的方法,在实验室里模拟系统崩溃场景,一次次记录数据恢复时间,调整参数,只为找到最佳解决方案。
在实时风控规则集成方面,要在撮合过程中嵌入风控逻辑,且保证风控检查在毫秒级内完成。
但目前没有现成且方便合适的规则引擎,所以团队又得开发一个类似的库,确保风控逻辑一旦需要修改,无需停机重编译,毕竟一旦撮合系统停机就可能给证券交易所带来巨大的损失。
秦奕和团队里负责这块的成员一起,查阅大量资料,参考国内外相关案例,一点点搭建框架,编写代码。
在网络通信与协议设计上,为高效传输订单和行情数据,像是 http 这类用于传输文本的常规可读性协议是无法满足需求的,团队需自定义二进制协议,减少传输开销。
好在秦奕前世就了解过不少 pRotobUFFER 和 bRpc 之类的压缩协议,倒也能给出一个设计思路,不过这种协议序列化和反序列化的工具实现起来也还有一定难度,又容易出错,短时间里是开发不出来的。
秦奕暂时是在系统设计上留出了切换协议的空间,开发时先用可读性协议,后续等工具完成了之后再切换成二进制协议。
在窄带网络环境下,协议还要处理丢包、乱序问题,秦奕之前在计算机网络标准里面提到的基于 Udp 实现的冗余确认机制相对比较轻量,团队可以直接参考该协议来保证数据可达。
开发与测试工具的匮乏,同样给团队带来极大困扰。
由于目前方寸集成开发环境并没有针对多线程程序的可视化调试器,相关问题的处理开发人员只能依赖日志和核心转储分析,定位问题的效率极低。
自动化测试工具的缺乏也让团队只能手工编写脚本模拟大规模订单流,难以覆盖瞬间行情暴涨暴跌等真实场景,不过长河这个软件流水线工具到也能给开发人员提供不少帮助。
尽管困难重重,秦奕和团队成员并未退缩,他们互相鼓励,迎难而上,在一次次的尝试与失败中,不断探索前行。
另外,董日成后来还找到秦奕,谈及另一个展望。
目前鹏城证交所主要面向本地券商,不过既然五城的骨干网络已经联通,他们自然希望鹏交所未来能面向全国甚至全球券商服务。
董日成表示,政治方面的问题他们正在着手解决,希望秦奕在开发的时候也考虑相关扩展性问题,秦奕认真聆听,思考着如何在系统架构中预留相应的接口和功能,以满足未来的发展需求。
-·-·-
11 月,羊城那边有一件大事发生,第六届全国运动会将在那里举行,为了解决赛事期间突发的通信需求,主办方已与羊城电信局开通国内首个 tAcS 模拟移动通信网,这一历史性时刻备受瞩目。
18 日,邮电部部长杨台芳在羊城手持“大哥大”拨打了华国史上的第一通移动电话,电话那头,是京城邮电部的同事。
仅仅过了三天,21 日,小伙徐峰满怀期待地走进广州邮电局无线分局,郑重地填好了第一张移动电话入网申请表,幸运地拿到了华国民间的第一部 “大哥大” 手机。
此消息一经传出,像任争斐这些在通信领域摸爬滚打的企业家们都兴奋不已,他第一时间拨通了鹏城市政府邮电局的电话,言辞恳切地表明来意:“您好,我是从事通信行业的任争斐,听闻羊城开通了首个 tAcS 模拟移动通信网。”
“我们特别关注鹏城在这方面的建设规划,不知目前进展如何?未来有哪些布局?”