CN112199213B - 一种挂单交互数据的数据交互方法及服务器 - Google Patents
一种挂单交互数据的数据交互方法及服务器 Download PDFInfo
- Publication number
- CN112199213B CN112199213B CN202011066178.8A CN202011066178A CN112199213B CN 112199213 B CN112199213 B CN 112199213B CN 202011066178 A CN202011066178 A CN 202011066178A CN 112199213 B CN112199213 B CN 112199213B
- Authority
- CN
- China
- Prior art keywords
- interaction
- data
- queue
- matching
- value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 230000003993 interaction Effects 0.000 title claims abstract description 638
- 238000000034 method Methods 0.000 title claims abstract description 76
- 230000015654 memory Effects 0.000 claims abstract description 102
- 238000012545 processing Methods 0.000 claims abstract description 50
- 238000003860 storage Methods 0.000 claims abstract description 21
- 238000004590 computer program Methods 0.000 claims description 19
- 238000004891 communication Methods 0.000 claims description 11
- 230000001172 regenerating effect Effects 0.000 claims description 5
- 238000011084 recovery Methods 0.000 abstract description 22
- 230000008569 process Effects 0.000 abstract description 21
- 230000007246 mechanism Effects 0.000 abstract description 13
- 238000009826 distribution Methods 0.000 abstract description 5
- 230000002452 interceptive effect Effects 0.000 description 15
- 238000010586 diagram Methods 0.000 description 13
- 239000007787 solid Substances 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 208000000044 Amnesia Diseases 0.000 description 1
- 208000026139 Memory disease Diseases 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000002045 lasting effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000006984 memory degeneration Effects 0.000 description 1
- 208000023060 memory loss Diseases 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Business, Economics & Management (AREA)
- General Engineering & Computer Science (AREA)
- Accounting & Taxation (AREA)
- Software Systems (AREA)
- Databases & Information Systems (AREA)
- Finance (AREA)
- Development Economics (AREA)
- Quality & Reliability (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Technology Law (AREA)
- General Business, Economics & Management (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供的挂单交互数据的数据交互方法及服务器,能够在第二服务器中对第一服务器中的挂单交互数据进行撮合,进而使得客户挂单的交互数据或者计算机进行投票机制产生的数据进行数据交互操作,通过将数据本身存储在第一服务器,交互过程在第二服务器中进行,进而将动态撮合分布部署于不同设备,实现物理设备独立,形成了第一服务器‑第二服务器的多级存储模式,能够实现快速的故障恢复,避免内存宕机引发的数据丢失等问题,通过不同产品路由到不同设备,实现负载均衡处理。
Description
技术领域
本发明涉及数据撮合技术领域,具体涉及一种挂单交互数据的数据交互方法及服务器。
背景技术
数据撮合交互可以应用于多个场景,例如拍卖、电子交易等,以金融产品的电子交易为例,金融产品一般在存续期内不允许客户赎回变现,客户在投资风险偏好发生变化或遇突发事件急需资金时,面临产品变现问题。现行的撮合交易模式在高效、安全等方面无法完全满足,如何构建高效、安全的电子交易平台,成为撮合模式需要解决的重要问题。
发明内容
针对现有技术中的问题,本发明实施例提供一种挂单交互数据的数据交互方法及服务器,能够至少部分地解决现有技术中存在的问题。
一方面,本发明提供一种挂单交互数据的数据交互方法,所述数据交互方法由第二服务器执行,包括:
读取第一服务器中的每个第一终端的第一挂单交互数据和每个第二终端的第二挂单交互数据;
对第一挂单交互数据进行排序形成第一交互队列,对第二挂单数据进行排序形成第二交互队列;
对所述第一交互队列和所述第二交互队列进行撮合处理,以使所述第一交互队列中达成撮合条件的第一挂单交互数据与对应撮合的所述第二交互队列中达成撮合条件的第二挂单交互数据执行数据交互操作。
在优选的实施例中,所述第一服务器包括第一存储器,所述第一存储器为磁盘存储器,所述磁盘存储器中设置数据库;相对应地,所述读取第一服务器中的每个第一终端的第一挂单交互数据和每个第二终端的第二挂单交互数据,包括:
读取存储在所述数据库中第一终端的第一挂单交互数据和第二终端的第二挂单交互数据;
所述第二服务器包括第二存储器,所述第二存储器为随机存储器;相对应地,所述在第二服务器中对客户的挂单交互数据进行排序,包括:
在所述随机存储器中对第一挂单交互数据进行排序形成第一交互队列;
所述在第二服务器中对所述第一交互队列和所述第二交互队列进行撮合处理,包括:
在随机存储器中对所述第一交互队列和所述第二交互队列进行撮合处理。
所述第一挂单交互数据包括一设定标的的第一数值和第一数量,所述第二挂单交互数据包括所述设定标的的第二数值和第二数量,所述达成撮合条件为所述第一数值与第二数值,或者所述第一数量和第二数量满足设定要求;在对所述第一交互队列和所述第二交互队列进行撮合处理,包括:
根据所述第一数值、所述第二数值和所述设定要求从所述第一交互队列和所述第二交互队列中分别确定出达成撮合条件的所述第一挂单交互数据和所述第二挂单交互数据;
修改第一终端下该设定标的的总数量为原总数量与该第二挂单交互数据对应数量的总和,并修改第二终端下该设定标的的总数量为原总数量与该第二挂单交互数据对应数量的差值;
剔除完成撮合的第一挂单数据和第二挂单数据,并重新生成第一交互队列和第二交互队列,重复撮合所述第一交互队列中的第一挂单交互数据以及所述第二交互队列中的第二挂单交互数据,直至其中一个交互队列中无达成撮合条件的挂单交互数据。在优选的实施例中,根据所述第一数值、所述第二数值和所述设定要求从所述第一交互队列和所述第二交互队列中分别确定出达成撮合条件的所述第一挂单交互数据和所述第二挂单交互数据,包括:
分别从所述第一交互队列和所述第二交互队列中将数值相等的所述第一挂单交互数据和所述第二挂单交互数据确定为当前撮合的数据。
在优选的实施例中,根据所述数所述设定要求为所述第一数值和第二数值相等,所述根据所述第一数值、所述第二数值和设定要求从所述第一交互队列和所述第二交互队列中分别确定出达成撮合条件的所述第一挂单交互数据和所述第二挂单交互数据,包括:
分别从所述第一交互队列和所述第二交互队列中将相等的所述第一数值和第二数值所对应的所述第一挂单交互数据和所述第二挂单交互数据确定为达成撮合条件的第一挂单交互数据和第二挂单交互数据。
在优选的实施例中,所述设定要求为所述第一交互队列中数值最高的第一数值高于第二交互队列中数值最低的第二数值;所述根据所述第一数值、所述第二数值和所述设定要求从所述第一交互队列和所述第二交互队列中分别确定出达成撮合条件的所述第一挂单交互数据和所述第二挂单交互数据,包括:
对所述第一交互队列中数值最高的第一数值与第二交互队列中数值最低的第二数值进行比对,若前者的数值高于后者的数值,将该数值最高的第一数值对应的第一挂单交互数据以及数值最低的第二数值对应的第二挂单交互数据确定为达成撮合条件的第一挂单交互数据和第二挂单交互数据。
在优选的实施例中,所述设定要求为与撮合标定数据数值相同的数据,所述撮合标定数据为所述第一交互队列和所述第二交互队列中同一数值对应数量最多的挂单交互数据,所述根据所述数值和所述设定要求从所述第一交互队列和所述第二交互队列中分别确定出达成撮合条件的所述第一挂单交互数据和所述第二挂单交互数据,还包括:
将该同一数值对应的所有挂单交互数据确定为达成撮合条件的第一挂单交互数据和第二挂单交互数据。
在优选的实施例中,根据所述第一数值、所述第二数值和所述设定要求从所述第一交互队列和所述第二交互队列中分别确定出达成撮合条件的所述第一挂单交互数据和所述第二挂单交互数据,还包括:
获取上一时间间隔内的撮合标定数据对应的数据值;
若上一时间间隔内的撮合标定数据对应的数据值大于第一交互队列中的最高值和第二交互队列中的最低值,则将该第一交互队列中对应的最高值确定为当前时间间隔内撮合标定数据对应的数据值;
若上一时间间隔内的撮合标定数据对应的数据值小于第一交互队列中的最高值并且大于第二交互队列中的最低值,则将上一时间间隔内的撮合标定数据对应的数据值确定为当前时间间隔内撮合标定数据对应的数据值;
若第一交互队列中的最高值大于第二交互队列中的最低值,并且第二交互队列中的最低值大于上一时间间隔内的撮合标定数据对应的数据值,则将所述第二交互队列中的最低值确定当前时间间隔内撮合标定数据对应的数据值。
在优选的实施例中,还包括:
将每次撮合成功的撮合记录发送至一服务器,以使所述服务器记录撮合处理的结果,并生成日志文件,所述撮合记录包括已达成撮合的第一挂单交互数据和第二挂单交互数据。
在优选的实施例中,还包括:
将剔除的所述第一挂单交互数据和所述第二挂单交互数据发送至所述第一服务器,以使所述第一服务器更新所述第一挂单交互数据和所述第二挂单交互数据。
另一方面,本发明提供一种挂单交互数据的数据交互装置,包括:
读取模块,读取第一服务器中的每个第一终端的第一挂单交互数据和每个第二终端的第二挂单交互数据;
排序模块,对第一挂单交互数据进行排序形成第一交互队列,对第二挂单数据进行排序形成第二交互队列;
撮合模块,对所述第一交互队列和所述第二交互队列进行撮合处理,以使所述第一交互队列中达成撮合条件的第一挂单交互数据与对应撮合的所述第二交互队列中达成撮合条件的第二挂单交互数据执行数据交互操作。
在优选的实施例中,所述第一服务器包括第一存储器,所述第一存储器为磁盘存储器,所述磁盘存储器中设置数据库;相对应地,所述读取模块具体用于读取存储在所述数据库中第一终端的第一挂单交互数据和第二终端的第二挂单交互数据。
在优选的实施例中,所述第二服务器包括第二存储器,所述第二存储器为随机存储器;相对应地,所述排序模块具体用于在所述随机存储器中对第一挂单交互数据进行排序形成第一交互队列;
所述撮合模块具体用于在随机存储器中对所述第一交互队列和所述第二交互队列进行撮合处理。
在优选的实施例中,所述第一挂单交互数据包括一设定标的的第一数值和第一数量,所述第二挂单交互数据包括所述设定标的的第二数值和第二数量,所述达成撮合条件为所述第一数值与第二数值,或者所述第一数量和第二数量满足设定要求;所述撮合模块具体包括:
确定单元,根据所述第一数值、所述第二数值和所述设定要求从所述第一交互队列和所述第二交互队列中分别确定出达成撮合条件的所述第一挂单交互数据和所述第二挂单交互数据;
数值修改单元,修改第一终端下该设定标的的总数量为原总数量与该第二挂单交互数据对应数量的总和,并修改第二终端下该设定标的的总数量为原总数量与该第二挂单交互数据对应数量的差值;
迭代单元,剔除完成撮合的第一挂单数据和第二挂单数据,并重新生成第一交互队列和第二交互队列,重复撮合所述第一交互队列中的第一挂单交互数据以及所述第二交互队列中的第二挂单交互数据,直至其中一个交互队列中无达成撮合条件的挂单交互数据。
在优选的实施例中,所述确定单元具体用于分别从所述第一交互队列和所述第二交互队列中将数值相等的所述第一挂单交互数据和所述第二挂单交互数据确定为当前撮合的数据。
在优选的实施例中,所述确定单元具体用于对所述第一交互队列中数值最高的第一数值与第二交互队列中数值最低的第二数值进行比对,若前者的数值高于后者的数值,将该数值最高的第一数值对应的第一挂单交互数据以及数值最低的第二数值对应的第二挂单交互数据确定为达成撮合条件的第一挂单交互数据和第二挂单交互数据。
在优选的实施例中,所述确定单元具体用于以所述第一交互队列和所述第二交互队列中同一数值对应数量最多的挂单交互数据为撮合标定数据,并将该同一数值对应的所有挂单交互数据确定为当前撮合的数据。
在优选的实施例中,所述确定单元具体包括:
撮合标定数据获取单元,获取上一时间间隔内的撮合标定数据对应的数据值;
当前撮合标定数据第一确定单元,若上一时间间隔内的撮合标定数据对应的数据值大于第一交互队列中的最高值和第二交互队列中的最低值,则将该第一交互队列中对应的最高值确定为当前时间间隔内撮合标定数据对应的数据值;
当前撮合标定数据第二确定单元,若上一时间间隔内的撮合标定数据对应的数据值小于第一交互队列中的最高值并且大于第二交互队列中的最低值,则将上一时间间隔内的撮合标定数据对应的数据值确定为当前时间间隔内撮合标定数据对应的数据值;
当前撮合标定数据第三确定单元,若第一交互队列中的最高值大于第二交互队列中的最低值,并且第二交互队列中的最低值大于上一时间间隔内的撮合标定数据对应的数据值,则将所述第二交互队列中的最低值确定当前时间间隔内撮合标定数据对应的数据值。
在优选的实施例中,还包括:
第一通讯模块,将每次撮合成功的撮合记录发送至一服务器,以使所述服务器记录撮合处理的结果,并生成日志文件,所述撮合记录包括已达成撮合的第一挂单交互数据和第二挂单交互数据。
在优选的实施例中,还包括:
第二通讯模块,将剔除的所述第一挂单交互数据和所述第二挂单交互数据发送至所述第一服务器,以使所述第一服务器更新所述第一挂单交互数据和所述第二挂单交互数据。
再一方面,本发明提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述任一实施例所述挂单交互数据的数据交互方法的步骤。
又一方面,本发明提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述任一实施例所述挂单交互数据的数据交互方法的步骤。
本发明实施例提供的挂单交互数据的数据交互方法及服务器,能够在第二服务器中对第一服务器中的挂单交互数据进行撮合,进而使得客户挂单的交互数据或者计算机进行投票机制产生的数据进行数据交互操作,通过将数据本身存储在第一服务器,交互过程在第二服务器中进行,进而将动态撮合分布部署于不同设备,实现物理设备独立,形成了第一服务器-第二服务器的多级存储模式,进而通过适当的数据异步同步机制即可实现快速的故障恢复,避免内存宕机引发的数据丢失等问题,通过不同产品路由到不同设备,实现负载均衡处理。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1是本发明一个实施例提供的挂单交互数据的数据交互方法的流程示意图。
图2是本发明另一个实施例提供的挂单交互数据的数据交互方法的流程示意图。
图3是本发明又一个实施例提供的挂单交互数据的数据交互方法的流程示意图。
图4是本发明又一个实施例提供的金融产品撮合系统多级存储模式的流程示意图。
图5是本发明又一个实施例提供的金融产品撮合系统故障恢复流程示意图。
图6是本发明又一个实施例提供的步骤S103的具体流程示意图。
图7是本发明又一个实施例提供的挂单交互数据实现数据交互的第二服务器的结构示意图之一。
图8是本发明又一个实施例提供的挂单交互数据实现数据交互的第二服务器的结构示意图之二。
图9是本发明又一个实施例提供的挂单交互数据实现数据交互的第二服务器的结构示意图之三。
图10是本发明又一个实施例提供的电子设备的实体结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
图1是本发明一个实施例提供的挂单交互数据的数据交互方法的流程示意图,如图1所示,本发明实施例提供的挂单交互数据的数据交互方法,包括:
S101、读取第一服务器中的每个第一终端的第一挂单交互数据和每个第二终端的第二挂单交互数据;
具体地,本发明中的交互数据可以是基于电子交易平台的金融产品数据,当然,也可以是实物数据,又或者是计算机程序的某些特定数据,本发明对此不作限制,但是可以理解,本发明具体用于数据的撮合交互,也即本发明中的交互数据服务于数据撮合,换而言之,本发明的数据撮合可以是金融产品的委托撮合(即委托买入和委托卖出),也可以是计算机中数据中具有撮合匹配机制的数据,例如计算机中一程序撮合产生当前最新值的场景中,例如区块链的相关投票场景,或者是具体处理过程的某一投票场景,可以通过两方数据的撮合形成类似于投票产生的数据值(例如票数数据),将该通过撮合形成的“投票”值作为最优化的数据值。
可以理解,本发明中的第一终端和第二终端即为两个终端设备,每个终端设备对应一个客户账号(例如第一终端对应第一客户,第二终端对应第二客户)或者对应区块链中的一个“节点”。
举例而言,在计算机的“投票”场景中,以区块链中某一事件的确定实施为例,由各终端处理器给出投票是的票数,票数的不同决定了对本次投票是的认可度的高低,每个终端具有相同的总票数,每一个“是”的投票可以抵消“否”的投票,然后通过投票来进行或者辅助进行区块链的共识操作。
此外,在一金融场景中,以一设定标的物委买和委卖为例,第一挂单交互数据可以是第一客户挂单产生的数据,第二挂单交互数据可以是第二客户挂单产生的数据,第一客户可以是委买客户或者委卖客户的其中一个,第二客户可以是委买客户或者委卖客户的其中另一个,举例而言,第一客户为委买客户,第二客户为委卖客户,那么相对应地,第一挂单交互数据是该设定标的物的委买数据,显然,委卖数据应当包含有委买的作价,以及委买的数量。同理,第二挂单交互数据是该设定标的物的委卖数据,显然,委卖数据也应当包含有委卖的作价和委卖的数量。
具体来说,以一金融产品作为设定标的为例,假设金融产品A的第一挂单交互数据包括:“以1元价格买入100个A”、“以2元价格买入100个A”、“以3元价格买入200个A”、“以4元价格买入200个A”以及“以5元价格买入250个A”,第二挂单交互数据包括:“以5元价格卖出300个A”、“以3元价格卖出300个A”、“以2元价格卖出50个A”以及“以1元价格卖出50个A”。
第一服务器可以是一服务器节点或者一服务器集群,本发明对此不作限制,可以理解的是,第一服务器包括第一存储器。在实际使用时,用户的挂单交互数据均存储在第一存储器内。
进一步的,第一存储器可以是市面上的任何类型的存储器,例如磁盘存储器、缓存存储器以及随机存储器等。磁盘存储器可以是机械式磁盘存储器(又称硬盘驱动器,缩写HDD,英文全称Hard Disk Drive),或者是固态电子存储芯片阵列制成的硬盘(固态驱动器,Solid State Disk或Solid State Drive,简称SSD)。
S102、在第二服务器中对第一挂单交互数据进行排序形成第一交互队列,对第二挂单数据进行排序形成第二交互队列;
具体地,对第一挂单交互数据进行排序形成第一交互队列,如果第一挂单交互数据本身包括有数值数据,例如上述的金融产品的价格,或者计算机投票中的某一数值,第一交互队列中的第一挂单交互数据可以按照从大到小的顺序排序或者从小到大的顺序排序,同理,第二交互队列中的第二挂单交互数据可以按照从大到小的顺序排序或者从小到大的顺序排序。
对于金融产品作为设定标的的实施例中,第一交互队列为委买队列,第二交互队列为委卖队列,一般而言,委买队列可以从高到低排列,委卖队列可以从低到高排列。
第二服务器可以是一服务器节点或者一服务器集群,本发明对此不作限制,可以理解的是,第二服务器包括第二存储器。在实际使用时,用户的挂单交互数据的排序和交互过程在第二存储器中进行。
进一步的,第二存储器可以是市面上的任何类型的存储器,例如磁盘存储器、缓存存储器以及随机存储器等。磁盘存储器可以是机械式磁盘存储器(又称硬盘驱动器,缩写HDD,英文全称Hard Disk Drive),或者是固态电子存储芯片阵列制成的硬盘(固态驱动器,Solid State Disk或Solid State Drive,简称SSD)。当然,可以理解,第一存储器和第二存储器是两个相互独立的存储器,其负载于不同设备上,例如一终端和一服务器,或者两个服务器等,本发明对此不作限制,只要第一存储器和第二存储器相互独立即可。
S103、在第二服务器中对所述第一交互队列和所述第二交互队列进行撮合处理,以使所述第一交互队列中达成撮合条件的第一挂单交互数据与对应撮合的所述第二交互队列中达成撮合条件的第二挂单交互数据执行数据交互操作。
具体地,本发明中的撮合处理具体可以为将第一交互队列中的一个或多个第一挂单交互数据与第二交互队列中的一个或多个第二挂单交互数据进行“匹配”,以计算机中的投票机制为例,第一挂单交互数据为投票给A的票数数据,第二挂单交互数据为投票给B的票数数据,则在计算机处理时,将每个投票为A的票数数据与投票给B的票数数据按照票数抵消,也即可以认为:产生抵消的两个挂单交互数据进行了“撮合”(或者称之为匹配)。
显然,由于每个挂单交互数据对应的票数数据不同,因此可以是一个第一挂单交互数据与至少一个第二挂单交互数据撮合,也可以是多个第一挂单交互数据与一个第二挂单交互数据撮合,更可以是多个第一挂单交互数据与多个第二挂单交互数据撮合,本发明对此不做限制。
进一步的,可以理解本发明中的“交互”可以是“抵消”(针对计算机投票机制)或者“成交”(针对金融产品实施例),当然,上述交互的定义仅仅是在已列举出的具体实施例中的具体体现,本发明中的交互应当具有更广义的含义,即只要发生了数据关联即可定义为本发明的数据交互,在此不做赘述。
本发明实施例提供的挂单交互数据的数据交互方法,能够在第二服务器中对第一服务器中挂单交互数据进行撮合,进而使得客户挂单的交互数据进行数据交互操作,通过将数据本身存储在第一服务器,交互过程在第二服务器中进行,进而将动态撮合分布部署于不同设备,实现物理设备独立,形成了第一服务器-第二服务器的多级存储模式,能够实现快速的故障恢复,避免内存宕机引发的数据丢失等问题,通过不同产品路由到不同设备,实现负载均衡处理。
在上述各实施例的基础上,进一步地,所述第一服务器包括第一存储器,所述第一存储器为磁盘存储器,所述磁盘存储器中设置数据库;相对应地,所述读取第一服务器中的每个第一终端的第一挂单交互数据和每个第二终端的第二挂单交互数据,包括:
读取存储在所述数据库中第一终端的第一挂单交互数据和第二终端的第二挂单交互数据。
具体地,由于第一服务器本身并不进行撮合处理或者排序处理,在本发明中,第一服务器属于“被读取”的存储器,因此对于存储器的运行性能不做限制,可以采用常规的磁盘存储器即可。
同理,所述第二服务器包括第二存储器,所述第二存储器为随机存储器;相对应地,所述在第二服务器中对客户的挂单交互数据进行排序,包括:
在所述随机存储器中对第一挂单交互数据进行排序形成第一交互队列;
所述在第二服务器中对所述第一交互队列和所述第二交互队列进行撮合处理,包括:
在随机存储器中对所述第一交互队列和所述第二交互队列进行撮合处理。
第二服务器涉及到本发明的排序以及撮合步骤,因此优选为性能较高的随机存储器(后续简称“内存”),在内存中进行数据的撮合和排序,能够大大加快处理过程,提高撮合的速度。
图2是本发明另一个实施例提供的挂单交互数据的数据交互方法的流程示意图,如图2所示,在上述各实施例的基础上,进一步地,本发明实施例提供的挂单交互数据的数据交互方法还包括:
S104、将每次撮合成功的撮合记录发送至一服务器,以使所述服务器记录撮合处理的结果,并生成日志文件,所述撮合记录包括已达成撮合的第一挂单交互数据和第二挂单交互数据。
具体地,每对撮合,写一个成交明细。写入文件时,根据撮合的时间,每隔一段时间生成一个文件,文件名以时间命名。IBM主机文件采用瞬时数据队列TDQ的方式,系统撮合成交后,将成交明细记录到TDQ当中,并由另外一个进程,从队列当中读取成交明细,将成交明细写入磁盘数据库。
图3是本发明又一个实施例提供的挂单交互数据的数据交互方法的流程示意图,如图3所示,在上述各实施例的基础上,进一步地,本发明实施例提供的挂单交互数据的数据交互方法还包括:
S105、将剔除的所述第一挂单交互数据和所述第二挂单交互数据发送至所述第一服务器,以使所述第一服务器更新所述第一挂单交互数据和所述第二挂单交互数据。
在上述内存-磁盘数据库的实施例中,系统接收客户委托申请单至磁盘数据库,读取委托申请单至内存,结合内存和文件实现外排序,根据排序结果构建买方和卖方队列数组,在内存中实现撮合成交处理,成交明细输出至日志文件服务器,通过数据库事务日志异步启动数据库写操作,更新磁盘数据库成交数据和委托单状态,根据成交数据实现撮合产品的资金和份额过户处理。
为了构建高效和安全的金融产品撮合系统,本发明构建了内存-文件服务器-磁盘数据库的多级存储模式,将买入卖出队列所在内存、日志成交文件所在文件服务器和委托单申请所在磁盘数据库物理设备独立,撮合方法采取内存撮合和数据库处理异步方式相结合,在动态撮合交易过程中,整个撮合处理涉及的有关数据全部组织在内存中,撮合过程不再访问磁盘数据库,撮合成交结果写入日志文件服务器,并以异步方式写回磁盘数据库,从而使撮合速度大大提高,内存数据与磁盘数据库中的数据保持异步更新,确保两者的一致性,同时通过磁盘数据库厂商提供的数据恢复机制,可以实现撮合系统快速的故障恢复,避免内存宕机引发的数据丢失等问题,通过不同产品路由到不同设备,实现负载均衡处理。
上述高效撮合系统的核心是内存中委托单的数据组织形式,要求快速插入委托、查找委托、遍历委托和删除委托。这就要求内存中委托撮合队列的数据结构具备高效的插入、查找、遍历和删除的效率。为提升排序效率,本发明利用内存和硬盘,实现了外排序,实现内存撮合期间,产品委托文件的排序处理。
撮合系统每秒会有大量的数据产生,同时需要更新到数据库中。如何更有效地及时地把数据更新到数据库中,对于系统的性能有很大的影响。本发明采用撮合过程写日志文件和撮合结果写入数据库采用异步的方式进行。
下面以具体某一产品的撮合过程为例,描述内存撮合和数据库异步方式相结合的金融产品撮合方法。
以通用商业语言COBOL描述内存中的买入和卖出队列数组如下:
01ARR-RECORDS.
02ARR-RECORD OCCURS20000TIMES.
15ARR-APPID PIC S9(17)COMP-3.委托申请单ID,17位数字。
15ARR-SHARENUM PIC S9(9)COMP-3.委托份额,9位数字。
15ARR-PRICE PIC S9(9)COMP-3.委托价格,9位数字。
15ARR-KEY PIC S9(9)COMP-3.节点关键码
15ARR-LINK PIC S9(9)COMP-3.下一节点指针
为了节省空间,里面的字段采用COMP-3压缩十进制存储数据,其中的委托申请单ID为委托单唯一标识,委托份额和委托价格对应客户买入或卖出产品的价格和份额,节点关键码和下一节点指针用于标识队列数组链表顺序。
产品撮合之前,需要对于委托单进行排序,为实现上述高效撮合系统,在内存撮合期间,文件服务器从数据库服务器读取委托单,采取“排序-归并”的外排序方式,利用有限内存实现大量文件排序。在排序阶段,先读入能放在有限内存中的数据量,将其排序输出到临时文件,依次进行,将待排序数据组织为多个有序的临时文件,之后在归并阶段将这些临时文件合并为一个大的有序文件,即排序结果,排序结果直接导入队列数组链表。
上述安全撮合方法的核心是系统故障恢复流程,由于磁盘数据库的恢复,数据库厂商提供了成熟的基于数据转储和数据库日志等数据库恢复方法,由数据库本身机制可保证。本发明基于上述的多级存储模式,针对内存宕机,内存丢失或者内存和日志文件丢失的情况下,构建了根据磁盘数据库和硬盘日志文件的故障恢复方法和流程。
本发明构建了一种内存-文件服务器-磁盘数据的多级存储模式,实现内存撮合处理和数据库读写异步处理,如图4,具体包括以下步骤:
步骤301:委托单接收单元接收客户委托申请单,存储至磁盘数据库;
步骤302:读取磁盘数据中的委托申请单,结合内存和文件实现外排序,在内存中根据排序结果建立买入、卖出队列数组;
步骤303:撮合单元访问内存队列数组数据,撮合成交,结果记录至硬盘日志文件,硬盘日志文件以时间序列命名,每个文件记录了对于磁盘数据库执行的一次数据改动,同步备份作为故障恢复的依据;
步骤303:当硬盘日志文件积累到一定量或时间超时,触发写数据操作,委托单更新单元直接产生一条事务日志信息,根据硬盘日志文件的时间序列,依次写入磁盘日志;
步骤304:数据库写线程,根据磁盘日志文件将成交信息写入磁盘数据库,更新买入和卖出委托单状态;
本发明基于上述的多级存储模式,针对内存宕机,如图5,构建的故障恢复流程和方法包括如下步骤:
步骤401:检测装置107启动“心跳”检查,捕获故障时间,发出故障恢复指令。
步骤402:系统根据接收到的故障恢复时间,确定出所述的故障时间之后的硬盘日志文件,利用以时间序列命名的文件名得到恢复文件集合,并建立时间从小到大的顺序,其中每个文件对于磁盘数据库的一个对应的改动序列。
步骤403:根据恢复磁盘日志文件将成交信息写入磁盘数据库,直至恢复到执行最新硬盘日志文件改动之后的数据。
上述故障恢复利用硬盘日志文件恢复数据,减少了重新撮合需要的排序和撮合过程,显著提高了数据恢复的效率。
本发明针对金融产品进行撮合成交,系统处理最小粒度是可以针对每个产品,设计了根据不同产品进行负载均衡的方案。通过在不同设备上部署不同的产品,系统通过按产品路由,将不同的产品的委托单请求分布到不同的设备,由不同的设备进行撮合处理。
在上述各实施例的基础上,进一步地,所述第一挂单交互数据包括一设定标的的第一数值和第一数量,所述第二挂单交互数据包括所述设定标的的第二数值和第二数量,所述达成撮合条件为所述第一数值与第二数值,或者所述第一数量和第二数量满足设定要求;在第二服务器中对所述第一交互队列和所述第二交互队列进行撮合处理,如图6,包括:
S131、根据所述第一数值、所述第二数值和所述设定要求从所述第一交互队列和所述第二交互队列中分别确定出达成撮合条件的所述第一挂单交互数据和所述第二挂单交互数据;
S132、修改第一终端下该设定标的的总数量为原总数量与该第二挂单交互数据对应数量的总和,并修改第二终端下该设定标的的总数量为原总数量与该第二挂单交互数据对应数量的差值;
S133、剔除完成撮合的第一挂单数据和第二挂单数据,并重新生成第一交互队列和第二交互队列,重复撮合所述第一交互队列中的第一挂单交互数据以及所述第二交互队列中的第二挂单交互数据,直至其中一个交互队列中无达成撮合条件的挂单交互数据。
在上述各实施例的基础上,进一步地,根据所述第一数值、所述第二数值和所述设定要求从所述第一交互队列和所述第二交互队列中分别确定出达成撮合条件的所述第一挂单交互数据和所述第二挂单交互数据,包括:
分别从所述第一交互队列和所述第二交互队列中将数值相等的所述第一挂单交互数据和所述第二挂单交互数据确定为当前撮合的数据。
具体地,该实施例中,首先从第一交互队列和第二交互队列中确定出当前撮合的第一挂单数据和第二挂单数据,以一金融产品作为设定标的为例,假设金融产品A的第一挂单交互数据包括:“以1元价格买入100个A”、“以2元价格买入100个A”、“以3元价格买入200个A”、“以4元价格买入200个A”以及“以5元价格买入250个A”,第二挂单交互数据包括:“以5元价格卖出300个A”、“以3元价格卖出300个A”、“以2元价格卖出50个A”以及“以2元价格卖出60个A”。该金融产品的当前价格为2元,则确定“以2元价格买入100个A”,“以2元价格卖出50个A”以及“以2元价格卖出60个A”属于可撮合的挂单交互数据,则对该三个数据进行撮合处理。
撮合过程中,其中“以2元价格买入100个A”对应的第一终端为N1客户账号登陆的终端,“以2元价格卖出50个A”以及“以2元价格卖出60个A”各自对应的第二终端为N2和N3客户账号登陆的终端,因此撮合后,如果优先N2客户的申请请求,可以认为N1客户账号下的A的总数增加了100个,N2客户账号下的A的总数减少了50个,N3客户账号下的A的总数减少了50个。当然,按照不同规定,也可以是N2客户账号下的A的总数减少了45个,N3客户账号下的A的总数减少了55个等,本发明对于具体的分配数量不做限定。
更进一步的,可以基于终端设备的挂单时间点来进行合理分配,例如N2客户在13:00挂单以2元价格卖出50个的挂单交互数据,N3客户在10:00挂单以2元价格卖出30个的挂单交互数据,并在14:00挂单以2元价格卖出30个的挂单交互数据,则优先N3的N2在10:00的30个,待N3与A1撮合后撮合N2的以2元价格卖出50个的挂单交互数据,最后撮合N3中另外14:00挂单的30个卖出A的挂单数据,进而完成撮合操作,此时对于第一终端的N1客户的A的总数量增加了100,N2客户的A的总数量减少了50,N3客户的A的总数量减少了50。重复上述步骤,直至没有可撮合的数据为止,例如N3客户挂单的60个A中,仍有10个未出现买入挂单,因此如果撮合机制是仅仅相等价格的买入和卖出撮合,则该10个以2元卖出的挂单数据无法撮合,进而属于不可交互的挂单交互数据(不可撮合数据),至此,如果当前标定价格仍然为2元,则此时无可交互的挂单交互数据,当前撮合结束,由于已无可成交的数据,则重新判断当前挂单数量最多的挂单交互数据,由于该场景中已无其他可撮合的数据,因此无可撮合的数据,因此本次撮合结束。
在上述各实施例的基础上,进一步地,根据所述第一数值、所述第二数值和所述设定要求从所述第一交互队列和所述第二交互队列中分别确定出达成撮合条件的所述第一挂单交互数据和所述第二挂单交互数据,包括:
对所述第一交互队列中数值最高的第一数值与第二交互队列中数值最低的第二数值进行比对,若前者的数值高于后者的数值,将该数值最高的第一数值对应的第一挂单交互数据以及数值最低的第二数值对应的第二挂单交互数据确定为达成撮合条件的第一挂单交互数据和第二挂单交互数据。
本实施例中,撮合过程使用对照读的方式,将买入队列的最高价和卖出队列的最低价进行比对,如果满足买入价大于等于卖出价,则根据委托进行撮合,并将撮合队列进行重新排序。
具体地,该实施例中,首先从第一交互队列和第二交互队列中确定出当前撮合的第一挂单数据和第二挂单数据,以一金融产品作为设定标的为例,假设金融产品A的第一挂单交互数据包括:“以1元价格买入100个A”、“以2元价格买入100个A”、“以3元价格买入200个A”、“以4元价格买入200个A”以及“以5元价格买入250个A”,第二挂单交互数据包括:“以4元价格卖出300个A”、“以5元价格卖出300个A”、“以6元价格卖出50个A”以及“以7元价格卖出60个A”。则第一交互队列中数值最高的是:“以5元价格买入250个A”,第二交互队列中数值最低的是:“以4元价格卖出300个A”,由于“以5元价格买入250个A”的数值为5元,“以4元价格卖出300个A”的数值为4元,因此前者的数值高于后者的数值(第一交互队列中数值最高的第一挂单数据为前者,第二交互队列中数值最低的第二挂单数据为后者),则将以“5元价格买入250个A”和“以4元价格卖出300个A”作为撮合数据进行撮合。当然,该实施例中,“以5元价格买入250个A”被自动调整为“以4元价格买入250个A”,然后以4元价格进行成交。
在上述各实施例的基础上,进一步地,根据所述第一数值、所述第二数值和所述设定要求从所述第一交互队列和所述第二交互队列中分别确定出达成撮合条件的所述第一挂单交互数据和所述第二挂单交互数据,还包括:
以所述第一交互队列和所述第二交互队列中同一数值对应数量最多的挂单交互数据为撮合标定数据,并将该同一数值对应的所有挂单交互数据确定为当前撮合的数据。
具体的,该实施例中,首先从第一交互队列和第二交互队列中确定出当前撮合的第一挂单数据和第二挂单数据,以一金融产品作为设定标的为例,假设金融产品A的第一挂单交互数据包括:“以1元价格买入100个A”、“以2元价格买入100个A”、“以3元价格买入200个A”、“以4元价格买入200个A”以及“以5元价格买入250个A”,第二挂单交互数据包括:“以5元价格卖出300个A”、“以3元价格卖出300个A”、“以2元价格卖出50个A”以及“以2元价格卖出60个A”。由于“以5元价格买入250个A”中的数量为250,以“以5元价格卖出300个A”的数量为300个,因此5元对应的挂单数量最多,“以5元价格买入250个A”和“以5元价格卖出300个A”属于可撮合的挂单交互数据,则对该数据进行撮合处理。
撮合过程中,其中“以5元价格买入250个A”对应的第一终端为N1客户账号登陆的终端,“以5元价格卖出300个A”对应的第二终端为N2客户账号登陆的终端,因此撮合后,N1客户账号下的A的总数增加了250个,N2客户账号下的A的总数减少了250个。当然,实际场景中可能会有很多挂单5元的挂单交互数据,因此未完成撮合的量可以按照时间先后顺序进行撮合。
更进一步的,可以基于终端设备的挂单时间点来进行合理分配,例如N2客户在13:00挂单以5元价格卖出50个的挂单交互数据,N3客户在10:00挂单以5元价格卖出30个的挂单交互数据,并在14:00挂单以5元价格卖出30个的挂单交互数据,则优先N3的N2在10:00的30个,待N3与A1撮合后撮合N2的以5元价格卖出50个的挂单交互数据,最后撮合N3中另外14:00挂单的30个卖出A的挂单数据,进而完成撮合操作,此时对于第一终端的N1客户的A的总数量增加了100,N2客户的A的总数量减少了50,N3客户的A的总数量减少了50。重复上述步骤,直至没有可撮合的数据为止,例如N3客户挂单的60个A中,仍有10个未出现买入挂单,因此如果撮合机制是仅仅相等价格的买入和卖出撮合,则该10个以5元卖出的挂单数据无法撮合,进而属于不可交互的挂单交互数据(不可撮合数据),至此此时无可交互的挂单交互数据,当前撮合结束,由于已无可成交的数据,则重新判断当前挂单数量最多的挂单交互数据。
在上述各实施例的基础上,进一步地,根据所述第一数值、所述第二数值和所述设定要求从所述第一交互队列和所述第二交互队列中分别确定出达成撮合条件的所述第一挂单交互数据和所述第二挂单交互数据,还包括:
获取上一时间间隔内的撮合标定数据对应的数据值;
若上一时间间隔内的撮合标定数据对应的数据值大于第一交互队列中的最高值和第二交互队列中的最低值,则将该第一交互队列中对应的最高值确定为当前时间间隔内撮合标定数据对应的数据值;其中,与当前时间间隔内撮合标定数据对应的数据值一致的挂单交互数据为当前撮合的数据。
具体的,同样以金融产品作为举例,在该实施例中每隔一段时间读取客户的第一挂单交互数据和第二挂单交互数据,然后以上一次成交的价格(上一时间间隔内的撮合标定数据对应的数据值)来判断,若上一时间间隔内的撮合标定数据对应的数据值大于第一交互队列中的最高值和第二交互队列中的最低值,例如上次成交价格为5元,若第二交互队列中的最低值为4元,第一交互队列中的最高值为3元,则以3元作为当前时间间隔内的成交价格,以3元进行成交。
在上述各实施例的基础上,进一步地,若上一时间间隔内的撮合标定数据对应的数据值小于第一交互队列中的最高值并且小于第二交互队列中的最低值,则将上一时间间隔内的撮合标定数据对应的数据值确定为当前时间间隔内撮合标定数据对应的数据值。
具体的,同样以金融产品作为举例,在该实施例中每隔一段时间读取客户的第一挂单交互数据和第二挂单交互数据,然后以上一次成交的价格(上一时间间隔内的撮合标定数据对应的数据值)来判断,若第一交互队列中的最高值大于第二交互队列中的最低值,并且第二交互队列中的最低值大于上一时间间隔内的撮合标定数据对应的数据值,则将上一时间间隔内的撮合标定数据对应的数据值确定为当前时间间隔内撮合标定数据对应的数据值,例如上次成交价格为2元,若第二交互队列中的最低值为3元,第一交互队列中的最高值为4元,则以2元作为当前时间间隔内的成交价格,以2元进行成交。
在上述各实施例的基础上,进一步地,若第一交互队列中的最高值大于第二交互队列中的最低值,并且第二交互队列中的最低值大于上一时间间隔内的撮合标定数据对应的数据值,则将所述第二交互队列中的最低值确定当前时间间隔内撮合标定数据对应的数据值。
具体的,同样以金融产品作为举例,在该实施例中每隔一段时间读取客户的第一挂单交互数据和第二挂单交互数据,然后以上一次成交的价格(上一时间间隔内的撮合标定数据对应的数据值)来判断,若第一交互队列中的最高值大于第二交互队列中的最低值,并且第二交互队列中的最低值大于上一时间间隔内的撮合标定数据对应的数据值,将所述第二交互队列中的最低值确定当前时间间隔内撮合标定数据对应的数据值,例如上次成交价格为2元,若第二交互队列中的最低值为3元,第一交互队列中的最高值为4元,则以3元作为当前时间间隔内的成交价格,以3元进行成交。
本发明实施例提供的挂单交互数据的数据交互方法,能够在第二服务器中对第一服务器中的挂单交互数据进行撮合,进而使得客户挂单的交互数据或者计算机进行投票机制产生的数据进行数据交互操作,通过将数据本身存储在第一服务器,交互过程在第二服务器中进行,进而将动态撮合分布部署于不同设备,实现物理设备独立,形成了第一服务器-第二服务器的多级存储模式,能够实现快速的故障恢复,避免内存宕机引发的数据丢失等问题,通过不同产品路由到不同设备,实现负载均衡处理。
图7是本发明又一个实施例提供的挂单交互数据实现数据交互的第二服务器的结构示意图,如图7所示,本发明实施例提供的挂单交互数据实现数据交互的第二服务器包括读取模块601、排序模块602和撮合模块603,其中:
读取模块601用于读取第一服务器中的每个第一终端的第一挂单交互数据和每个第二终端的第二挂单交互数据;排序模块602用于对第一挂单交互数据进行排序形成第一交互队列,对第二挂单数据进行排序形成第二交互队列;撮合模块603用于对所述第一交互队列和所述第二交互队列进行撮合处理,以使所述第一交互队列中达成撮合条件的第一挂单交互数据与对应撮合的所述第二交互队列中达成撮合条件的第二挂单交互数据执行数据交互操作。
具体地,本发明中的交互数据可以是基于电子交易平台的金融产品数据,当然,也可以是实物数据,又或者是计算机程序的某些特定数据,本发明对此不作限制,但是可以理解,本发明具体用于数据的撮合交互,也即本发明中的交互数据服务于数据撮合,换而言之,本发明的数据撮合可以是金融产品的委托撮合(即委托买入和委托卖出),也可以是计算机中数据中具有撮合匹配机制的数据,例如计算机中一程序撮合产生当前最新值的场景中,例如区块链的相关投票场景,或者是具体处理过程的某一投票场景,可以通过两方数据的撮合形成类似于投票产生的数据值(例如票数数据),将该通过撮合形成的“投票”值作为最优化的数据值。
可以理解,本发明中的第一终端和第二终端即为两个终端设备,每个终端设备对应一个客户账号(例如第一终端对应第一客户,第二终端对应第二客户)或者对应区块链中的一个“节点”。
举例而言,在计算机的“投票”场景中,以区块链中某一事件的确定实施为例,由各终端处理器给出投票是的票数,票数的不同决定了对本次投票是的认可度的高低,每个终端具有相同的总票数,每一个“是”的投票可以抵消“否”的投票,然后通过投票来进行或者辅助进行区块链的共识操作。
此外,在一金融场景中,以一设定标的物委买和委卖为例,第一挂单交互数据可以是第一客户挂单产生的数据,第二挂单交互数据可以是第二客户挂单产生的数据,第一客户可以是委买客户或者委卖客户的其中一个,第二客户可以是委买客户或者委卖客户的其中另一个,举例而言,第一客户为委买客户,第二客户为委卖客户,那么相对应地,第一挂单交互数据是该设定标的物的委买数据,显然,委卖数据应当包含有委买的作价,以及委买的数量。同理,第二挂单交互数据是该设定标的物的委卖数据,显然,委卖数据也应当包含有委卖的作价和委卖的数量。
本发明实施例提供的挂单交互数据实现数据交互的第二服务器,能够在第二服务器中对第一服务器中的挂单交互数据进行撮合,进而使得客户挂单的交互数据或者计算机进行投票机制产生的数据进行数据交互操作,通过将数据本身存储在第一服务器,交互过程在第二服务器中进行,进而将动态撮合分布部署于不同设备,实现物理设备独立,形成了第一服务器-第二服务器的多级存储模式,能够实现快速的故障恢复,避免内存宕机引发的数据丢失等问题,通过不同产品路由到不同设备,实现负载均衡处理。
在上述各实施例的基础上,进一步地,所述第一服务器包括第一存储器,所述第一存储器为磁盘存储器,所述磁盘存储器中设置数据库;相对应地,所述读取模块具体用于读取存储在所述数据库中第一终端的第一挂单交互数据和第二终端的第二挂单交互数据。
在上述各实施例的基础上,进一步地,所述第二服务器包括第二存储器,所述第二存储器为随机存储器;相对应地,所述排序模块具体用于在所述随机存储器中对第一挂单交互数据进行排序形成第一交互队列;
所述撮合模块具体用于在随机存储器中对所述第一交互队列和所述第二交互队列进行撮合处理。
在上述各实施例的基础上,进一步地,所述第一挂单交互数据包括一设定标的的第一数值和第一数量,所述第二挂单交互数据包括所述设定标的的第二数值和第二数量,所述达成撮合条件为所述第一数值与第二数值,或者所述第一数量和第二数量满足设定要求;所述撮合模块具体包括:
确定单元,根据所述第一数值、所述第二数值和所述设定要求从所述第一交互队列和所述第二交互队列中分别确定出达成撮合条件的所述第一挂单交互数据和所述第二挂单交互数据;
数值修改单元,修改第一终端下该设定标的的总数量为原总数量与该第二挂单交互数据对应数量的总和,并修改第二终端下该设定标的的总数量为原总数量与该第二挂单交互数据对应数量的差值;
迭代单元,剔除完成撮合的第一挂单数据和第二挂单数据,并重新生成第一交互队列和第二交互队列,重复撮合所述第一交互队列中的第一挂单交互数据以及所述第二交互队列中的第二挂单交互数据,直至其中一个交互队列中无达成撮合条件的挂单交互数据。
在上述各实施例的基础上,进一步地,所述确定单元具体用于分别从所述第一交互队列和所述第二交互队列中将数值相等的所述第一挂单交互数据和所述第二挂单交互数据确定为当前撮合的数据。
在上述各实施例的基础上,进一步地,所述确定单元具体用于对所述第一交互队列中数值最高的第一数值与第二交互队列中数值最低的第二数值进行比对,若前者的数值高于后者的数值,将该数值最高的第一数值对应的第一挂单交互数据以及数值最低的第二数值对应的第二挂单交互数据确定为达成撮合条件的第一挂单交互数据和第二挂单交互数据。
在上述各实施例的基础上,进一步地,所述确定单元具体用于以所述第一交互队列和所述第二交互队列中同一数值对应数量最多的挂单交互数据为撮合标定数据,并将该同一数值对应的所有挂单交互数据确定为当前撮合的数据。
在上述各实施例的基础上,进一步地,所述确定单元具体包括:
撮合标定数据获取单元,获取上一时间间隔内的撮合标定数据对应的数据值;
当前撮合标定数据第一确定单元,若上一时间间隔内的撮合标定数据对应的数据值大于第一交互队列中的最高值和第二交互队列中的最低值,则将该第一交互队列中对应的最高值确定为当前时间间隔内撮合标定数据对应的数据值;
当前撮合标定数据第二确定单元,若上一时间间隔内的撮合标定数据对应的数据值小于第一交互队列中的最高值并且大于第二交互队列中的最低值,则将上一时间间隔内的撮合标定数据对应的数据值确定为当前时间间隔内撮合标定数据对应的数据值;
当前撮合标定数据第三确定单元,若第一交互队列中的最高值大于第二交互队列中的最低值,并且第二交互队列中的最低值大于上一时间间隔内的撮合标定数据对应的数据值,则将所述第二交互队列中的最低值确定当前时间间隔内撮合标定数据对应的数据值。
图8是本发明又一个实施例提供的挂单交互数据实现数据交互的第二服务器的结构示意图,如图8所示,在上述各实施例的基础上,进一步地,本发明实施例提供的挂单交互数据实现数据交互的第二服务器还包括:第一通讯模块604,将每次撮合成功的撮合记录发送至一服务器,以使所述服务器记录撮合处理的结果,并生成日志文件,所述撮合记录包括已达成撮合的第一挂单交互数据和第二挂单交互数据。
图9是本发明又一个实施例提供的挂单交互数据实现数据交互的第二服务器的结构示意图,如图9所示,在上述各实施例的基础上,进一步地,还包括:第二通讯模块605,将剔除的所述第一挂单交互数据和所述第二挂单交互数据发送至所述第一服务器,以使所述第一服务器更新所述第一挂单交互数据和所述第二挂单交互数据。
本发明实施例提供的装置的实施例具体可以用于执行上述各方法实施例的处理流程,其功能在此不再赘述,可以参照上述方法实施例的详细描述。
图10是本发明又一个实施例提供的电子设备的实体结构示意图,如图10所示,该电子设备可以包括:处理器(processor)1201、通信接口(Communications Interface)1202、存储器(memory)1203和通信总线1204,其中,处理器1201,通信接口1202,存储器1203通过通信总线1204完成相互间的通信。处理器1201可以调用存储器1203中的逻辑指令,以执行如下方法:读取第一服务器中的每个第一终端的第一挂单交互数据和每个第二终端的第二挂单交互数据;对第一挂单交互数据进行排序形成第一交互队列,对第二挂单数据进行排序形成第二交互队列;对所述第一交互队列和所述第二交互队列进行撮合处理,以使所述第一交互队列中达成撮合条件的第一挂单交互数据与对应撮合的所述第二交互队列中达成撮合条件的第二挂单交互数据执行数据交互操作。
此外,上述的存储器1203中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:读取第一服务器中的每个第一终端的第一挂单交互数据和每个第二终端的第二挂单交互数据;对第一挂单交互数据进行排序形成第一交互队列,对第二挂单数据进行排序形成第二交互队列;对所述第一交互队列和所述第二交互队列进行撮合处理,以使所述第一交互队列中达成撮合条件的第一挂单交互数据与对应撮合的所述第二交互队列中达成撮合条件的第二挂单交互数据执行数据交互操作。
本实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储计算机程序,所述计算机程序使所述计算机执行上述各方法实施例所提供的方法,例如包括:读取第一服务器中的每个第一终端的第一挂单交互数据和每个第二终端的第二挂单交互数据;对第一挂单交互数据进行排序形成第一交互队列,对第二挂单数据进行排序形成第二交互队列;对所述第一交互队列和所述第二交互队列进行撮合处理,以使所述第一交互队列中达成撮合条件的第一挂单交互数据与对应撮合的所述第二交互队列中达成撮合条件的第二挂单交互数据执行数据交互操作。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在本说明书的描述中,参考术语“一个实施例”、“一个具体实施例”、“一些实施例”、“例如”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (11)
1.一种挂单交互数据的数据交互方法,所述数据交互方法由第二服务器执行,包括:
读取第一服务器中的每个第一终端的第一挂单交互数据和每个第二终端的第二挂单交互数据,所述第一服务器包括第一存储器,所述第一存储器为磁盘存储器,所述磁盘存储器中设置数据库;
对第一挂单交互数据进行排序形成第一交互队列,对第二挂单数据进行排序形成第二交互队列;
对所述第一交互队列和所述第二交互队列进行撮合处理,以使所述第一交互队列中达成撮合条件的第一挂单交互数据与对应撮合的所述第二交互队列中达成撮合条件的第二挂单交互数据执行数据交互操作;
还包括:将每次撮合成功的撮合记录发送至所述第一服务器和所述第二服务器,以使所述第一服务器和所述第二服务器记录撮合处理的结果,并生成日志文件,所述撮合记录包括已达成撮合的第一挂单交互数据和第二挂单交互数据;
还包括:在所述服务器故障的情况下,在预设时间段间隔下对所述第一服务器和所述第二服务器的故障情况进行检查,获取故障发生时刻;对故障进行修复并获取故障修复时刻,基于故障发生时刻和故障修复时刻,确定在故障发生时刻之后并且在故障修复时刻之前的日志文件,通过以时间序列对日志文件进行排列并集合以获取日志文件合集,基于所述日志文件合集将撮合记录的结果写入磁盘存储器中的数据库。
2.根据权利要求1所述的数据交互方法,其特征在于,所述读取第一服务器中的每个第一终端的第一挂单交互数据和每个第二终端的第二挂单交互数据,包括:
读取存储在所述数据库中第一终端的第一挂单交互数据和第二终端的第二挂单交互数据;
所述第二服务器包括第二存储器,所述第二存储器为随机存储器;相对应地,对客户的挂单交互数据进行排序,包括:
在所述随机存储器中对第一挂单交互数据进行排序形成第一交互队列;
在第二服务器中对所述第一交互队列和所述第二交互队列进行撮合处理,包括:
在随机存储器中对所述第一交互队列和所述第二交互队列进行撮合处理。
3.根据权利要求1所述的数据交互方法,其特征在于,所述第一挂单交互数据包括一设定标的的第一数值和第一数量,所述第二挂单交互数据包括所述设定标的的第二数值和第二数量,所述达成撮合条件为所述第一数值与第二数值,或者所述第一数量和第二数量满足设定要求;在对所述第一交互队列和所述第二交互队列进行撮合处理,包括:
根据所述第一数值、所述第二数值和所述设定要求从所述第一交互队列和所述第二交互队列中分别确定出达成撮合条件的所述第一挂单交互数据和所述第二挂单交互数据;
修改第一终端下该设定标的的总数量为原总数量与该第二挂单交互数据对应数量的总和,并修改第二终端下该设定标的的总数量为原总数量与该第二挂单交互数据对应数量的差值;
剔除完成撮合的第一挂单数据和第二挂单数据,并重新生成第一交互队列和第二交互队列,重复撮合所述第一交互队列中的第一挂单交互数据以及所述第二交互队列中的第二挂单交互数据,直至其中一个交互队列中无达成撮合条件的挂单交互数据。
4.根据权利要求3所述的数据交互方法,其特征在于,所述设定要求为所述第一数值和第二数值相等,所述根据所述第一数值、所述第二数值和设定要求从所述第一交互队列和所述第二交互队列中分别确定出达成撮合条件的所述第一挂单交互数据和所述第二挂单交互数据,包括:
分别从所述第一交互队列和所述第二交互队列中将相等的所述第一数值和第二数值所对应的所述第一挂单交互数据和所述第二挂单交互数据确定为达成撮合条件的第一挂单交互数据和第二挂单交互数据。
5.根据权利要求3所述的数据交互方法,其特征在于,所述设定要求为所述第一交互队列中数值最高的第一数值高于第二交互队列中数值最低的第二数值;所述根据所述第一数值、所述第二数值和所述设定要求从所述第一交互队列和所述第二交互队列中分别确定出达成撮合条件的所述第一挂单交互数据和所述第二挂单交互数据,包括:
对所述第一交互队列中数值最高的第一数值与第二交互队列中数值最低的第二数值进行比对,若前者的数值高于后者的数值,将该数值最高的第一数值对应的第一挂单交互数据以及数值最低的第二数值对应的第二挂单交互数据确定为达成撮合条件的第一挂单交互数据和第二挂单交互数据。
6.根据权利要求3所述的数据交互方法,其特征在于,所述设定要求为与撮合标定数据数值相同的数据,所述撮合标定数据为所述第一交互队列和所述第二交互队列中同一数值对应数量最多的挂单交互数据,根据所述第一数值、所述第二数值和所述设定要求从所述第一交互队列和所述第二交互队列中分别确定出达成撮合条件的所述第一挂单交互数据和所述第二挂单交互数据,还包括:
将该同一数值对应的所有挂单交互数据确定为达成撮合条件的第一挂单交互数据和第二挂单交互数据。
7.根据权利要求3所述的数据交互方法,其特征在于,根据所述第一数值、所述第二数值和所述设定要求从所述第一交互队列和所述第二交互队列中分别确定出达成撮合条件的所述第一挂单交互数据和所述第二挂单交互数据,还包括:
获取上一时间间隔内的撮合标定数据对应的数据值;
若上一时间间隔内的撮合标定数据对应的数据值大于第一交互队列中的最高值和第二交互队列中的最低值,则将该第一交互队列中对应的最高值确定为当前时间间隔内撮合标定数据对应的数据值;
若上一时间间隔内的撮合标定数据对应的数据值小于第一交互队列中的最高值并且大于第二交互队列中的最低值,则将上一时间间隔内的撮合标定数据对应的数据值确定为当前时间间隔内撮合标定数据对应的数据值;
若第一交互队列中的最高值大于第二交互队列中的最低值,并且第二交互队列中的最低值大于上一时间间隔内的撮合标定数据对应的数据值,则将所述第二交互队列中的最低值确定当前时间间隔内撮合标定数据对应的数据值;其中,
与当前时间间隔内撮合标定数据对应的数据值一致的挂单交互数据为达成撮合条件的第一挂单交互数据和第二挂单交互数据。
8.根据权利要求3所述的数据交互方法,其特征在于,还包括:
将剔除的所述第一挂单交互数据和所述第二挂单交互数据发送至所述第一服务器,以使所述第一服务器更新所述第一挂单交互数据和所述第二挂单交互数据。
9.一种挂单交互数据的第二服务器,其特征在于,包括:
读取模块,读取第一服务器中的每个第一终端的第一挂单交互数据和每个第二终端的第二挂单交互数据,所述第一服务器包括第一存储器,所述第一存储器为磁盘存储器,所述磁盘存储器中设置数据库;
排序模块,对第一挂单交互数据进行排序形成第一交互队列,对第二挂单数据进行排序形成第二交互队列;
撮合模块,对所述第一交互队列和所述第二交互队列进行撮合处理,以使所述第一交互队列中可交互的第一挂单交互数据与对应撮合的所述第二交互队列中可交互的第二挂单交互数据执行数据交互操作;
还包括:
第一通讯模块,将每次撮合成功的撮合记录发送至一服务器,以使所述服务器记录撮合处理的结果,并生成日志文件,所述撮合记录包括已达成撮合的第一挂单交互数据和第二挂单交互数据;
还包括:在所述服务器故障的情况下,在预设时间段间隔下对所述第一服务器和所述第二服务器的故障情况进行检查,获取故障发生时刻;对故障进行修复并获取故障修复时刻,基于故障发生时刻和故障修复时刻,确定在故障发生时刻之后并且在故障修复时刻之前的日志文件,通过以时间序列对日志文件进行排列并集合以获取日志文件合集,基于所述日志文件合集将撮合记录的结果写入磁盘存储器中的数据库。
10.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至8任一项所述方法的步骤。
11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至8任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011066178.8A CN112199213B (zh) | 2020-09-30 | 2020-09-30 | 一种挂单交互数据的数据交互方法及服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011066178.8A CN112199213B (zh) | 2020-09-30 | 2020-09-30 | 一种挂单交互数据的数据交互方法及服务器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112199213A CN112199213A (zh) | 2021-01-08 |
CN112199213B true CN112199213B (zh) | 2024-02-20 |
Family
ID=74012950
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011066178.8A Active CN112199213B (zh) | 2020-09-30 | 2020-09-30 | 一种挂单交互数据的数据交互方法及服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112199213B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104392377A (zh) * | 2014-12-09 | 2015-03-04 | 四川诚品电子商务有限公司 | 一种云交易系统 |
CN109598611A (zh) * | 2018-10-09 | 2019-04-09 | 阿里巴巴集团控股有限公司 | 一种交易的处理方法、交易网关、交易服务器及交易系统 |
CN110264353A (zh) * | 2019-05-28 | 2019-09-20 | 必成汇(成都)科技有限公司 | 基于内存的高可用交易撮合系统及方法 |
CN111598694A (zh) * | 2020-05-12 | 2020-08-28 | 广东电力交易中心有限责任公司 | 电力交易方法、装置、计算机设备和存储介质 |
-
2020
- 2020-09-30 CN CN202011066178.8A patent/CN112199213B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104392377A (zh) * | 2014-12-09 | 2015-03-04 | 四川诚品电子商务有限公司 | 一种云交易系统 |
CN109598611A (zh) * | 2018-10-09 | 2019-04-09 | 阿里巴巴集团控股有限公司 | 一种交易的处理方法、交易网关、交易服务器及交易系统 |
CN110264353A (zh) * | 2019-05-28 | 2019-09-20 | 必成汇(成都)科技有限公司 | 基于内存的高可用交易撮合系统及方法 |
CN111598694A (zh) * | 2020-05-12 | 2020-08-28 | 广东电力交易中心有限责任公司 | 电力交易方法、装置、计算机设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112199213A (zh) | 2021-01-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111752957B (zh) | 一种基于缓存化的销售锁定方法及系统 | |
CN104699712B (zh) | 对数据库中的库存记录信息进行更新的方法及装置 | |
US20150309919A1 (en) | System and method for generating synthetic data for software testing purposes | |
CN111861743A (zh) | 一种基于逐笔数据重构市场行情的方法、装置及设备 | |
CN110706105A (zh) | 差错标记方法、装置、计算机设备及存储介质 | |
CN110415095A (zh) | 一种对账方法、装置、终端及存储介质 | |
US20020198772A1 (en) | Encouraging house card use through price guarantees | |
CN111311360A (zh) | 资源的退还方法和装置、存储介质、电子装置 | |
CN112199213B (zh) | 一种挂单交互数据的数据交互方法及服务器 | |
CN112035530A (zh) | 一种分布式实时支付系统中的交易报文匹配方法及系统 | |
CN116167857A (zh) | 数据处理方法、装置、计算机设备及存储介质 | |
CN116362889A (zh) | 基于缓存索引的产品额度校验方法、装置及计算机设备 | |
CN112419052B (zh) | 交易测试方法、装置、电子设备及可读存储介质 | |
CN111915359A (zh) | 基于区块链的商城交易货币流通方法和系统 | |
CN112686711A (zh) | 一种规则引擎匹配方法及系统 | |
CN114510337B (zh) | 任务执行方法、系统及计算机可读存储介质 | |
CN114155081B (zh) | 一种基于五个Merkle树结构的共识与交易分离系统与方法 | |
CN115081972A (zh) | 商品库存处理方法和系统、电子设备和存储介质 | |
CN114331408A (zh) | 数字资产交易方法、装置和存储介质 | |
US20230153323A1 (en) | Multi-modal-based generation of data synchronization instructions | |
CN117785900A (zh) | 数据更新方法、装置、计算机设备和存储介质 | |
CN116627842A (zh) | 自动化测试方法及装置 | |
CN117291741A (zh) | 账务数据处理方法、装置、设备、存储介质和程序产品 | |
CN117216104A (zh) | 条件单调用方法、装置、设备及存储介质 | |
CN117094824A (zh) | 一种订单的撮合的确定方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |