一种模拟炒股撮合系统和装置的制作方法

文档序号:20205199发布日期:2020-03-27 22:33阅读:1187来源:国知局
一种模拟炒股撮合系统和装置的制作方法

本发明涉及虚拟金融交易系统领域,具体涉及一种模拟炒股撮合系统和装置。



背景技术:

投资有风险,入市需谨慎,因此对于刚入门的投资者来说,需要学习投资技巧和提高投资心理素质。模拟炒股系统提供真实的股市行情场景,股票投资者在其中进行仿真度很高的虚拟交易,可以获得接近真实的炒股体验。

模拟炒股系统由前端软件和后台组成,用户通过安装在电脑或者手机上的软件进行炒股的各项操作,比如行情查询、实时买入、预约买入、实时卖出、预约卖出、撤销等,操作指令通过网络发送至后台的服务器进行交易处理。后台服务器存有用户的虚拟账户信息,如资金信息、交易记录、股票持仓信息等,并且服务器还会实时导入真实的股市行情信息,当用户根据实时行情下单进行买卖交易时,服务器会根据买卖单与实时行情进行匹对,满足交易条件的买卖单会被撮合成交。

目前的模拟炒股撮合系统大多是基于扫描数据库表的方式进行撮合成交的。用户下的买卖单被存入数据库,撮合系统每隔几秒扫描买卖单表并根据当前行情中的价和量进行匹对,若达到双方成交条件则撮合成交。这种每隔几秒扫描买卖单表进行撮合的方式非常依赖于数据库的处理能力,因为用户下单时需读写买卖单表,撮合成交也需读写买卖单表。随着用户买卖单的数量不断增加,撮合成交能力就会出现性能瓶颈,尤其是集合竞价阶段要撮合大量的买卖单,从而不能满足互联网下大量用户买卖单的撮合成交需求,用户最明显的体验是用户的操作指令响应严重延迟。

这种每隔几秒扫描买卖单表进行撮合的方式主要缺点有:每隔几秒扫描,不能及时进行撮合处理;买卖单表是查询、下单和撮合成交的热点表,容易造成锁表,尤其是开盘集合竞价阶段,读写性能出现瓶颈;数据库表容量有限,在这种撮合系统结构下,大量用户操作买卖单很容易达到系统承受上限,扩容成本高。



技术实现要素:

本发明要解决的技术问题是:提供一种基于消息队列与高速缓存的模拟炒股撮合系统,改变传统的在数据库中全流程完成下单、交易、修改和保存记录的方式;本系统将现有技术中集中于数据库服务器的功能模块划分至其他服务器处理,以解耦交易处理过程,以提高在高峰流量期间i/o阻塞造成的系统承压能力;本发明还提供一种具有该模拟炒股撮合系统的装置。

一种模拟炒股撮合系统,包括路由服务器、至少一台撮合服务器和数据库服务器;

路由服务器用于接收买卖单、根据买卖单生成订单消息并分配至一台撮合服务器;

撮合服务器用于根据订单消息与实时行情进行撮合交易,并将交易数据发送给数据库服务器;

数据库服务器用于根据交易数据修改并保存用户信息;

以一个用户的买卖单为例:

用户在前端软件上填写买卖单,买卖单包含股票交易的各种买卖要素,如买卖方向类型、证券代码、买卖价格、买卖数量等,同时买卖单还包含用户id、资金账号、拟交易股票代码等信息,买卖单在前端软件提交后,被发往路由服务器;

路由服务器将接收到的买卖单更新为订单消息,并根据路由算法将订单消息分配给一台撮合服务器;

然后路由服务器将该买卖单形成的订单消息根据路由算法被发送至一台撮合服务器请求处理;

撮合服务器将订单消息与实时行情进行比对,满足交易条件的撮合成交,并将交易数据发送给数据库服务器;

数据库服务器接收到交易数据后,将交易记录写入数据库,并修改该用户的信息,如资金信息、持股信息等。

优选的,撮合服务器配置有行情缓存,行情缓存用于存储实时股票行情信息;

