交易数据存储方法、装置、设备及介质制造方法及图纸

技术编号:38860785 阅读:13 留言:0更新日期:2023-09-17 10:03
本发明专利技术涉及数据处理技术领域,提供一种交易数据存储方法、装置、设备及介质,能够基于内存文件映射技术将二进制交易数据同步写入内存区域,有效降低了交易委托落库过程中的IO开销,同时预先分配存储空间,以空间换时间,优化了消息传输性能;每隔预设时间间隔启动异步线程将内存区域中的数据写入磁盘的文件区域,由于磁盘数据不会丢失,因此支持任意位置的消息拉取与重传,解决了同步刷盘时由于故障导致的数据丢失问题;通过异步线程并行处理,提高了数据的写入吞吐能力,进而提高了交易消息持久化的效率。化的效率。化的效率。

【技术实现步骤摘要】
交易数据存储方法、装置、设备及介质


[0001]本专利技术涉及数据处理
,尤其涉及一种交易数据存储方法、装置、设备及介质。

技术介绍

[0002]对于证券交易系统,每日交易委托消息的数据量大,数据持久化落库写入对于性能与数据的准确性要求都较高。
[0003]但传统交易消息主要是通过串行顺序存储的方式进行处理,数据写入完成之后才能进行下一笔交易的处理。这种方式性能低且时延高,在交易委托消息数据量大的场景下则无法满足系统的性能要求。

技术实现思路

