一种基于内存算法的撮合系统的制作方法

文档序号:29494317发布日期:2022-04-06 14:32阅读:214来源:国知局
一种基于内存算法的撮合系统的制作方法

1.本发明涉及电子交易系统技术领域,具体涉及一种基于内存算法的撮合系统。


背景技术:

2.传统的金融交易主要发生在有型的金融市场中,金融交易的买卖双方通过叫价等方式进行价格协商,最终达成一致后即形成一笔交易,同时按照交易订单到指定的交割地点进行实物交割。随着信息技术的日新月异和金融业务的快速发展,市场对于金融交易的要求也在不断提高,主流的金融交易模式已经从传统的人工叫价方式转换为由高度电子化的交易系统来撮合订单的方式。由于交易的整个过程主要依靠人来执行,传统的金融交易缺点主要有:效率低速度慢、交易时间限制大、交易空间限制大、交易成本非常髙、容易有内幕交易、交易扩展性差、交易容易出错、资金安全性差等一系列的缺点。


技术实现要素:

3.为克服现有技术的不足,本发明提出一种基于内存算法的撮合系统,具备高性能、高可靠性和高扩展性的特点。
4.为实现上述目的,本发明的一种基于内存算法的撮合系统,包括:
5.交易层:包括移动app、pc端和web端的客户终端,具备编程接口,最终用户可以通过客户终端进行撮合委托、委托查询、出入金的操作;
6.接口层:包括网关集群,具备产品规则转发模块,用户的商品查询、下单等请求派发给业务层,并把产生的行情反馈给交易层;
7.业务层:包括若干撮合引擎部署成的撮合引擎集群,用于接收订单并根据业务逻辑实现订单撮合同时生成交易记录,随后给予用户交易结果反馈;
8.数据层:包括数据库(db)和文件系统,具备异步数据持久化模块,用于存储商品信息、交易信息、资金信息、用户信息并进行持久化,缓存会对行情进行存储以减轻数据库的压力。
9.进一步地,撮合引擎包括撮合引擎由原子多播订单定序模块、撮合处理模块、交易记录日志模块和内存数据,撮合引擎的撮合逻辑过程在服务器的内存上运行;
10.原子多播订单定序模块包括交易订单接收线程、交易订单发送线程和交易信息发送线程;
11.撮合处理模块包括外围业务逻辑线程、撮合业务逻辑线程、交易行情发布线程和交易行情发布线程;
12.交易记录日志模块包括同步日志写线程、异步持久化代理线程;
13.内存数据包括订单信息、交易行情信息。
14.进一步地,撮合引擎对买卖订单进行撮合最后形成交易记录,撮合引擎对无法立刻完成撮合的订单建立买入队列和卖出队列以保存订单,买入队列和卖出队列按照价格优先、同价格下时间优先原则排序,买入队列按照委托价格从高到低的顺序,卖出队列按照委
托价格从低到高的顺序排列。
15.进一步地,撮合引擎对买卖订单的新进交易委托进行分类处理,处理方式包括:
16.当新进的是买入市价委托:如果卖出队列中有市价委托,则对它们进行撮合;如果卖出队列中的市价委托全部撮合后,该买入委托还有可交易数量,则和卖出队列中的限价委托撮合;如果卖出队列中没有市价委托,则直接和卖出队列中的限价委托进行撮合;如果卖出队列为空,则只是将该买入委托插入买入队列;
17.当新进的是买入限价委托:如果卖出队列中有市价委托,则先对它们进行撮合;如果市价委托全部撮合完毕后该买入委托还存在可交易数量且价格大于等于卖出队列中的卖一最低价格,则继续跟限价委托撮合;如果卖出队列中只有限价委托且该买入委托的价格大于等于卖出队列中卖一的最低价格,则对它们进行撮合,否则只能将该买入委托按照撮合原则插入到买入队列;如果卖出队列为空,则直接将该买入委托按照撮合原则插入到买入队列;
18.当新进的是卖出市价委托:如果买入队列有市价委托,则进行撮合;如果撮合后该卖出队列还有未成交量,则和买入队列中限价委托撮合;如果买入队列中仅有限价委托,则和限价委托撮合;如果买入队列为空,则将该卖出委托插入到卖出队列中;
19.当新进的是卖出限价委托:如果买入队列中有市价委托,则先对它们进行撮合;如果市价委托全部撮合完毕后该卖出委托还存在可交易数量且价格小于等于买入队列中的买一最高价格,则继续跟限价委托撮合;如果买入队列中只有限价委托且该卖出委托的价格小于等于买入队列中买一的最高价格,则进行撮合,否则只能将该卖出委托按照撮合原则插入到卖出队列;如果买入队列为空,则直接将该卖出委托按照撮合原则插入到卖出队列。
20.进一步地,撮合引擎的撮合顺序为:
21.当撮合引擎接收到新的买入订单时会到卖出队列的头部查找是否存在符合价格规则的卖出订单,如果存在卖出价格小于或等于买入价格的订单,则从卖出队列中取出此订单并撮合成一笔交易;如果卖出队列为空或卖出队列头部不满足价格关系,则将买入订单插入买入队列中,新插入的买入订单经过一次排序后插入买入队列;
22.当撮合引擎接收到新的卖出订单时会到买入队列的头部査找是否存在符合价格规则的买入订单,如果存在买入价格大于或等于卖出价格的订单,则从订单队列中取出此订单并撮合成一笔交易;如果买入队列为空或买入队列头部不满足价格关系,则将卖出订单插入到卖出队列中,新插入的卖出订单经过一次排序后插入到卖出队列。
23.进一步地,撮合引擎以互为备份的方式部署撮合引擎集群的多机热备份,并且在同一时间内由一台撮合引擎提供服务,当该撮合引擎出现故障无法继续正常工作时,撮合引擎集群会迅速检测到该故障并选举出一台备份撮合引擎接管故障撮合引擎的任务从而保证整个撮合系统的正常运行。
24.进一步地,撮合引擎集群以内存状态机复制的方式将所运行的撮合算法定义为确定性状态机并将其复制多份部署到中撮合引擎集群的多台撮合引擎中,每个撮合引擎上的撮合算法副本从相同的初始状态开始运行,当撮合引擎集群收到网关集群发来的买卖订单时,每个撮合引擎都会撮合该买卖订单并依次产生交易记录,同时更新确定性撮合算法状态机的独立状态,当撮合引擎集群正常运转时,每个撮合引擎上的撮合算法副本都会具有
相同的结果状态,当撮合引擎集群出现故障或异常时,各撮合引擎会出现状态的不一致情况从而断定系统异常。
25.进一步地,内存状态机复制的方式包括采用原子多播解决撮合引擎订单的可靠多播与全局有序性,采用基于无锁订单队列的流水线撮合技术提供快速的订单撮合,采用异步一致性持久化技术实现与数据库的交互,采用失效备援技术对撮合引擎集群进行状态监控并保证系统的容错能力,采用进度追赶技术解决将故障撮合引擎的恢复或新撮合引擎的加入。
26.进一步地,数据库在订单表建立索引提高查询效率,索引为单索引。
27.本发明的一种基于内存算法的撮合系统提出了基于多层分布式体系,利用j2ee技术进行设计和实现,采用最新的内存撮合技术,利用多级存储模式提高系统运行效率,构建了一种高性能、高可靠性和高扩展性的交易撮合系统。
附图说明
28.下面结合附图对本发明作进一步描写和阐述。
29.图1是本发明首选实施方式的一种基于内存算法的撮合系统的系统框图;
30.图2是一种基于内存算法的撮合系统的软件架构图;
31.图3是本发明首选实施方式的一种基于内存算法的撮合系统的硬件框架图
32.图4是买入队列和卖出队列的排序原则示意图;
33.图5是撮合引擎进行撮合的流程图;
34.图6是撮合引擎集群多机热备份形式的示意图。
具体实施方式
35.下面将结合附图、通过对本发明的优选实施方式的描述,更加清楚、完整地阐述本发明的技术方案。
36.如图1和图2所示,本发明首选实施方式的一种基于内存算法的撮合系统,包括:
37.交易层:包括移动app、pc端和web端的客户终端,具备编程接口,最终用户可以通过客户终端进行撮合委托、委托查询、出入金的操作;
38.接口层:包括网关集群,具备产品规则转发模块,用户的商品查询、下单等请求派发给业务层,并把产生的行情反馈给交易层;
39.业务层:包括若干撮合引擎部署成的撮合引擎集群,用于接收订单并根据业务逻辑实现订单撮合同时生成交易记录,随后给予用户交易结果反馈;
40.数据层:包括数据库(db)和文件系统,具备异步数据持久化模块,数据库在订单表建立索引提高查询效率,索引为单索引,用于存储商品信息、交易信息、资金信息、用户信息并进行持久化,缓存会对行情进行存储以减轻数据库的压力。
41.根据不同类型的金融交易展品将撮合模块划分为若干业务分区,每个分区独立进行撮合,彼此不受影响。
42.具体地:如图3所示,本发明的一种基于内存算法的撮合系统硬件架构可以由n台客户端、n台网关、x个产品集群(每个集群由2至3台撮合引擎组成,负责响应产品订单的处理)、一个交易记录数据库和可选的监视系统组成。其中客户端连接到相应网关,网关负责
接收客户端提交的订单,并根据订单相关的金融产品类别转发到相对应的产品集群。产品集群中所有撮合引擎均接收网关发送的订单,根据撮合业务规则,将其撮合并回馈消息给网关和客户端,同时将撮合生成的交易记录持久化到交易记录数据库中。
43.撮合引擎包括撮合引擎由原子多播订单定序模块、撮合处理模块、交易记录日志模块和内存数据,撮合引擎的撮合逻辑过程在服务器的内存上运行;
44.原子多播订单定序模块包括交易订单接收线程、交易订单发送线程和交易信息发送线程;
45.撮合处理模块包括外围业务逻辑线程、撮合业务逻辑线程、交易行情发布线程和交易行情发布线程;
46.交易记录日志模块包括同步日志写线程、异步持久化代理线程;
47.内存数据包括订单信息、交易行情信息。
48.如图4所示,撮合引擎对买卖订单进行撮合最后形成交易记录,撮合引擎对无法立刻完成撮合的订单建立买入队列和卖出队列以保存订单,买入队列和卖出队列按照价格优先、同价格下时间优先原则排序,买入队列按照委托价格从高到低的顺序,卖出队列按照委托价格从低到高的顺序排列。
49.撮合引擎对买卖订单的新进交易委托进行分类处理,处理方式包括:
50.当新进的是买入市价委托:如果卖出队列中有市价委托,则对它们进行撮合;如果卖出队列中的市价委托全部撮合后,该买入委托还有可交易数量,则和卖出队列中的限价委托撮合;如果卖出队列中没有市价委托,则直接和卖出队列中的限价委托进行撮合;如果卖出队列为空,则只是将该买入委托插入买入队列;
51.当新进的是买入限价委托:如果卖出队列中有市价委托,则先对它们进行撮合;如果市价委托全部撮合完毕后该买入委托还存在可交易数量且价格大于等于卖出队列中的卖一最低价格,则继续跟限价委托撮合;如果卖出队列中只有限价委托且该买入委托的价格大于等于卖出队列中卖一的最低价格,则对它们进行撮合,否则只能将该买入委托按照撮合原则插入到买入队列;如果卖出队列为空,则直接将该买入委托按照撮合原则插入到买入队列;
52.当新进的是卖出市价委托:如果买入队列有市价委托,则进行撮合;如果撮合后该卖出队列还有未成交量,则和买入队列中限价委托撮合;如果买入队列中仅有限价委托,则和限价委托撮合;如果买入队列为空,则将该卖出委托插入到卖出队列中;
53.当新进的是卖出限价委托:如果买入队列中有市价委托,则先对它们进行撮合;如果市价委托全部撮合完毕后该卖出委托还存在可交易数量且价格小于等于买入队列中的买一最高价格,则继续跟限价委托撮合;如果买入队列中只有限价委托且该卖出委托的价格小于等于买入队列中买一的最高价格,则进行撮合,否则只能将该卖出委托按照撮合原则插入到卖出队列;如果买入队列为空,则直接将该卖出委托按照撮合原则插入到卖出队列。
54.如图5所示,撮合引擎的撮合顺序为:
55.当撮合引擎接收到新的买入订单时会到卖出队列的头部查找是否存在符合价格规则的卖出订单,如果存在卖出价格小于或等于买入价格的订单,则从卖出队列中取出此订单并撮合成一笔交易;如果卖出队列为空或卖出队列头部不满足价格关系,则将买入订
单插入买入队列中,新插入的买入订单经过一次排序后插入买入队列;
56.当撮合引擎接收到新的卖出订单时会到买入队列的头部査找是否存在符合价格规则的买入订单,如果存在买入价格大于或等于卖出价格的订单,则从订单队列中取出此订单并撮合成一笔交易;如果买入队列为空或买入队列头部不满足价格关系,则将卖出订单插入到卖出队列中,新插入的卖出订单经过一次排序后插入到卖出队列。
57.结合买卖订单情况,买卖队列的有序性是保证撮合顺序的确定性的基础,并且撮合过程中每笔订单都可以撮合出当前最优交易。
58.如图6所示,撮合引擎以互为备份的方式部署撮合引擎集群的多机热备份,并且在同一时间内由一台撮合引擎提供服务,当该撮合引擎出现故障无法继续正常工作时,撮合引擎集群会迅速检测到该故障并选举出一台备份撮合引擎接管故障撮合引擎的任务从而保证整个撮合系统的正常运行。通过多机热备份技术,在可以接受的时间内完成主机和备机之间的切换,由备份机提供无缝连续服务,来避免长时间的撮合服务中断,保证撮合系统长期、可靠的服务。在实际生产环境中,三台互为备份的服务器即可提供较高的可以用于生产环境的可靠性。
59.撮合引擎集群以内存状态机复制的方式将所运行的撮合算法定义为确定性状态机并将其复制多份部署到中撮合引擎集群的多台撮合引擎中,每个撮合引擎上的撮合算法副本从相同的初始状态开始运行,当撮合引擎集群收到网关集群发来的买卖订单时,每个撮合引擎都会撮合该买卖订单并依次产生交易记录,同时更新确定性撮合算法状态机的独立状态,当撮合引擎集群正常运转时,每个撮合引擎上的撮合算法副本都会具有相同的结果状态,当撮合引擎集群出现故障或异常时,各撮合引擎会出现状态的不一致情况从而断定系统异常。
60.内存状态机复制的方式包括采用原子多播解决撮合引擎订单的可靠多播与全局有序性,采用基于无锁订单队列的流水线撮合技术提供快速的订单撮合,采用异步一致性持久化技术实现与数据库的交互,采用失效备援技术对撮合引擎集群进行状态监控并保证系统的容错能力,采用进度追赶技术解决将故障撮合引擎的恢复或新撮合引擎的加入。
61.本发明的一种基于内存算法的撮合系统提出了基于多层分布式体系,利用j2ee技术进行设计和实现,采用最新的内存撮合技术,利用多级存储模式提高系统运行效率,构建了一种高性能、高可靠性和高扩展性的交易撮合系统。
62.上述具体实施方式仅仅对本发明的优选实施方式进行描述,而并非对本发明的保护范围进行限定。在不脱离本发明设计构思和精神范畴的前提下,本领域的普通技术人员根据本发明所提供的文字描述、附图对本发明的技术方案所作出的各种变形、替代和改进,均应属于本发明的保护范畴。本发明的保护范围由权利要求确定。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1