这里的实时股票行情信息与股票交易所的行情信息是同步更新的,在本发明中进行的任何一笔虚拟交易都需要扫描行情信息进行比对撮合,因此将实时行情信息专门设置独立的物理缓存或缓存分区将有效提高撮合服务器的撮合效率。

优选的,撮合服务器还配置有资金账户缓存,资金账户缓存用于临时存储用户的资金账户余额信息。

优选的,撮合服务器还配置有持仓缓存,持仓缓存用于临时存储用户的股票持仓信息;

实时行情信息、资金账户余额信息和用户股票持仓信息是交易过程中最常用的变量信息,因而设计专属缓存可以有效地降低读写数据库的i/o压力,提高其并发读的效率以及缓存命中率。

优选的,撮合服务器安装有撮合程序和组包程序;

撮合程序用于将订单消息与实时行情进行比对,并将其中满足成交条件的订单信息更新为成交消息;

组包程序用于将成交消息分解生成多个数据库指令,并将数据库指令组包成为写库消息向数据库服务器发送;

组包程序将每个订单的交易信息被更新为包含交易流水、变更资金、变更持仓等sql语句的sql封包,每500单位的sql封包被组装为一个sql批量包,完成组包;

本实施例采用的是sql数据库。

优选的,撮合服务器还配置有撮合队列和成交队列;

撮合队列用于接收和存储由路由服务器发送的订单消息,撮合程序遍历撮合队列中的订单消息与实时行情进行比对,并将成交消息写入成交队列;

未成交的订单消息将重新进入撮合队列等待下一轮撮合。

优选的,撮合服务器还配置有写库队列;

写库队列用于存储写库消息,即加载有sql批量包的写库消息被存储于写库队列中,并根据组包程序的指令将写库消息定期批量向数据库服务器发送;

优选的,数据库服务器配置有入库队列并安装有入库程序;

入库队列用于接收写库消息,入库程序遍历入库队列中的写库消息,将写库消息中的数据库指令批量写入、修改数据库数据,这种批量sql入库方式提高了每秒入库吞吐量,提升了写库效率。

优选的,路由服务器配置有路由队列并安装有路由程序;

这种方式适合于多台撮合服务器并行设置的系统中,路由队列用于接收和存储用户发送的大量买卖单,路由程序遍历路由队列中的买卖单生成订单消息,并根据各撮合服务器的负载状态进行路由分配。

本发明还公开了一种模拟炒股撮合装置,包括路由服务器、至少一台撮合服务器和数据库服务器;

路由服务器用于接收买卖单、根据买卖单生成订单消息并分配至一台撮合服务器;

撮合服务器用于根据订单消息与实时行情进行撮合交易,并将交易数据发送给数据库服务器;

数据库服务器用于根据交易数据修改并保存用户信息;

以一个用户的买卖单为例:

用户在前端软件上填写买卖单,买卖单包含股票交易的各种买卖要素,如买卖方向类型、证券代码、买卖价格、买卖数量等,同时买卖单还包含用户id、资金账号、拟交易股票代码等信息,买卖单在前端软件提交后,被发往路由服务器;

路由服务器将接收到的买卖单更新为订单消息,并根据路由算法将订单消息分配给一台撮合服务器;

然后路由服务器将该买卖单形成的订单消息根据路由算法被发送至一台撮合服务器请求处理;

撮合服务器将订单消息与实时行情进行比对,满足交易条件的撮合成交,并将交易数据发送给数据库服务器;

数据库服务器接收到交易数据后,将交易记录写入数据库,并修改该用户的信息,如资金信息、持股信息等。

优选的,撮合服务器配置有行情缓存,行情缓存用于存储实时股票行情信息;

这里的实时股票行情信息与股票交易所的行情信息是同步更新的,在本发明中进行的任何一笔虚拟交易都需要扫描行情信息进行比对撮合,因此将实时行情信息专门设置独立的物理缓存或缓存分区将有效提高撮合服务器的撮合效率。