[0004]鉴于以上内容,有必要提供一种交易数据存储方法、装置、设备及介质,旨在解决对交易消息持久化效率低的问题。
[0005]一种交易数据存储方法,所述交易数据存储方法包括:通过OnMessge接口进行消息订阅处理;当接收到通过所述OnMessge接口报送的二进制交易数据时,获取预留的内存区域;基于内存文件映射技术将所述二进制交易数据同步写入所述内存区域;每隔预设时间间隔启动异步线程将所述内存区域中的数据写入磁盘的文件区域;其中,所述文件区域中包括索引文件及数据文件;基于所述索引文件从所述数据文件中读取消息并写入至二进制消息列表;通过调用异步线程池中的线程将所述二进制消息列表中的消息传入回调函数中进行消息解析,得到带有消息序号的消息文件;按照所述消息序号将所述消息文件写入持久化消息环形队列;从所述持久化消息环形队列中按照批次读取消息并提交至异步分发线程池;基于所述异步分发线程池按照消息类型对从所述持久化消息环形队列中读取到的消息执行持久化处理。
[0006]根据本专利技术优选实施例,所述获取预留的内存区域前,所述方法还包括:基于文件写入类在内存中预先分配预设体积的存储空间;对所述存储空间进行初始化处理,得到所述内存区域。
[0007]根据本专利技术优选实施例,所述基于所述索引文件从所述数据文件中读取消息并写入至二进制消息列表包括:从所述索引文件中读取消息位置及消息长度;基于所述消息位置及所述消息长度从所述数据文件中读取消息并写入至所述二进制消息列表。
[0008]根据本专利技术优选实施例,所述从所述持久化消息环形队列中按照批次读取消息并提交至异步分发线程池包括:获取预先配置的每批次的消息处理量;按照每批次的消息处理量从所述持久化消息环形队列中读取消息并提交至所述异步分发线程池;其中,所述异步分发线程池中包括多个异步分发线程,每个异步分发线程用于对从所述持久化消息环形队列中读取到的消息进行分发处理。
[0009]根据本专利技术优选实施例,所述基于所述异步分发线程池按照消息类型对从所述持久化消息环形队列中读取到的消息执行持久化处理包括:从所述读取到的消息中获取非状态消息类型的消息组成第一消息集合;确定所述第一消息集合中每条第一消息的消息属性,及确定所述异步分发线程池中每个异步分发线程的消息处理量;根据每条第一消息的消息属性及每个异步分发线程的消息处理量对所述第一消息集合中的消息进行分组,得到至少一个消息组;获取预先配置的批量入库条数;根据所述批量入库条数对每个消息组中的消息进行分批处理,得到多批次的消息列表;将所述多批次的消息列表提交至异步落库线程池;基于所述异步落库线程池中的每个线程,调用与每个消息属性对应的业务接口将每条第一消息并行写入数据库中对应的业务表;其中,所述非状态消息类型的消息没有保序需求。
[0010]根据本专利技术优选实施例,所述基于所述异步分发线程池按照消息类型对从所述持久化消息环形队列中读取到的消息执行持久化处理包括:从所述读取到的消息中获取状态消息类型的消息组成第二消息集合;获取与所述状态消息类型对应的消息标识符;基于所述消息标识符对所述第二消息集合中的每条第二消息进行标记;将标记后的每条第二消息写入状态消息环形队列;从所述状态消息环形队列中读取消息进行持久化处理;其中,所述状态消息类型的消息具有保序需求。
[0011]根据本专利技术优选实施例,所述从所述状态消息环形队列中读取消息进行持久化处理包括:获取预先配置的分组数量;根据所述分组数量初始化至少一个分组队列,并对每个分组队列进行编号;按照业务逻辑对从所述状态消息环形队列中读取到的消息进行消息分组,得到分组消息列表及每个组的分组号;按照预先配置的计算逻辑及每个组的分组号对所述分组消息列表与所述至少一个分组队列进行匹配,并将对应分组下的消息列表写入对应的分组队列;在每个分组队列中,按照预先配置的组内消息的处理顺序依次调用对应的业务接口将每条消息串行写入数据库中对应的业务表;
其中,每个分组队列间并行执行消息落库。
[0012]一种交易数据存储装置,所述交易数据存储装置包括:处理单元,用于通过OnMessge接口进行消息订阅处理;获取单元,用于当接收到通过所述OnMessge接口报送的二进制交易数据时,获取预留的内存区域;写入单元,用于基于内存文件映射技术将所述二进制交易数据同步写入所述内存区域;所述写入单元,还用于每隔预设时间间隔启动异步线程将所述内存区域中的数据写入磁盘的文件区域;其中,所述文件区域中包括索引文件及数据文件;所述写入单元,还用于基于所述索引文件从所述数据文件中读取消息并写入至二进制消息列表;解析单元,用于通过调用异步线程池中的线程将所述二进制消息列表中的消息传入回调函数中进行消息解析,得到带有消息序号的消息文件;所述写入单元,还用于按照所述消息序号将所述消息文件写入持久化消息环形队列;读取单元,用于从所述持久化消息环形队列中按照批次读取消息并提交至异步分发线程池;持久化单元,用于基于所述异步分发线程池按照消息类型对从所述持久化消息环形队列中读取到的消息执行持久化处理。
[0013]一种计算机设备,所述计算机设备包括:存储器,存储至少一个指令;及处理器,执行所述存储器中存储的指令以实现所述交易数据存储方法。
[0014]一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一个指令,所述至少一个指令被计算机设备中的处理器执行以实现所述交易数据存储方法。
[0015]由以上技术方案可以看出,本专利技术能够基于内存文件映射技术将二进制交易数据同步写入内存区域,有效降低了交易委托落库过程中的IO开销,同时预先分配存储空间,以空间换时间,优化了消息传输性能;每隔预设时间间隔启动异步线程将内存区域中的数据写入磁盘的文件区域,由于磁盘数据不会丢失,因此支持任意位置的消息拉取与重传,解决了同步刷盘时由于故障导致的数据丢失问题;通过异步线程并行处理,提高了数据的写入吞吐能力,进而提高了交易消息持久化的效率。
附图说明
[0016]图1是本专利技术交易数据存储方法的较佳实施例的流程图。
[0017]图2是本专利技术交易数据存储装置的较佳实施例的功能模块图。
[0018]图3是本专利技术实现交易数据存储方法的较佳实施例的计算机设备的结构示意图。
具体实施方式
[0019]为了使本专利技术的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本专利技术进行详细描述。
[0020]如图1所示,是本专利技术交易数据本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种交易数据存储方法,其特征在于,所述交易数据存储方法包括:通过OnMessge接口进行消息订阅处理;当接收到通过所述OnMessge接口报送的二进制交易数据时,获取预留的内存区域;基于内存文件映射技术将所述二进制交易数据同步写入所述内存区域;每隔预设时间间隔启动异步线程将所述内存区域中的数据写入磁盘的文件区域;其中,所述文件区域中包括索引文件及数据文件;基于所述索引文件从所述数据文件中读取消息并写入至二进制消息列表;通过调用异步线程池中的线程将所述二进制消息列表中的消息传入回调函数中进行消息解析,得到带有消息序号的消息文件;按照所述消息序号将所述消息文件写入持久化消息环形队列;从所述持久化消息环形队列中按照批次读取消息并提交至异步分发线程池;基于所述异步分发线程池按照消息类型对从所述持久化消息环形队列中读取到的消息执行持久化处理。2.如权利要求1所述的交易数据存储方法,其特征在于,所述获取预留的内存区域前,所述方法还包括:基于文件写入类在内存中预先分配预设体积的存储空间;对所述存储空间进行初始化处理,得到所述内存区域。3.如权利要求1所述的交易数据存储方法,其特征在于,所述基于所述索引文件从所述数据文件中读取消息并写入至二进制消息列表包括:从所述索引文件中读取消息位置及消息长度;基于所述消息位置及所述消息长度从所述数据文件中读取消息并写入至所述二进制消息列表。4.如权利要求1所述的交易数据存储方法,其特征在于,所述从所述持久化消息环形队列中按照批次读取消息并提交至异步分发线程池包括:获取预先配置的每批次的消息处理量;按照每批次的消息处理量从所述持久化消息环形队列中读取消息并提交至所述异步分发线程池;其中,所述异步分发线程池中包括多个异步分发线程,每个异步分发线程用于对从所述持久化消息环形队列中读取到的消息进行分发处理。5.如权利要求1所述的交易数据存储方法,其特征在于,所述基于所述异步分发线程池按照消息类型对从所述持久化消息环形队列中读取到的消息执行持久化处理包括:从所述读取到的消息中获取非状态消息类型的消息组成第一消息集合;确定所述第一消息集合中每条第一消息的消息属性,及确定所述异步分发线程池中每个异步分发线程的消息处理量;根据每条第一消息的消息属性及每个异步分发线程的消息处理量对所述第一消息集合中的消息进行分组,得到至少一个消息组;获取预先配置的批量入库条数;根据所述批量入库条数对每个消息组中的消息进行分批处理,得到多批次的消息列表;
将所述多批次的消息列表提交至异步落库线程池;基于所述异步落库线程池中的每个线程,调用与每个消息属性对应的业务接口将每条第一消息并行写入数据库中对应的业务表;其中,所述非状态消息类型的消息没有保序需求。6...

【专利技术属性】
技术研发人员:雷海龙何磊黄海伦刘威
申请(专利权)人:深圳华锐分布式技术股份有限公司
类型:发明
国别省市:

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

1