码迷,mamicode.com
首页 > 编程语言 > 详细

java高并发核心要点|系列7|LMAX-Disruptor实现交易所撮合引擎

时间:2020-02-07 14:48:57      阅读:217      评论:0      收藏:0      [点我收藏+]

标签:定义   mic   use   资产   根据   执行   证券   系统   完成   

开发一个交易所是有难度的,有技术含量的。
一个完整的证券交易系统是由用户系统、账户系统、订单系统、撮合系统以及清算系统等子系统构成的。各个子系统相互配合,完成证券报价交易。
技术图片

当一个请求进入交易系统后,首先由用户系统(User)识别用户身份,然后由账户系统(Account)对用户资产进行冻结,买入冻结USD,卖出冻结BTC,冻结如果成功,订单就进入定序系统(Sequence)。

为什么需要设计一个定序系统?因为交易系统的所有订单是一个有序队列。不同的用户在同一时刻下单,也必须由定序系统确定先后顺序。

经过定序的订单被送入撮合引擎(Match)。

而撮合引擎,是交易所中的核心。

撮合引擎本质上就是维护一个买卖盘列表,然后按价格优先原则对订单进行撮合,能够成交的就输出成交结果,不能成交的放入买卖盘。
我们今天来讨论一下,用disruptor开发一个高性能的交易撮合引擎。
首先,我们来简化一下,一个撮合引擎的输入输出。
例如,可能的输入包括:

创建新的委托单(NewOrder):一个新的委托单可以作为交易撮合引擎的输入,引擎会尝试将其与已有的 委托单进行撮合。
取消已有的委托单(CancelOrder):用户也可以取消一个之前输入的委托单,如果它还没有执行的话,即开口订单。

当然你可以定义其他的输入,出于简化考虑,我们现在只定义上述两个输入。
交易撮合引擎的输出是一些事件,以便及时通知其他应用处理。例如,当 引擎撮合了一笔交易后,就会触发一个TradesGenerated事件;而当取消了 一个已有的委托单后,引擎就会触发OrderCancelled。同样,你可以根据自己 的需求来定义引擎的输出,这里我们还是简单点,只定义这两个输出事件。

参考文章:

https://cloud.tencent.com/developer/article/1470996

https://www.liaoxuefeng.com/article/1185272483766752
https://juejin.im/post/5dd3479a518825786e79035b
https://keeganlee.me/post/matching/20191118/

java高并发核心要点|系列7|LMAX-Disruptor实现交易所撮合引擎

标签:定义   mic   use   资产   根据   执行   证券   系统   完成   

原文地址:https://www.cnblogs.com/gyc567/p/12272645.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!