优选的,撮合服务器还配置有资金账户缓存,资金账户缓存用于临时存储用户的资金账户余额信息。

优选的,撮合服务器还配置有持仓缓存,持仓缓存用于临时存储用户的股票持仓信息;

实时行情信息、资金账户余额信息和用户股票持仓信息是交易过程中最常用的变量信息,因而设计专属缓存可以有效地降低读写数据库的i/o压力,提高其并发读的效率以及缓存命中率。

优选的,撮合服务器安装有撮合程序和组包程序;

撮合程序用于将订单消息与实时行情进行比对,并将其中满足成交条件的订单信息更新为成交消息;

组包程序用于将成交消息分解生成多个数据库指令,并将数据库指令组包成为写库消息向数据库服务器发送;

组包程序将每个订单的交易信息被更新为包含交易流水、变更资金、变更持仓等sql语句的sql封包,每500单位的sql封包被组装为一个sql批量包,完成组包;

本实施例采用的是sql数据库。

优选的,撮合服务器还配置有撮合队列和成交队列;

撮合队列用于接收和存储由路由服务器发送的订单消息,撮合程序遍历撮合队列中的订单消息与实时行情进行比对,并将成交消息写入成交队列;

未成交的订单消息将重新进入撮合队列等待下一轮撮合。

优选的,撮合服务器还配置有写库队列;

写库队列用于存储写库消息,即加载有sql批量包的写库消息被存储于写库队列中,并根据组包程序的指令将写库消息定期批量向数据库服务器发送;

优选的,数据库服务器配置有入库队列并安装有入库程序;

入库队列用于接收写库消息,入库程序遍历入库队列中的写库消息,将写库消息中的数据库指令批量写入、修改数据库数据,这种批量sql入库方式提高了每秒入库吞吐量,提升了写库效率。

优选的,路由服务器配置有路由队列并安装有路由程序;

这种方式适合于多台撮合服务器并行设置的系统中,路由队列用于接收和存储用户发送的大量买卖单,路由程序遍历路由队列中的买卖单生成订单消息,并根据各撮合服务器的负载状态进行路由分配。

本发明的有益效果是,利用消息队列的异步处理模式,以缓解高峰流量期间i/o阻塞造成的系统承压能力;买卖单、成交消息、写库消息等在消息队列中流转,各处理过程解耦,利于功能模块划分;与现有技术相比,将流程分解之后,缓解了单个流程的处理能力瓶颈;通过路由程序对新生成的买卖单进行分配,缓解了单个撮合运算主机的压力,并可以通过增加撮合运算主机进行扩容,充分解决现有技术存在的缺陷;处理程序直接从对应缓存区调取所需,提高了并发读的效率以及缓存命中率。

附图说明

下面结合附图1-3对本发明一种模拟炒股撮合系统和装置作进一步说明。

图1是本发明一种模拟炒股撮合系统和装置的系统拓扑图。

图2是本发明一种模拟炒股撮合系统和装置的流程图。

图3是本发明一种模拟炒股撮合系统和装置的买卖单样例。

图中:

100-路由服务器,200-撮合服务器,300-数据库服务器,1-买卖单,11-订单消息,12-成交消息,13-写库消息,21-行情缓存,22-资金账户缓存,23-持仓缓存,31-撮合程序,32-组包程序,33-入库程序,34-路由程序,41-撮合队列,42-成交队列,43-写库队列,44-入库队列,45-路由队列。

本发明的术语说明:

撮合:指在多方交易中,存在中间一方将多方的信息集中起来,然后将信息进行匹配,以便达到多方对信息的需求。在本发明中,指撮合运算程序将多个用户的订单与实时行情集中处理,按照交易规则对买卖交易进行匹配。

具体实施方式

一种模拟炒股撮合系统,包括路由服务器100、至少一台撮合服务器200和数据库服务器300;

路由服务器100用于接收买卖单1、根据买卖单1生成订单消息11并分配至一台撮合服务器200;

撮合服务器200用于根据订单消息11与实时行情进行撮合交易,并将交易数据发送给数据库服务器300;

