行情任务处理方法、装置、计算机设备及可读存储介质与流程

文档序号:33711954发布日期:2023-04-01 00:15阅读:28来源:国知局
行情任务处理方法、装置、计算机设备及可读存储介质与流程

1.本发明涉及计数据处理技术领域,尤其涉及一种行情任务处理方法、装置、计算机设备及可读存储介质。


背景技术:

2.在金融科技领域,每天都存在大量不同业务类型的行情任务。行情任务一般是通过报价引擎进行价格的推送触发,但是由于报价具有时间顺序性,订单处理系统必须保证先推送的价格优先处理,因此现有的行情任务处理系统大多数为串行任务,并发度不高,在行情波动剧烈情况下容易导致待处理任务堆积。


技术实现要素:

3.有鉴于此,本发明的目的是为了克服现有技术中的不足,提供一种能够应用于如金融科技领域或其他技术领域的行情任务处理方法、装置、计算机设备及可读存储介质。
4.本发明提供如下技术方案:
5.第一方面,本公开实施例中提供了一种行情任务处理方法,所述方法包括:
6.生成行情任务,每笔所述行情任务对应一个订单数据;
7.利用redis分布式锁对所述行情任务进行抢锁,并对抢锁成功的行情任务进行锁定;
8.启动行情任务处理线程池,将锁定的行情任务对应的订单数据提交给所述行情任务处理线程池,以对所述订单数据进行处理;
9.启动守护线程,利用所述守护线程监控所述行情任务的处理时长;
10.调用所述守护线程的异步处理接口,释放超过有效时长的行情任务,并对已释放的行情任务重新进行抢锁,接管已释放的行情任务。
11.进一步地,所述生成行情任务,包括:
12.读取redis数据库中的行情信息,所述行情信息包括相关业务的货币对、行情价格和报价时间;
13.按照所述报价时间的先后对所述行情价格进行排序,将所述货币对和所述行情价格与对应的订单数据建立关联关系,以生成所述行情任务。
14.进一步地,所述利用redis分布式锁对所述行情任务进行抢锁,并对抢锁成功的行情任务进行锁定,包括:
15.利用所述redis分布式锁对所述行情任务进行抢锁,并判断是否抢锁成功;
16.若成功,则将机器ip和抢锁时间更新到行情任务记录,并对抢锁成功的行情任务进行锁定;
17.若失败,则继续对抢锁失败的行情任务进行抢锁,直至抢到为止。
18.进一步地,所述对所述订单数据进行处理,包括:
19.利用所述行情任务处理线程池,从所述订单数据中读取对应的基本信息,其中,所
述基本信息包括货币对、成交价格、买卖方向、冻结金额、结算账号和保证金账号中的至少一项;
20.调用核心系统对所述订单数据依次进行释放冻结金额处理、保证金账号入账处理和记录核心账务处理,并将所述订单数据的状态更新为处理完成。
21.进一步地,所述将所述订单数据的状态更新为处理完成之后,还包括:
22.将所述订单数据对应的行情任务的状态更新为处理完成,并释放该行情任务对应的redis分布式锁。
23.进一步地,所述启动守护线程,利用所述守护线程监控所述行情任务的处理时长,包括:
24.开启所述守护线程,利用所述守护线程检测抢锁的剩余时长;
25.在所述剩余时长距离所述有效时长还剩预设时间时,判断是否有所述行情任务的状态为处理完成,若有,则自动把该行情任务的有效时间延长一倍。
26.进一步地,所述调用所述守护线程的异步处理接口,释放超过有效时长的行情任务,并对已释放的行情任务重新进行抢锁,接管已释放的行情任务,包括:
27.调用所述守护线程的异步处理接口,查询状态为处理完成的行情任务;
28.将当前时间与所述抢锁时间进行比较,判断是否超过所述有效时长;
29.若超过,则根据所述机器ip发起心跳检测,判断对应的机器是否存活;
30.若不存活,则释放对应的行情任务,并对已释放的行情任务重新进行抢锁,接管已释放的行情任务。
31.第二方面,本公开实施例中提供了一种行情任务处理装置,所述装置包括:
32.生成模块,生成行情任务,每笔所述行情任务对应一个订单数据;
33.锁定模块,用于利用redis分布式锁对所述行情任务进行抢锁,并对抢锁成功的行情任务进行锁定;
34.处理模块,用于启动行情任务处理线程池,将锁定的行情任务对应的订单数据提交给所述行情任务处理线程池,以对所述订单数据进行处理;
35.监控模块,用于启动守护线程,利用所述守护线程监控所述行情任务的处理时长;
36.释放模块,用于调用所述守护线程的异步处理接口,释放超过有效时长的行情任务,并对已释放的行情任务重新进行抢锁,接管已释放的行情任务。
37.第三方面,本公开实施例中提供了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现第一方面中所述行情任务处理方法的步骤。
38.第四方面,本公开实施例中提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现第一方面中所述行情任务处理方法的步骤。
39.本技术的实施例具有如下优点:
40.本技术实施例提供的行情任务处理方法,通过生成行情任务,每笔所述行情任务对应一个订单数据;利用redis分布式锁对所述行情任务进行抢锁,并对抢锁成功的行情任务进行锁定;启动行情任务处理线程池,将锁定的行情任务对应的订单数据提交给所述行情任务处理线程池,以对所述订单数据进行处理;启动守护线程,利用所述守护线程监控所
述行情任务的处理时长;调用所述守护线程的异步处理接口,释放超过有效时长的行情任务,并对已释放的行情任务重新进行抢锁,接管已释放的行情任务。通过上述方法,可实现多个行情任务并发处理,从而有效避免了行情任务堆积,提高了并发处理效率。
41.为使本发明的上述目的、特征和优点能更明显和易懂,下文特举较佳实施例,并配合所附附图,做详细说明如下。
附图说明
42.为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
43.图1示出了本技术实施例提供的一种行情任务处理方法的流程图;
44.图2示出了本技术实施例提供的另一种行情任务处理方法的流程图;
45.图3示出了本技术实施例提供的再一种行情任务处理方法的流程图;
46.图4示出了本技术实施例提供的一种行情任务处理装置的结构示意图;
47.图5示出了本技术实施例提供的计算机设备的硬件架构示意图。
具体实施方式
48.下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。
49.需要说明的是,当元件被称为“固定于”另一个元件,它可以直接在另一个元件上或者也可以存在居中的元件。当一个元件被认为是“连接”另一个元件,它可以是直接连接到另一个元件或者可能同时存在居中元件。相反,当元件被称作“直接在”另一元件“上”时,不存在中间元件。本文所使用的术语“垂直的”、“水平的”、“左”、“右”以及类似的表述只是为了说明的目的。
50.在本发明中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
51.此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
52.除非另有定义,本文所使用的所有的技术和科学术语与属于本技术的技术领域的技术人员通常理解的含义相同。本文中在模板的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在限制本发明。本文所使用的术语“及/或”包括一个或多个相关的所列项目的任意的和所有的组合。
53.实施例1
54.如图1所示,为本技术实施例中的一种行情任务处理方法的流程图,本技术实施例提供的行情任务处理方法包括以下步骤:
55.步骤s110,生成行情任务,每笔所述行情任务对应一个订单数据。
56.应当明白的是,由行情任务处理系统接收报价引擎推送的行情价格,将包含相关业务的货币对、行情价格、报价时间等行情信息写入redis数据库。通过读取所述redis数据库中的行情信息,将行情信息与对应的订单数据建立关联关系,进而生成行情任务,因此每笔行情任务对应一个订单数据。
57.在一种可选的实施方式中,如图2所示,步骤s110包括:
58.步骤s111,读取redis数据库中的行情信息,所述行情信息包括相关业务的货币对、行情价格和报价时间;
59.步骤s112,按照所述报价时间的先后对所述行情价格进行排序,将所述货币对和所述行情价格与对应的订单数据建立关联关系,以生成所述行情任务。
60.具体地,每台机器在任务启动时,开启一个实时轮询批量,500毫秒轮询一次,并实时轮询批读取redis数据库中包含相关业务的货币对、行情价格和报价时间的所有行情信息后,按照货币对的分组与报价时间的先后对行情价格进行排序,将货币对和行情价格与对应的订单数据建立关联关系。可以理解的是,在本实施例中,实时轮询批量设置为500毫秒轮询一次,具体的时间可根据实际情况确定,本技术实施例对此不作限定。
61.通过生成行情任务,并将行情任务与对应的订单数据关联起来,保证了行情价格的处理的时间顺序性。
62.步骤s120,利用redis分布式锁对所述行情任务进行抢锁,并对抢锁成功的行情任务进行锁定。
63.可以理解的是,所述redis分布式锁是满足分布式系统或集群模式下多进程可见并且互斥的锁。随着技术快速发展,数据规模增大,一个任务往往会部署在多台机器上,在有些场景中,为了保证数据不重复,要求在同一时刻,同一任务只在一个机器上运行,即保证某一方法同一时刻只能被一个线程执行。在单机环境中,任务是在同一进程下的,只需要保证单进程多线程环境中的线程安全性,通过java提供的一些线程安全的类等就可以做到。而在多机器部署环境中,不同机器不同进程,就需要在多进程下保证线程的安全性,因此,分布式锁应运而生。
64.在一种可选的实施方式中,如图3所示,步骤s120包括:
65.步骤s121,利用所述redis分布式锁对所述行情任务进行抢锁,并判断是否抢锁成功;
66.步骤s1211,若成功,则将机器ip和抢锁时间更新到行情任务记录,并对抢锁成功的行情任务进行锁定;
67.步骤s1212,若失败,则继续对抢锁失败的行情任务进行抢锁,直至抢到为止。
68.具体地,根据key=货币对+行情价格,利用所述redis分布式锁对所述行情任务进行抢锁,并判断是否抢锁成功。若抢锁成功,将对应机器的机器ip和抢锁时间更新到行情任务的记录中,并对抢锁成功的行情任务进行锁定;若抢锁失败,则对抢锁失败的其他行情任务进行抢锁,直到抢到为止。
69.通过redis分布式锁对所述行情任务进行抢锁,使得多台机器可同时处理行情任务,且每台机器支持多个行情并发处理,从而避免行情任务堆积,且集群内每台机器都可以处理行情任务,当某台机器故障时,可以由其他机器自动对行情任务进行抢锁。
70.步骤s130,启动行情任务处理线程池,将锁定的行情任务对应的订单数据提交给所述行情任务处理线程池,以对所述订单数据进行处理。
71.在本实施例中,每台机器在任务启动时,开启一个行情任务处理线程池。将锁定的行情任务对应的订单数据提交给行情任务处理线程池,并利用所述行情任务处理线程池从订单数据中读取对应的货币对、成交价格、买卖方向、冻结金额、结算账号、保证金账号等基本信息。
72.进一步地,调用核心系统,完成对所述结算账号的释放冻结金额、保证金账号入账,记录核心账务等处理,并记录一笔交易表数据,最后将订单数据的状态更新为处理完成。当所有订单数据的状态都更新为处理完成后,将所述订单数据对应的行情任务的状态更新为处理完成,并释放该行情任务对应的redis分布式锁。
73.通过利用行情任务处理线程池对所述订单数据进行处理,可实现多个行情任务并发处理,从而避免了行情任务的堆积,提高了行情任务并发处理效率。
74.步骤s140,启动守护线程,利用所述守护线程监控所述行情任务的处理时长。
75.具体地,每台机器在任务启动时,开启一个守护线程,每100毫秒轮询一次,用于监控本机器的行情任务处理时长和抢锁的剩余时长。可以理解的是,在本实施例中,守护线程设置为每100毫秒轮询一次,具体的时间可根据实际情况确定,本技术实施例对此不作限定。
76.需要指出的是,每个行情任务均设置有有效时间,利用所述守护线程检测抢锁的剩余时长,在所述剩余时长距离所述有效时长还剩预设时间时,例如还剩1秒时,判断是否有所述行情任务的状态为处理完成,若有,则自动把该行情任务的有效时间延长一倍。因为若有行情任务的状态为处理完成,则证明该行情任务是没有被锁定的,需要机器来接管,那么此时自动把该行情任务的有效时间延长一倍可以继续轮询可以接管该行情任务的机器。
77.通过利用所述守护线程监控所述行情任务的处理时长,可实现多个行情任务并发处理,从而避免了行情任务的堆积,提高了行情任务并发处理效率。
78.步骤s150,调用所述守护线程的异步处理接口,释放超过有效时长的行情任务,并对已释放的行情任务重新进行抢锁,接管已释放的行情任务。
79.进一步地,在开启守护线程后,同时调用守护线程的异步处理接口,利用所述异步处理接口查询状态为处理完成的行情任务,再用当前时间与抢锁时间进行比较,判断是否已超过该行情任务的有效时长。如果超过了该行情任务的有效时长,则根据机器ip对对应的机器心跳检测,以检测该机器是否存活,若该机器不存活,则对该机器接管的行情任务进行释放,以使其他机器重新对已释放的行情任务进行抢锁,从而接管该行情任务。
80.本技术实施例提供的行情任务处理方法,通过生成行情任务,每笔所述行情任务对应一个订单数据;利用redis分布式锁对所述行情任务进行抢锁,并对抢锁成功的行情任务进行锁定;启动行情任务处理线程池,将锁定的行情任务对应的订单数据提交给所述行情任务处理线程池,以对所述订单数据进行处理;启动守护线程,利用所述守护线程监控所述行情任务的处理时长;调用所述守护线程的异步处理接口,释放超过有效时长的行情任
务,并对已释放的行情任务重新进行抢锁,接管已释放的行情任务。通过上述方法,可实现多个行情任务并发处理,从而有效避免了行情任务堆积,提高了并发处理效率。
81.实施例2
82.如图4所示,为本技术实施例中的一种行情任务处理装置400的结构示意图,其装置包括:
83.生成模块410,生成行情任务,每笔所述行情任务对应一个订单数据;
84.锁定模块420,用于利用redis分布式锁对所述行情任务进行抢锁,并对抢锁成功的行情任务进行锁定;
85.处理模块430,用于启动行情任务处理线程池,将锁定的行情任务对应的订单数据提交给所述行情任务处理线程池,以对所述订单数据进行处理;
86.监控模块440,用于启动守护线程,利用所述守护线程监控所述行情任务的处理时长;
87.释放模块450,用于调用所述守护线程的异步处理接口,释放超过有效时长的行情任务,并对已释放的行情任务重新进行抢锁,接管已释放的行情任务。
88.可选地,上述行情任务处理装置还可以包括:
89.第一读取模块,用于读取redis数据库中的行情信息,所述行情信息包括相关业务的货币对、行情价格和报价时间;
90.排序模块,用于按照所述报价时间的先后对所述行情价格进行排序,将所述货币对和所述行情价格与对应的订单数据建立关联关系,以生成所述行情任务。
91.可选地,上述行情任务处理装置还可以包括:
92.第一判断模块,用于利用所述redis分布式锁对所述行情任务进行抢锁,并判断是否抢锁成功;
93.更新模块,用于若成功,则将机器ip和抢锁时间更新到行情任务记录,并对抢锁成功的行情任务进行锁定;
94.抢锁模块,用于若失败,则继续对抢锁失败的行情任务进行抢锁,直至抢到为止。
95.可选地,上述行情任务处理装置还可以包括:
96.第二读取模块,用于利用所述行情任务处理线程池,从所述订单数据中读取对应的基本信息,其中,所述基本信息包括货币对、成交价格、买卖方向、冻结金额、结算账号和保证金账号中的至少一项;
97.处理子模块,用于调用核心系统对所述订单数据依次进行释放冻结金额处理、保证金账号入账处理和记录核心账务处理,并将所述订单数据的状态更新为处理完成。
98.可选地,上述行情任务处理装置还可以包括:
99.释放子模块,用于将所述订单数据对应的行情任务的状态更新为处理完成,并释放该行情任务对应的redis分布式锁。
100.可选地,上述行情任务处理装置还可以包括:
101.检测模块,用于开启所述守护线程,利用所述守护线程检测抢锁的剩余时长;
102.第二判断模块,用于在所述剩余时长距离所述有效时长还剩预设时间时,判断是否有所述行情任务的状态为处理完成,若有,则自动把该行情任务的有效时间延长一倍。
103.可选地,上述行情任务处理装置还可以包括:
divisionmultiple access,简称为wcdma)、4g网络、5g网络、蓝牙(bluetooth)、wi-fi等无线或有线网络。
115.需要指出的是,图5仅示出了具有部件510-530的计算机设备,但是应理解的是,并不要求实施所有示出的部件,可以替代的实施更多或者更少的部件。
116.在本实施例中,存储于存储器510中的行情任务处理方法还可以被分割为一个或者多个程序模块,并由一个或多个处理器(本实施例为处理器520)所执行,以完成本发明。
117.实施例4
118.本实施例还提供一种计算机可读存储介质,计算机可读存储介质其上存储有计算机程序,计算机程序被处理器执行时实现实施例中行情任务处理方法的步骤。
119.本实施例中,计算机可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等)、随机访问存储器(ram)、静态随机访问存储器(sram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、可编程只读存储器(prom)、磁性存储器、磁盘、光盘等。在一些实施例中,计算机可读存储介质可以是计算机设备的内部存储单元,例如该计算机设备的硬盘或内存。在另一些实施例中,计算机可读存储介质也可以是计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(smart media card,简称为smc),安全数字(secure digital,简称为sd)卡,闪存卡(flash card)等。当然,计算机可读存储介质还可以既包括计算机设备的内部存储单元也包括其外部存储设备。本实施例中,计算机可读存储介质通常用于存储安装于计算机设备的操作系统和各类应用软件。此外,计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的各类数据。
120.在这里示出和描述的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制,因此,示例性实施例的其他示例可以具有不同的值。
121.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
122.以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1