一种基于内存算法的撮合系统技术方案

技术编号:32924248 阅读:10 留言:0更新日期:2022-04-07 12:15
本发明专利技术提出一种基于内存算法的撮合系统,包括:交易层:包括移动APP、PC端和Web端的客户终端,具备编程接口,最终用户可以通过客户终端进行撮合委托、委托查询、出入金的操作;接口层:包括网关集群,具备产品规则转发模块,用户的商品查询、下单等请求派发给业务层,并把产生的行情反馈给交易层;业务层:包括若干撮合引擎部署成的撮合引擎集群,用于接收订单并根据业务逻辑实现订单撮合同时生成交易记录,随后给予用户交易结果反馈;数据层:包括数据库和文件系统,具备异步数据持久化模块,用于存储商品信息、交易信息、资金信息、用户信息并进行持久化。该系统具备高性能、高可靠性和高扩展性的特点。展性的特点。展性的特点。

【技术实现步骤摘要】
一种基于内存算法的撮合系统


[0001]本专利技术涉及电子交易系统
,具体涉及一种基于内存算法的撮合系统。

技术介绍

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

技术实现思路

[0003]为克服现有技术的不足,本专利技术提出一种基于内存算法的撮合系统,具备高性能、高可靠性和高扩展性的特点。
[0004]为实现上述目的,本专利技术的一种基于内存算法的撮合系统,包括:
[0005]交易层:包括移动APP、PC端和Web端的客户终端,具备编程接口,最终用户可以通过客户终端进行撮合委托、委托查询、出入金的操作;
[0006]接口层:包括网关集群,具备产品规则转发模块,用户的商品查询、下单等请求派发给业务层,并把产生的行情反馈给交易层;
[0007]业务层:包括若干撮合引擎部署成的撮合引擎集群,用于接收订单并根据业务逻辑实现订单撮合同时生成交易记录,随后给予用户交易结果反馈;
[0008]数据层:包括数据库(DB)和文件系统,具备异步数据持久化模块,用于存储商品信息、交易信息、资金信息、用户信息并进行持久化,缓存会对行情进行存储以减轻数据库的压力。
[0009]进一步地,撮合引擎包括撮合引擎由原子多播订单定序模块、撮合处理模块、交易记录日志模块和内存数据,撮合引擎的撮合逻辑过程在服务器的内存上运行;
[0010]原子多播订单定序模块包括交易订单接收线程、交易订单发送线程和交易信息发送线程;
[0011]撮合处理模块包括外围业务逻辑线程、撮合业务逻辑线程、交易行情发布线程和交易行情发布线程;
[0012]交易记录日志模块包括同步日志写线程、异步持久化代理线程;
[0013]内存数据包括订单信息、交易行情信息。
[0014]进一步地,撮合引擎对买卖订单进行撮合最后形成交易记录,撮合引擎对无法立刻完成撮合的订单建立买入队列和卖出队列以保存订单,买入队列和卖出队列按照价格优先、同价格下时间优先原则排序,买入队列按照委托价格从高到低的顺序,卖出队列按照委
托价格从低到高的顺序排列。
[0015]进一步地,撮合引擎对买卖订单的新进交易委托进行分类处理,处理方式包括:
[0016]当新进的是买入市价委托:如果卖出队列中有市价委托,则对它们进行撮合;如果卖出队列中的市价委托全部撮合后,该买入委托还有可交易数量,则和卖出队列中的限价委托撮合;如果卖出队列中没有市价委托,则直接和卖出队列中的限价委托进行撮合;如果卖出队列为空,则只是将该买入委托插入买入队列;
[0017]当新进的是买入限价委托:如果卖出队列中有市价委托,则先对它们进行撮合;如果市价委托全部撮合完毕后该买入委托还存在可交易数量且价格大于等于卖出队列中的卖一最低价格,则继续跟限价委托撮合;如果卖出队列中只有限价委托且该买入委托的价格大于等于卖出队列中卖一的最低价格,则对它们进行撮合,否则只能将该买入委托按照撮合原则插入到买入队列;如果卖出队列为空,则直接将该买入委托按照撮合原则插入到买入队列;
[0018]当新进的是卖出市价委托:如果买入队列有市价委托,则进行撮合;如果撮合后该卖出队列还有未成交量,则和买入队列中限价委托撮合;如果买入队列中仅有限价委托,则和限价委托撮合;如果买入队列为空,则将该卖出委托插入到卖出队列中;
[0019]当新进的是卖出限价委托:如果买入队列中有市价委托,则先对它们进行撮合;如果市价委托全部撮合完毕后该卖出委托还存在可交易数量且价格小于等于买入队列中的买一最高价格,则继续跟限价委托撮合;如果买入队列中只有限价委托且该卖出委托的价格小于等于买入队列中买一的最高价格,则进行撮合,否则只能将该卖出委托按照撮合原则插入到卖出队列;如果买入队列为空,则直接将该卖出委托按照撮合原则插入到卖出队列。
[0020]进一步地,撮合引擎的撮合顺序为:
[0021]当撮合引擎接收到新的买入订单时会到卖出队列的头部查找是否存在符合价格规则的卖出订单,如果存在卖出价格小于或等于买入价格的订单,则从卖出队列中取出此订单并撮合成一笔交易;如果卖出队列为空或卖出队列头部不满足价格关系,则将买入订单插入买入队列中,新插入的买入订单经过一次排序后插入买入队列;
[0022]当撮合引擎接收到新的卖出订单时会到买入队列的头部査找是否存在符合价格规则的买入订单,如果存在买入价格大于或等于卖出价格的订单,则从订单队列中取出此订单并撮合成一笔交易;如果买入队列为空或买入队列头部不满足价格关系,则将卖出订单插入到卖出队列中,新插入的卖出订单经过一次排序后插入到卖出队列。
[0023]进一步地,撮合引擎以互为备份的方式部署撮合引擎集群的多机热备份,并且在同一时间内由一台撮合引擎提供服务,当该撮合引擎出现故障无法继续正常工作时,撮合引擎集群会迅速检测到该故障并选举出一台备份撮合引擎接管故障撮合引擎的任务从而保证整个撮合系统的正常运行。
[0024]进一步地,撮合引擎集群以内存状态机复制的方式将所运行的撮合算法定义为确定性状态机并将其复制多份部署到中撮合引擎集群的多台撮合引擎中,每个撮合引擎上的撮合算法副本从相同的初始状态开始运行,当撮合引擎集群收到网关集群发来的买卖订单时,每个撮合引擎都会撮合该买卖订单并依次产生交易记录,同时更新确定性撮合算法状态机的独立状态,当撮合引擎集群正常运转时,每个撮合引擎上的撮合算法副本都会具有
相同的结果状态,当撮合引擎集群出现故障或异常时,各撮合引擎会出现状态的不一致情况从而断定系统异常。
[0025]进一步地,内存状态机复制的方式包括采用原子多播解决撮合引擎订单的可靠多播与全局有序性,采用基于无锁订单队列的流水线撮合技术提供快速的订单撮合,采用异步一致性持久化技术实现与数据库的交互,采用失效备援技术对撮合引擎集群进行状态监控并保证系统的容错能力,采用进度追赶技术解决将故障撮合引擎的恢复或新撮合引擎的加入。
[0026]进一步地,数据库在订单表建立索引提高查询效率,索引为单索引。
[0027]本专利技术的一种基于内存算法的撮合系统提出了基于多层分布式体系,利用J2EE技术进行设计和实现,采用最新的内存撮合技术,利用多级存储模式提高系统运行效率,构建了一种高性能、高可靠性和高扩展性的交易撮合系统。
附图说明
[0028]下面结合附图对本专利技术作进一步描写和阐述。
[0029]图1是本专利技术首本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于内存算法的撮合系统,其特征在于,包括:交易层:包括移动APP、PC端和Web端的客户终端,具备编程接口,最终用户可以通过客户终端进行撮合委托、委托查询、出入金的操作;接口层:包括网关集群,具备产品规则转发模块,用户的商品查询、下单等请求派发给业务层,并把产生的行情反馈给交易层;业务层:包括若干撮合引擎部署成的撮合引擎集群,用于接收订单并根据业务逻辑实现订单撮合同时生成交易记录,随后给予用户交易结果反馈;数据层:包括数据库(DB)和文件系统,具备异步数据持久化模块,用于存储商品信息、交易信息、资金信息、用户信息并进行持久化,缓存会对行情进行存储以减轻数据库的压力。2.根据权利要求1所述的一种基于内存算法的撮合系统,其特征在于,所述撮合引擎包括撮合引擎由原子多播订单定序模块、撮合处理模块、交易记录日志模块和内存数据,所述撮合引擎的撮合逻辑过程在服务器的内存上运行;所述原子多播订单定序模块包括交易订单接收线程、交易订单发送线程和交易信息发送线程;所述撮合处理模块包括外围业务逻辑线程、撮合业务逻辑线程、交易行情发布线程和交易行情发布线程;所述交易记录日志模块包括同步日志写线程、异步持久化代理线程;所述内存数据包括订单信息、交易行情信息。3.根据权利要求1所述的一种基于内存算法的撮合系统,其特征在于,所述撮合引擎对买卖订单进行撮合最后形成交易记录,所述撮合引擎对无法立刻完成撮合的订单建立买入队列和卖出队列以保存订单,所述买入队列和卖出队列按照价格优先、同价格下时间优先原则排序,所述买入队列按照委托价格从高到低的顺序,所述卖出队列按照委托价格从低到高的顺序排列。4.根据权利要求3所述的一种基于内存算法的撮合系统,其特征在于,所述撮合引擎对买卖订单的新进交易委托进行分类处理,处理方式包括:当新进的是买入市价委托:如果卖出队列中有市价委托,则对它们进行撮合;如果卖出队列中的市价委托全部撮合后,该买入委托还有可交易数量,则和卖出队列中的限价委托撮合;如果卖出队列中没有市价委托,则直接和卖出队列中的限价委托进行撮合;如果卖出队列为空,则只是将该买入委托插入买入队列;当新进的是买入限价委托:如果卖出队列中有市价委托,则先对它们进行撮合;如果市价委托全部撮合完毕后该买入委托还存在可交易数量且价格大于等于卖出队列中的卖一最低价格,则继续跟限价委托撮合;如果卖出队列中只有限价委托且该买入委托的价格大于等于卖出队列中卖一的最低价格,则对它们进行撮合,否则只能将该买入委托按照撮合原则插入到买入队列;如果卖出队列为空,则直接将该买入委托按照撮合原则插入到买入队列;当新进的是卖出市价委托:如果买入队列有市价委托,则进行撮合;如果撮合后该卖出队列还有未成交量,则和买入队列中限价委托撮合;如果买入队列中仅有限价委托,则和限价委托撮合;如果买入队列为空,则将该卖出委托插入到卖出队列中;
当新进的是卖出限价...

【专利技术属性】
技术研发人员:李伟山
申请(专利权)人:江苏点石乐投科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1