深入浅出开发交易系统公开课(进化史)

关键词:【账户系统】【撮合引擎】【清算系统】【金融级账户体系】【复式记账法】【多边净额清算】

2141867-b8f3d23846c37f73.png
深入浅出探索交易系统公开课(开场).png

1. 交易系统应用场景

什么是交易系统?从简单的概念上讲,交易系统为商品市场提供商品的集中交易及报价、撮合、清算、交割、登记等服务。例如:证券交易系统为证券市场提供证券的集中交易及报价、撮合、清算、交割、登记等服务;数字货币交易系统为数字货币市场提供数字货币的集中交易及报价、撮合、清算、交割、登记等服务;另外还有白银交易系统、黄金交易系统、贵金属交易系统、药材交易系统、艺术品交易系统等等。

可见交易系统应用场景比较广泛,现在我们深入浅出探索交易系统的基础设计,为感兴趣的朋友提供交易系统相关的基础知识、常见问题、改进策略、架构设计等内容,让从事交易系统研发与应用的朋友更高维度的审视交易系统架构,更深入的研究交易系统核心,更清楚的掌握交易系统应用。

闲话不说,我们进入正题。

2. 交易系统的不同视角

视角一:从开发设计视角来看:我们按照系统层次进行划分,可以将交易系统划分为外围系统、核心系统;外围系统包括新闻系统、公告系统、用户安全系统、钱包系统等等,核心系统包括【撮合引擎】、【账户系统】、【清算系统】;


视角二:从用户体验视角来看:对于交易系统来说,客户最关心交易系统的三个指标:正确性、高效性、高并发;

【指标一:正确性】:指的是系统业务链设计的正确性,业务执行的正确性,业务核算的正确性;对于交易系统的正确性来说,我们99%关注是账户信息、账户资金、账户流水等业务的正确性。主要受到账户系统的影响;


【指标二:高效性】:指的是一个完整业务链执行完成,所需要的最短时间。例如:交易系统系统的委托交易业务链;在两笔买卖单可成交情况下,委托交易业务链由挂单、撮合、成交、清算四个步骤构成。该业务链的执行最短时间为【高效性】=【挂单时间】+【撮合时间】+【成交时间】+【清算时间】。主要受到撮合引擎、清算系统的影响;


【指标三:高并发】:指的是在极短单位时间内,极多个请求同时发起到服务器,服务器对多个请求进行处理。随着交易系统的用户量不断增加,我们会采用多种手段改进交易系统的设计实现,满足交易系统的高并发要求。主要受到撮合引擎、账户体系、清算系统的影响;


备注一:目前交易系统号称撮合引擎百万TPS,但是,撮合引擎百万TPS仅是委托交易业务链的一个撮合环节的处理效率,清算效率假如为100TPS,那么完整的委托交易业务链的TPS就是100TPS。对于百万TPS撮合引擎,大家可以当作是个宣传口号,不可以应用到技术研发的讨论范畴。

备注二:高并发和高效性是紧密相关的,提高应用的性能,是肯定可以提高系统的并发能力的。

在分析过程中,我们可以看出交易系统核心三系统【撮合引擎】【账户系统】【清算系统】对交易系统的【正确性】【高效性】【高并发】具有重要的影响。

3. 核心三系统初步探索


【系统一:撮合引擎】

  • 【现状描述】:目前在网上传播最多的当属【撮合引擎】的设计资料。交易系统的撮合引擎伴随着90年代的证券交易系统发展而逐步完善。

  • 【发展历程】:由最早的数据库撮合方式逐步改进为内存撮合方式,而后在内存撮合方式的基础之上,将有锁撮合内存队列为无锁环形撮合内存队列。

  • 【影响分析】:目前撮合引擎的设计与实现已经稳定,实现百万TPS的撮合效率也是很容易实现的。


【系统二:账户系统】

  • 【现状描述】:现有的交易系统,除了证券交易所这些用户群体巨大、业务复杂性高,具备完善的账户系统设计。一些用户体谅小、业务简单的数币货币、白银、黄金、贵金属等交易所,通常采用的都是【单式记账法】,记录用户的资金信息。目前交易系统的账户系统设计资料网上公开的信息并完整,也没有形成账户系统解决方案。本系列文章后续会逐步介绍如何将【单式记账法】普通账户系统升级为【复式记账法】金融级账户系统。

  • 【发展历程】:由最早的【用户账户一体系统】升级为用户账户分离的【单式记账法-普通账户系统】,随着金融业务的复杂度再次增加,将【单式记账法-普通账户系统】继续升级为【复式记账法-金融级账户系统】。

  • 【影响分析】:账户系统的设计对交易系统的【正确性】【高效性】【高并发】都起着重要的作用。例如普通账户系统经常遇到的问题:

  • 1. 【影响正确性】账户设计缺失,系统无法进行完整的记账、对账、查账等操作;

    • 1.1 问题一:账户的资金经常出现错误,甚至出现资金为负数;

    • 1.2 问题二:账户流水记录不完整,系统运行一段时间,对账户无法进行查账、对账;

  • 2. 【影响高效性、高并发】账户设计冲突,数据库死锁,系统的TPS得不到提升;

    • 2.1 问题三:多业务链同时操作账户余额表,造成数据库死锁,系统异常停机;

【系统三:清算系统】

  • 【现状描述】:当下的清算系统与账务系统处境相似,同样被隐藏在撮合引擎的光环下,不被人们所熟知。

  • 【发展历程】:清算在用户量小的情况下,采取一笔一笔的清算方式,实现简单;但是,在用户量特大的情况下,合并成交笔数(多笔成交记录合并为一笔)才是比较好的清算方案。将【单边净额清算】方式升级为【多边净额清算】方式

  • 【影响分析】:影响委托交易业务链的清算环节,进而影响交易系统的【高效性】【高并发】

4. 结束语

在接下来的文章中,我们将逐步介绍交易系统的【账户体系】【撮合引擎】【清算系统】的设计实现。

猜你喜欢

转载自blog.csdn.net/weixin_33892359/article/details/87341035