数据库服务器300用于根据交易数据修改并保存用户信息;

以一个用户的买卖单为例:

用户在前端软件上填写买卖单1,买卖单1包含股票交易的各种买卖要素,如买卖方向类型、证券代码、买卖价格、买卖数量等,同时买卖单1还包含用户id、资金账号、拟交易股票代码等信息,买卖单1在前端软件提交后,被发往路由服务器100;

路由服务器100将接收到的买卖单1更新为订单消息11,并根据路由算法将订单消息11分配给一台撮合服务器200;

然后路由服务器100将该买卖单形成的订单消息根据路由算法被发送至一台撮合服务器200请求处理;

撮合服务器200将订单消息11与实时行情进行比对,满足交易条件的撮合成交,并将交易数据发送给数据库服务器300;

数据库服务器300接收到交易数据后,将交易记录写入数据库,并修改该用户的信息,如资金信息、持股信息等。

本实施例中,撮合服务器200配置有行情缓存21,行情缓存21用于存储实时股票行情信息;

这里的实时股票行情信息与股票交易所的行情信息是同步更新的,在本发明中进行的任何一笔虚拟交易都需要扫描行情信息进行比对撮合,因此将实时行情信息专门设置独立的物理缓存或缓存分区将有效提高撮合服务器200的撮合效率。

本实施例中,撮合服务器200还配置有资金账户缓存22,资金账户缓存22用于临时存储用户的资金账户余额信息。

本实施例中,撮合服务器200还配置有持仓缓存23,持仓缓存23用于临时存储用户的股票持仓信息;

实时行情信息、资金账户余额信息和用户股票持仓信息是交易过程中最常用的变量信息,因而设计专属缓存可以有效地降低读写数据库的i/o压力,提高其并发读的效率以及缓存命中率。

本实施例中,撮合服务器200安装有撮合程序31和组包程序32;

撮合程序31用于将订单消息11与实时行情进行比对,并将其中满足成交条件的订单信息更新为成交消息12;

组包程序32用于将成交消息12分解生成多个数据库指令,并将数据库指令组包成为写库消息13向数据库服务器300发送;

组包程序32将每个订单的交易信息被更新为包含交易流水、变更资金、变更持仓等sql语句的sql封包,每500单位的sql封包被组装为一个sql批量包,完成组包;

本实施例采用的是sql数据库。

本实施例中,撮合服务器200还配置有撮合队列41和成交队列42;

撮合队列41用于接收和存储由路由服务器100发送的订单消息11,撮合程序31遍历撮合队列41中的订单消息11与实时行情进行比对,并将成交消息12写入成交队列42;

未成交的订单消息11将重新进入撮合队列41等待下一轮撮合。

本实施例中,撮合服务器200还配置有写库队列43;

写库队列43用于存储写库消息13,即加载有sql批量包的写库消息13被存储于写库队列43中,并根据组包程序32的指令将写库消息13定期批量向数据库服务器300发送;

本实施例中,数据库服务器300配置有入库队列44并安装有入库程序33;

入库队列44用于接收写库消息13,入库程序33遍历入库队列44中的写库消息13,将写库消息13中的数据库指令批量写入、修改数据库数据,这种批量sql入库方式提高了每秒入库吞吐量,提升了写库效率。

本实施例中,路由服务器100配置有路由队列45并安装有路由程序34;

这种方式适合于多台撮合服务器200并行设置的系统中,路由队列45用于接收和存储用户发送的大量买卖单1,路由程序34遍历路由队列45中的买卖单1生成订单消息11,并根据各撮合服务器200的负载状态进行路由分配。

本发明还公开了一种模拟炒股撮合装置,包括路由服务器100、至少一台撮合服务器200和数据库服务器300;

路由服务器100用于接收买卖单1、根据买卖单1生成订单消息11并分配至一台撮合服务器200;

撮合服务器200用于根据订单消息11与实时行情进行撮合交易,并将交易数据发送给数据库服务器300;

数据库服务器300用于根据交易数据修改并保存用户信息;

