CN115204965A - 一种多节点撮合订单的方法、系统及设备 - Google Patents
一种多节点撮合订单的方法、系统及设备 Download PDFInfo
- Publication number
- CN115204965A CN115204965A CN202210610532.1A CN202210610532A CN115204965A CN 115204965 A CN115204965 A CN 115204965A CN 202210610532 A CN202210610532 A CN 202210610532A CN 115204965 A CN115204965 A CN 115204965A
- Authority
- CN
- China
- Prior art keywords
- orders
- matching
- order
- message
- transaction information
- 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.)
- Pending
Links
Images
Classifications
-
- 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
- G06Q30/00—Commerce
- G06Q30/06—Buying, selling or leasing transactions
- G06Q30/0601—Electronic shopping [e-shopping]
- G06Q30/0633—Lists, e.g. purchase orders, compilation or processing
-
- 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/25—Integrating or interfacing systems involving database management systems
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Business, Economics & Management (AREA)
- Physics & Mathematics (AREA)
- Accounting & Taxation (AREA)
- General Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Finance (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请的目的是提供一种多节点撮合订单的方法、系统及设备,本申请通过获取多个待处理订单请求,将多个待处理订单请求转入多个代理服务中,通过所述多个代理服务对所述多个待处理请求进行并行预处理得到多个消息类型的订单;将所有消息类型的订单放入第一流处理消息队列中,将每个第一流处理消息队列中的消息类型的订单发送至多个撮合引擎;通过所述多个撮合引擎对所述消息类型的订单进行撮合处理,得到成交信息,将所述成交信息放入第二流处理消息队列中;将第二流处理消息队列中的成交信息进行去重处理,得到去重后的成交信息,将去重后的成交信息写入数据库,完成订单撮合处理。从而形成多节点热备架构,提高了稳定性和撮合效率。
Description
技术领域
本申请涉及计算机领域,尤其涉及一种多节点撮合订单的方法、系统及设备。
背景技术
订单撮合系统主要是把买卖双方的订单进行撮合,返回相应的成交信息。一般系统订单直接存放在数据库中,撮合系统需要读取数据库的订单进行撮合,一旦有成交,就需要同步计算出订单成交之后的状态,同时写回到数据库中,整个撮合的过程依赖数据库的读取和写入。
在现有技术中,订单撮合系统过度依赖数据库本身,每一次订单的撮合都需要等待数据写回到数据库中,如果不这么做就会导致数据丢失,亦或者在异常关闭之后无法自动恢复到异常前的状态。整体撮合系统的瓶颈是数据库的性能,延迟较大,在订单大量并发的情况下严重加重了延迟的情况。由于买卖订单更新需要放入一个事物中进行,直接加重了数据库的性能瓶颈。
发明内容
本申请的一个目的是提供一种多节点撮合订单的方法、系统及设备,解决现有技术中撮合系统因为数据库等持久化系统的同步写入导致撮合性能直接依赖数据库写入性能、无法单独提升撮合性能的问题。
根据本申请的一个方面,提供了一种多节点撮合订单的方法,该方法包括:
获取多个待处理订单请求,将多个待处理订单请求转入多个代理服务中,通过所述多个代理服务对所述多个待处理请求进行并行预处理得到多个消息类型的订单;
将所有消息类型的订单放入第一流处理消息队列中,将每个第一流处理消息队列中的消息类型的订单发送至多个撮合引擎;
通过所述多个撮合引擎对所述消息类型的订单进行撮合处理,得到成交信息,将所述成交信息放入第二流处理消息队列中;
将第二流处理消息队列中的成交信息进行去重处理,得到去重后的成交信息,将去重后的成交信息写入数据库,完成订单撮合处理。
可选地,所述通过所述多个代理服务对所述多个待处理请求进行并行预处理得到多个消息类型的订单,包括:
获取所有待处理订单的订单参数,通过所述多个代理服务对所述订单参数进行并行校验,得到通过校验的订单;
将通过校验的订单对应的格式转成消息类型,得到消息类型的订单。
可选地,将每个第一流处理消息队列中的消息类型的订单发送至多个撮合引擎,包括:
基于第一流处理消息队列的广播机制将每个第一流处理消息队列中的消息类型的订单发送至多个撮合引擎。
可选地,所述通过所述多个撮合引擎对所述消息类型的订单进行撮合处理,得到成交信息,包括:
使用所述多个撮合引擎匹配所述消息类型的订单,当存在成交的订单时,根据成交的订单对应的信息生成成交信息。
可选地,将第二流处理消息队列中的成交信息进行去重处理,包括:
使用幂等队列对第二流处理消息队列中的成交信息进行去重处理。
可选地,根据成交的订单对应的信息生成成交信息,包括:
根据成交的订单对应的信息生成成交订单唯一标识码。
可选地,使用幂等队列对第二流处理消息队列中的成交信息进行去重处理,包括:
获取单一成交信息时判断在幂等队列中是否存在所述成交信息对应的订单唯一标识码,若是,则抛弃所述成交信息;
若否,则在幂等队列中存储所述成交信息对应的订单唯一标识码。
可选地,所述将去重后的成交信息写入数据库之前,还包括:
根据去重后的成交信息确定对应的二进制日志文件。
可选地,所述第一流处理消息队列包括KAFKA,所述第二流处理消息队列包括KAFKA。
根据本申请的另一个方面,还提供了一种用于多节点撮合订单的系统,该系统包括至少一个代理服务、至少两个撮合引擎、去重模块和数据库,其中,
所述至少一个代理服务获取多个待处理订单请求,对所述多个待处理请求进行并行预处理得到多个消息类型的订单,将所有消息类型的订单放入第一流处理消息队列中,将每个第一流处理消息队列中的消息类型的订单发送至所述撮合引擎;
所述至少两个撮合引擎获取第一流处理消息队列中的消息类型的订单,对所述消息类型的订单进行撮合处理,得到成交信息,将所述成交信息放入第二流处理消息队列中;
所述去重模块获取所述第二流处理消息队列中的成交信息,将所述成交信息进行去重处理,得到去重后的成交信息,以使得所述数据库获取所述去重后的成交信息;
所述数据库获取所述去重后的成交信息,完成订单撮合处理。
可选地,所述系统还包括日志模块,其中,
所述日志模块根据去重后的成交信息确定对应的二进制日志文件。
根据本申请的再一个方面,还提供了一种计算机可读介质,其上存储有计算机可读指令,所述计算机可读指令可被处理器执行以实现如前述任一项所述的方法。
根据本申请的又一个方面,还提供了一种用于多节点撮合订单的设备,该设备包括:
一个或多个处理器;以及
存储有计算机可读指令的存储器,所述计算机可读指令在被执行时使所述处理器执行如前述任一项所述方法的操作。
与现有技术相比,本申请通过获取多个待处理订单请求,将多个待处理订单请求转入多个代理服务中,通过所述多个代理服务对所述多个待处理请求进行并行预处理得到多个消息类型的订单;将所有消息类型的订单放入第一流处理消息队列中,将每个第一流处理消息队列中的消息类型的订单发送至多个撮合引擎;通过所述多个撮合引擎对所述消息类型的订单进行撮合处理,得到成交信息,将所述成交信息放入第二流处理消息队列中;将第二流处理消息队列中的成交信息进行去重处理,得到去重后的成交信息,将去重后的成交信息写入数据库,完成订单撮合处理。从而通过消息中间件对撮合系统和数据库进行解耦,仅在内存中撮合订单,将成交信息异步写入数据库,以使撮合性能只依赖于内存数据,大大提升撮合性能。最终的成交信息是以二进制日志的形式异步写入数据库,去除了买卖订单的事务,还可以通过批量写入的方式来进一步优化写入速度。利用消息中间件的广播机制,撮合系统可以建立多套子系统同时运行,形成多节点热备架构,只要有一个子系统返回了撮合成交信息就可以直接返回数据,提高了稳定性。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1示出根据本申请的一个方面提供的一种多节点撮合订单的方法流程示意图;
图2示出了本申请一可选实施例中的一种多节点撮合订单的方法流程示意图;
图3示出了根据本申请另一方面提供的一种用于多节点撮合订单的系统框架结构示意图。
附图中相同或相似的附图标记代表相同或相似的部件。
具体实施方式
下面结合附图对本申请作进一步详细描述。
在本申请一个典型的配置中,终端、服务网络的设备和可信方均包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
图1示出根据本申请的一个方面提供的一种多节点撮合订单的方法流程示意图,该方法包括:S100~S400,其中,在S100中,获取多个待处理订单请求,将多个待处理订单请求转入多个代理服务中,通过所述多个代理服务对所述多个待处理请求进行并行预处理得到多个消息类型的订单;在S200中,将所有消息类型的订单放入第一流处理消息队列中,将每个第一流处理消息队列中的消息类型的订单发送至多个撮合引擎;在S300中,通过所述多个撮合引擎对所述消息类型的订单进行撮合处理,得到成交信息,将所述成交信息放入第二流处理消息队列中;在S400中,将第二流处理消息队列中的成交信息进行去重处理,得到去重后的成交信息,将去重后的成交信息写入数据库,完成订单撮合处理。从而通过消息中间件对撮合系统和数据库进行解耦,仅在内存中撮合订单,将成交信息异步写入数据库,以使撮合性能只依赖于内存数据,大大提升撮合性能。最终的成交信息是以二进制日志的形式异步写入数据库,去除了买卖订单的事务,还可以通过批量写入的方式来进一步优化写入速度。利用消息中间件的广播机制,撮合系统可以建立多套子系统同时运行,形成多节点热备架构,只要有一个子系统返回了撮合成交信息就可以直接返回数据,提高了稳定性。
具体地,在S100中,获取多个待处理订单请求,将多个待处理订单请求转入多个代理服务中,通过所述多个代理服务对所述多个待处理请求进行并行预处理得到多个消息类型的订单。在此,通过多个代理服务(Agent)获取多个待处理的订单请求,需要说明的是,单一代理服务可以获取多个待处理的订单请求,接着使用多个代理服务对获取到的多个待处理订单进行并行预处理,例如并行进行校验处理,以便于拒绝不符合校验要求的订单请求。在本申请一可选实施例中,可以通过多个代理服务校验订单请求是否为预设规则匹配的订单请求,若否,则拒绝该订单请求。然后通过预处理后的订单请求在代理服务中转换为消息类型格式,以便于后续发送给流处理消息队列进行后续数据传输。
在S200中,将所有消息类型的订单放入第一流处理消息队列中,将每个第一流处理消息队列中的消息类型的订单发送至多个撮合引擎。在此,可以将所有消息类型的订单按照进入第一流处理消息队列的时间顺序依序放入第一流处理消息队列中,然后通过第一流处理消息队列将每个第一流处理消息队列中的订单发送到多个撮合引擎(MatchingEngine)中,例如使用流处理消息队列的广播机制将队列中的单一订单广播至所有撮合引擎中进行撮合处理,以实现多节点热备架构,只要有一个撮合引擎在运行就可以正常完成订单的撮合处理。
在S300中,通过所述多个撮合引擎对所述消息类型的订单进行撮合处理,得到成交信息,将所述成交信息放入第二流处理消息队列中。在此,通过所述多个撮合引擎在内存中对所述消息类型的订单进行撮合处理,得到买卖订单匹配撮合后的成交信息,将所述成交信息放入第二流处理消息队列中。
在S400中,将第二流处理消息队列中的成交信息进行去重处理,得到去重后的成交信息,将去重后的成交信息写入数据库,完成订单撮合处理。在此,多个撮合引擎可以获取到重复的订单内容,会得到重复的成交信息,因而对第二流处理消息队列中的成交信息进行去重处理,删除重复的成交信息,将去重后的成交信息写入数据库,以完成订单撮合处理。从而通过消息中间件对撮合系统和数据库进行解耦,仅在内存中撮合订单,将成交信息异步写入数据库,以使撮合性能只依赖于内存数据,大大提升撮合性能。
在本申请一可选实施例中,在S100中,获取所有待处理订单的订单参数,通过所述多个代理服务对所述订单参数进行并行校验,得到通过校验的订单;将通过校验的订单对应的格式转成消息类型,得到消息类型的订单。在此,获取所有待处理订单的订单参数,将所有待处理订单的订单参数转入多个代理服务中以进行并行校验,校验失败的订单被拒绝,通过校验的订单则进行格式转换,得到消息类型格式下的订单,以便于发送至第一流处理消息队列中进行后续处理。
在本申请一可选实施例中,在S200中,基于第一流处理消息队列的广播机制将每个第一流处理消息队列中的消息类型的订单发送至多个撮合引擎。在此,所述第一流处理消息队列可以为流处理消息平台上的消息队列,例如KAFKA上的消息队列,通过第一流处理消息队列的广播机制将每个第一流处理消息队列中的消息类型的订单广播发送至多个撮合引擎,例如,在消息队列中有一个消息A,消息A为订单A的消息类型格式文件,通过第一流处理消息队列将消息A广播至至少两个撮合引擎中,则每个撮合引擎中均获取到消息A,即每个撮合引擎中均获知订单A的数据信息。
在本申请一可选实施例中,在S300中,使用所述多个撮合引擎匹配所述消息类型的订单,当存在成交的订单时,根据成交的订单对应的信息生成成交信息。在此,使用所述多个撮合引擎匹配所述消息类型的订单,将买单和卖单进行匹配,如果两个订单之间是可以成交的,那么基于成交的订单生成成交信息,可以更改订单在内存中的状态,例如标记为已成交。
在本申请一可选实施例中,在S400中,使用幂等队列对第二流处理消息队列中的成交信息进行去重处理。在此,可以使用幂等队列对第二流处理消息队列中的成交信息进行去重处理,删除重复的成交信息,避免浪费系统资源。
在本申请一可选实施例中,在S300中,根据成交的订单对应的信息生成成交订单唯一标识码。在此,根据成交的订单对应的参数信息生成成交订单唯一标识码(ID),以便于高效进行成交信息的去重处理。
在本申请一可选实施例中,在S400中,获取单一成交信息时判断在幂等队列中是否存在所述成交信息对应的订单唯一标识码,若是,则抛弃所述成交信息;若否,则在幂等队列中存储所述成交信息对应的订单唯一标识码。在此,获取单一成交信息时判断在幂等队列中是否存在所述成交信息对应的订单唯一标识码(ID),若已存有该ID,则已向数据库保存有该成交信息,则抛弃重复的成交信息;若未存有该ID,则在幂等队列中存储所述成交信息对应的订单唯一标识码,并将所述成交信息作为去重后的成交信息发送至数据库中进行保存。
在本申请一可选实施例中,将去重后的成交信息写入数据库之前,根据去重后的成交信息确定对应的二进制日志文件。在此,将去重后的成交信息形成对应的二进制日志文件(Bin Log)写入数据库,最终的成交信息是以二进制日志的形式异步写入数据库,去除了买卖订单的事务,还可以通过批量写入的方式来进一步优化写入速度。
在本申请一可选实施例中,所述第一流处理消息队列包括KAFKA,所述第二流处理消息队列包括KAFKA。在此,通过KAFKA这样的流处理消息平台,也就是消息中间件,来对撮合系统和数据库进行解耦,仅在内存中撮合订单,将成交信息异步写入数据库,以使撮合性能只依赖于内存数据,大大提升撮合性能。同时,利用消息中间件的广播机制,撮合系统可以建立多套子系统同时运行,形成多节点热备架构,只要有一个子系统返回了撮合成交信息就可以直接返回数据,提高了稳定性。
图2示出了本申请一可选实施例中的一种多节点撮合订单的方法流程示意图,在此,第一流处理消息队列包括KAFKA消息队列,第二流处理消息队列包括KAFKA消息队列。将多个包含订单的请求发送至多个代理(Agent)中,此处的代理即为代理服务,单一代理服务可以处理多个请求,通过多个代理处理订单参数的校验,然后转成消息类型放入KAFKA消息队列中。接着多个撮合引擎获取到KAFKA消息队列中广播出的消息类型的订单,在内存中对订单进行撮合处理,将获取到的成交信息发送到KAFKA消息队列中。KAFKA消息队列的广播机制让三个全量数据的撮合节点(即撮合引擎)能够同时运行,做到了热备的作用,即只要有一个节点在运行,系统就可以正常运行。
接着,由于多个撮合引擎同时在工作,每一个撮合引擎都会对同一个订单返回一次撮合结果,对成功成交的订单对应的成交信息会返回多个相同的成交信息,因此通过幂等队列对成交信息进行去重处理。因为这里有三个撮合引擎,同一份数据被一摸一样的处理了三次,产生了三笔一样的结果。对最终落库的只需要一笔成交信息。三笔成交信息会通过订单本身的信息生成一个唯一的ID,这个唯一ID用来做去重。幂等验证系统内部会存储这个唯一ID,当拿到成交信息先检查这个ID是否已经在自己的存储系统中,如果是就抛弃消息。将数据作为二进制日志(Bin Log)写入数据库中,完成对订单的撮合处理。从而通过消息中间件对撮合系统和数据库进行解耦,仅在内存中撮合订单,将成交信息异步写入数据库,以使撮合性能只依赖于内存数据,大大提升撮合性能。最终的成交信息是以二进制日志的形式异步写入数据库,去除了买卖订单的事务,还可以通过批量写入的方式来进一步优化写入速度。利用消息中间件的广播机制,撮合系统可以建立多套子系统同时运行,形成多节点热备架构,只要有一个子系统返回了撮合成交信息就可以直接返回数据,提高了稳定性。需要说明的是,由于撮合系统需要尽可能的低延迟、高性能,所以在语言选择上需要选择C语言或是Rust语言可以达到性能上的最佳效果,但出于开发成本考虑,也可以选用Golang,牺牲部分性能优势换取更加成熟和丰富的现成组件库,比如C语言和Rust语言相比于Golang,不存在垃圾回收机制,需要开发自己来处理内存回收。Golang因为垃圾回收机制的存在,在自动回收内存时需要停止所有的运行动作(Stop the world),在运行效率上会比C语言和Rust语言慢一些。从而快速和可靠的实现这套方案。
本申请实施例还提供了一种计算机可读介质,其上存储有计算机可读指令,所述计算机可读指令可被处理器执行以实现前述一种多节点撮合订单的方法。
与上文所述的方法相对应的,本申请还提供一种终端,其包括能够执行上述图1或图2或各个实施例所述的方法步骤的模块或单元,这些模块或单元可以通过硬件、软件或软硬结合的方式来实现,本申请并不限定。例如,在本申请一实施例中,还提供了一种用于多节点撮合订单的设备,其中,所述设备包括:
一个或多个处理器;以及
存储有计算机可读指令的存储器,所述计算机可读指令在被执行时使所述处理器执行前述所述一种多节点撮合订单的方法的操作。
例如,计算机可读指令在被执行时使所述一个或多个处理器:
获取多个待处理订单请求,将多个待处理订单请求转入多个代理服务中,通过所述多个代理服务对所述多个待处理请求进行并行预处理得到多个消息类型的订单;将所有消息类型的订单放入第一流处理消息队列中,将每个第一流处理消息队列中的消息类型的订单发送至多个撮合引擎;通过所述多个撮合引擎对所述消息类型的订单进行撮合处理,得到成交信息,将所述成交信息放入第二流处理消息队列中;将第二流处理消息队列中的成交信息进行去重处理,得到去重后的成交信息,将去重后的成交信息写入数据库,完成订单撮合处理。
图3示出了根据本申请另一方面提供的一种用于多节点撮合订单的系统框架结构示意图,该系统包括至少一个代理服务100、至少两个撮合引擎200、去重模块300和数据库400,其中,所述至少一个代理服务100获取多个待处理订单请求,对所述多个待处理请求进行并行预处理得到多个消息类型的订单,将所有消息类型的订单放入第一流处理消息队列中,将每个第一流处理消息队列中的消息类型的订单发送至所述撮合引擎200;所述至少两个撮合引擎200获取第一流处理消息队列中的消息类型的订单,对所述消息类型的订单进行撮合处理,得到成交信息,将所述成交信息放入第二流处理消息队列中;所述去重模块300获取所述第二流处理消息队列中的成交信息,将所述成交信息进行去重处理,得到去重后的成交信息,以使得所述数据库获取所述去重后的成交信息;所述数据库400获取所述去重后的成交信息,完成订单撮合处理。从而通过消息中间件对撮合系统和数据库进行解耦,仅在内存中撮合订单,将成交信息异步写入数据库,以使撮合性能只依赖于内存数据,大大提升撮合性能。最终的成交信息是以二进制日志的形式异步写入数据库,去除了买卖订单的事务,还可以通过批量写入的方式来进一步优化写入速度。利用消息中间件的广播机制,撮合系统可以建立多套子系统同时运行,形成多节点热备架构,只要有一个子系统返回了撮合成交信息就可以直接返回数据,提高了稳定性。
需要说明的是,所述至少一个代理服务100、至少两个撮合引擎200、去重模块300和数据库400执行的内容分别与上述步骤S100、S200、S300和S400中的内容相同或相应相同,为简明起见,在此不再赘述。
在本申请一可选实施例中,所述系统还包括日志模块500,所述日志模块500根据去重后的成交信息确定对应的二进制日志文件。在此,日志模块500将去重后的成交信息形成对应的二进制日志文件(Bin Log)写入数据库,最终的成交信息是以二进制日志的形式异步写入数据库,去除了买卖订单的事务,还可以通过批量写入的方式来进一步优化写入速度。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(ASIC)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本申请的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。
另外,本申请的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本申请的方法和/或技术方案。而调用本申请的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。
对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
Claims (13)
1.一种多节点撮合订单的方法,其中,所述方法包括:
获取多个待处理订单请求,将多个待处理订单请求转入多个代理服务中,通过所述多个代理服务对所述多个待处理请求进行并行预处理得到多个消息类型的订单;
将所有消息类型的订单放入第一流处理消息队列中,将每个第一流处理消息队列中的消息类型的订单发送至多个撮合引擎;
通过所述多个撮合引擎对所述消息类型的订单进行撮合处理,得到成交信息,将所述成交信息放入第二流处理消息队列中;
将第二流处理消息队列中的成交信息进行去重处理,得到去重后的成交信息,将去重后的成交信息写入数据库,完成订单撮合处理。
2.根据权利要求1所述的方法,其中,所述通过所述多个代理服务对所述多个待处理请求进行并行预处理得到多个消息类型的订单,包括:
获取所有待处理订单的订单参数,通过所述多个代理服务对所述订单参数进行并行校验,得到通过校验的订单;
将通过校验的订单对应的格式转成消息类型,得到消息类型的订单。
3.根据权利要求1所述的方法,其中,将每个第一流处理消息队列中的消息类型的订单发送至多个撮合引擎,包括:
基于第一流处理消息队列的广播机制将每个第一流处理消息队列中的消息类型的订单发送至多个撮合引擎。
4.根据权利要求1所述的方法,其中,所述通过所述多个撮合引擎对所述消息类型的订单进行撮合处理,得到成交信息,包括:
使用所述多个撮合引擎匹配所述消息类型的订单,当存在成交的订单时,根据成交的订单对应的信息生成成交信息。
5.根据权利要求4所述的方法,其中,将第二流处理消息队列中的成交信息进行去重处理,包括:
使用幂等队列对第二流处理消息队列中的成交信息进行去重处理。
6.根据权利要求5所述的方法,其中,根据成交的订单对应的信息生成成交信息,包括:
根据成交的订单对应的信息生成成交订单唯一标识码。
7.根据权利要求6所述的方法,其中,使用幂等队列对第二流处理消息队列中的成交信息进行去重处理,包括:
获取单一成交信息时判断在幂等队列中是否存在所述成交信息对应的订单唯一标识码,若是,则抛弃所述成交信息;
若否,则在幂等队列中存储所述成交信息对应的订单唯一标识码。
8.根据权利要求1所述的方法,其中,所述将去重后的成交信息写入数据库之前,还包括:
根据去重后的成交信息确定对应的二进制日志文件。
9.根据权利要求1所述的方法,其中,所述第一流处理消息队列包括KAFKA,所述第二流处理消息队列包括KAFKA。
10.一种用于多节点撮合订单的系统,其中,所述系统包括至少一个代理服务、至少两个撮合引擎、去重模块和数据库,其中,
所述至少一个代理服务获取多个待处理订单请求,对所述多个待处理请求进行并行预处理得到多个消息类型的订单,将所有消息类型的订单放入第一流处理消息队列中,将每个第一流处理消息队列中的消息类型的订单发送至所述撮合引擎;
所述至少两个撮合引擎获取第一流处理消息队列中的消息类型的订单,对所述消息类型的订单进行撮合处理,得到成交信息,将所述成交信息放入第二流处理消息队列中;
所述去重模块获取所述第二流处理消息队列中的成交信息,将所述成交信息进行去重处理,得到去重后的成交信息,以使得所述数据库获取所述去重后的成交信息;
所述数据库获取所述去重后的成交信息,完成订单撮合处理。
11.根据权利要求10所述的系统,其中,所述系统还包括日志模块,其中,
所述日志模块根据去重后的成交信息确定对应的二进制日志文件。
12.一种计算机可读介质,其上存储有计算机可读指令,所述计算机可读指令可被处理器执行以实现如权利要求1至9中任一项所述的方法。
13.一种用于多节点撮合订单的设备,其中,所述设备包括:
一个或多个处理器;以及
存储有计算机可读指令的存储器,所述计算机可读指令在被执行时使所述处理器执行如权利要求1至9中任一项所述方法的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210610532.1A CN115204965A (zh) | 2022-05-31 | 2022-05-31 | 一种多节点撮合订单的方法、系统及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210610532.1A CN115204965A (zh) | 2022-05-31 | 2022-05-31 | 一种多节点撮合订单的方法、系统及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115204965A true CN115204965A (zh) | 2022-10-18 |
Family
ID=83575509
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210610532.1A Pending CN115204965A (zh) | 2022-05-31 | 2022-05-31 | 一种多节点撮合订单的方法、系统及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115204965A (zh) |
-
2022
- 2022-05-31 CN CN202210610532.1A patent/CN115204965A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8904225B2 (en) | Stream data processing failure recovery method and device | |
CN107122296B (zh) | 用于测试接口的数据断言的方法及设备 | |
US9128862B2 (en) | Efficient checksums for shared nothing clustered filesystems | |
CN106649828B (zh) | 一种数据查询方法及系统 | |
CN110795287B (zh) | 数据恢复方法、系统、电子设备及计算机存储介质 | |
CN111782207B (zh) | 任务流代码生成方法、装置、设备及存储介质 | |
US10423625B2 (en) | Exactly-once semantics for streaming analytics in non-idempotent output operations | |
CN111553652B (zh) | 业务处理方法及装置 | |
CN107729541A (zh) | 一种数据处理方法、装置及计算机可读存储介质 | |
WO2022041672A1 (zh) | 分布式数据库系统的全量备份方法、装置及计算机可读存储介质 | |
CN111459474B (zh) | 一种模板化的数据处理方法及装置 | |
CN113282583A (zh) | 一种数据存储方法、装置、设备和存储介质 | |
CN112037003A (zh) | 文件对账处理方法及装置 | |
CN112527841A (zh) | 一种流数据合并处理方法及装置 | |
CN115204965A (zh) | 一种多节点撮合订单的方法、系统及设备 | |
CN114491662B (zh) | 一种基于区块链的数据资产审计方法、系统及设备 | |
EP1610234A1 (en) | Online transactional data processing system | |
US10509659B1 (en) | Input processing logic to produce outputs for downstream systems using configurations | |
CN111737223B (zh) | 一种文件拷贝方法、装置、设备及存储介质 | |
CN115131192A (zh) | 基于图形流水线的数据处理方法、装置、设备及存储介质 | |
CN114896276A (zh) | 数据存储方法、装置、电子设备及分布式存储系统 | |
CN112597119A (zh) | 一种处理日志的生成方法、装置及存储介质 | |
CN113282347A (zh) | 插件运行方法、装置、设备及存储介质 | |
CN111459931A (zh) | 数据查重方法和数据查重装置 | |
CN113722386B (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 |