以一个用户的买卖单为例:

用户在前端软件上填写买卖单1,买卖单1包含股票交易的各种买卖要素,如买卖方向类型、证券代码、买卖价格、买卖数量等,同时买卖单1还包含用户id、资金账号、拟交易股票代码等信息,买卖单1在前端软件提交后,被发往路由服务器100;

路由服务器100将接收到的买卖单1更新为订单消息11,并根据路由算法将订单消息11分配给一台撮合服务器200;

然后路由服务器100将该买卖单形成的订单消息根据路由算法被发送至一台撮合服务器200请求处理;

撮合服务器200将订单消息11与实时行情进行比对,满足交易条件的撮合成交,并将交易数据发送给数据库服务器300;

数据库服务器300接收到交易数据后,将交易记录写入数据库,并修改该用户的信息,如资金信息、持股信息等。

本实施例中,撮合服务器200配置有行情缓存21,行情缓存21用于存储实时股票行情信息;

这里的实时股票行情信息与股票交易所的行情信息是同步更新的,在本发明中进行的任何一笔虚拟交易都需要扫描行情信息进行比对撮合,因此将实时行情信息专门设置独立的物理缓存或缓存分区将有效提高撮合服务器200的撮合效率。

本实施例中,撮合服务器200还配置有资金账户缓存22,资金账户缓存22用于临时存储用户的资金账户余额信息。

本实施例中,撮合服务器200还配置有持仓缓存23,持仓缓存23用于临时存储用户的股票持仓信息;

实时行情信息、资金账户余额信息和用户股票持仓信息是交易过程中最常用的变量信息,因而设计专属缓存可以有效地降低读写数据库的i/o压力,提高其并发读的效率以及缓存命中率。

本实施例中,撮合服务器200安装有撮合程序31和组包程序32;

撮合程序31用于将订单消息11与实时行情进行比对,并将其中满足成交条件的订单信息更新为成交消息12;

组包程序32用于将成交消息12分解生成多个数据库指令,并将数据库指令组包成为写库消息13向数据库服务器300发送;

组包程序32将每个订单的交易信息被更新为包含交易流水、变更资金、变更持仓等sql语句的sql封包,每500单位的sql封包被组装为一个sql批量包,完成组包;

本实施例采用的是sql数据库。

本实施例中,撮合服务器200还配置有撮合队列41和成交队列42;

撮合队列41用于接收和存储由路由服务器100发送的订单消息11,撮合程序31遍历撮合队列41中的订单消息11与实时行情进行比对,并将成交消息12写入成交队列42;

未成交的订单消息11将重新进入撮合队列41等待下一轮撮合。

本实施例中,撮合服务器200还配置有写库队列43;

写库队列43用于存储写库消息13,即加载有sql批量包的写库消息13被存储于写库队列43中,并根据组包程序32的指令将写库消息13定期批量向数据库服务器300发送;

本实施例中,数据库服务器300配置有入库队列44并安装有入库程序33;

入库队列44用于接收写库消息13,入库程序33遍历入库队列44中的写库消息13,将写库消息13中的数据库指令批量写入、修改数据库数据,这种批量sql入库方式提高了每秒入库吞吐量,提升了写库效率。

本实施例中,路由服务器100配置有路由队列45并安装有路由程序34;

这种方式适合于多台撮合服务器200并行设置的系统中,路由队列45用于接收和存储用户发送的大量买卖单1,路由程序34遍历路由队列45中的买卖单1生成订单消息11,并根据各撮合服务器200的负载状态进行路由分配。

需要说明的是:以上的实施例仅仅是本发明一部分实施例,而不是全部的实施例。实施例和所附权利要求书中所使用的单数形式的“第一”、“第二”、“一种”、“本”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。“第一”和“第二”只是为了说明的方便,不表示有先后顺序之分。

本发明不局限于上述实施例,本发明的上述各个实施例的技术方案彼此可以交叉组合形成新的技术方案,另外凡采用等同替换形成的技术方案,均落在本发明要求的保护范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1