基于内存映射文件的跨进程异步任务处理方法及系统技术方案

技术编号:28870984 阅读:15 留言:0更新日期:2021-06-15 23:03
本发明专利技术提供了一种基于内存映射文件的跨进程异步任务处理方法及系统,包括:步骤S1:主交易进程调用异步任务信息记录模块将需要处理的异步任务写入任务存储模块中;步骤S2:异步任务信息处理模块从任务存储模块中读取待处理的异步任务进行处理。本发明专利技术通过采用内存映射文件记录待处理任务的机制,实现跨进程任务登记和处理,主交易进程高效登记待处理任务,任务处理进程异步处理任务,既解决了额外附加的操作处理,又不影响主交易的性能,解决了各种高并发交易的附加操作,如日志记录、流量统计、异步消息发送等业务场景。

【技术实现步骤摘要】
基于内存映射文件的跨进程异步任务处理方法及系统
本专利技术涉及计算机通信
,具体地,涉及一种基于内存映射文件的跨进程异步任务处理解决方案。
技术介绍
目前解决高并发异步处理任务比较流程的办法为消息队列,一般做法为主交易作为消息生产者将需要做的任务发送到消息队列,由消息消费者异步处理任务,这种方式需要消息中间件支撑,有以下缺点:1.消息中间件过于庞大,需要单独部署,对整个系统架构带来额外开销,不适合体量较小的应用,且消息中间件本身技术复杂,需要专门的人员对其进行调优,技术成本比较大2.消息中间件一般消息的发送和接收均需要通过网络通讯,其性能低于本方案采用的内存映射文件读写3.消息中间件需要开启持久化来保障可靠性,进一步影响了消息发送接收的性能,本方案采用内存映射存储,既满足了持久化可靠性,又不影响读写性能。专利文献CN109254845A(申请号:201810847512.X)公开了一种应用于分布式通信计算服务端的线性扩展实现方法,该方法充分的将Server主进程的各种功能拆分出来,采用微服务的方式,使每一种功能形成一个进程,进程内再根据不同功能的特点,划分出若干多线程,来处理具体的逻辑任务,进程彼此之间是独立运行的,互不干扰,进程间通信使用需要传送的必要数据作为上下文,进程之间使用Socket进行通信。本专利技术通过CPU占用率、网络宽带使用情况、用户在线数,提供一个合理的负载均衡算法;通过复用Socket实现了跨进程的通信,隔离了多个用户的同时操作,极大地缓解了单进程模型的压力;通过线程池,充分的利用了硬件上的所有CPU资源,极大地降低了服务器部署成本。
技术实现思路
针对现有技术中的缺陷,本专利技术的目的是提供一种基于内存映射文件的跨进程异步任务处理方法及系统。根据本专利技术提供的一种基于内存映射文件的跨进程异步任务处理方法,包括:步骤S1:主交易进程调用异步任务信息记录模块将需要处理的异步任务写入任务存储模块中;步骤S2:异步任务信息处理模块从任务存储模块中读取待处理的异步任务进行处理。优选地,所述步骤S1中任务存储模块包括:N个存储组,每个存储组包括任务信息存储文件和任务信息索引文件;所述任务信息存储文件被格式化成多个存储单元,每个存储单元存储一个任务信息,占用固定的空间;所述任务信息索引文件记录每个存储单元的状态,组成一个循环链表按顺序存储待处理的任务信息。优选地,所述步骤S1包括:锁定任务存储模块中一个存储组,查找存储组的任务信息索引文件的循环链表,在待处理单元后面最近的空闲存储单元进行记录,记录后将当前存储单元设置为待处理。优选地,所述步骤S2包括:在异步任务处理进程中,当前异步任务处理进程与主交易进程运行在同一个服务器中。优选地,所述步骤S2包括:针对任务存储模块中每一个存储组创建一个线程,当前线程负责顺序读取存储组的任务信息索引文件的循环链表,查找最前面的状态为待处理的任务,任务处理线程池执行最前面的状态为待处理的任务,在处理完成后将任务存储单元状态设置为空闲。优选地,还包括:异步任务信息记录模块和异步任务信息处理模块均采用内存映射文件技术奖任务存储模块的存储文件映射到内存进行读写。根据本专利技术提供的一种基于内存映射文件的跨进程异步任务处理系统,包括:任务存储模块:主交易进程调用异步任务信息记录模块将需要处理的异步任务写入任务存储模块中;异步任务信息处理模块:异步任务信息处理模块从任务存储模块中读取待处理的异步任务进行处理。优选地,所述任务存储模块包括:N个存储组,每个存储组包括任务信息存储文件和任务信息索引文件;所述任务信息存储文件被格式化成多个存储单元,每个存储单元存储一个任务信息,占用固定的空间;所述任务信息索引文件记录每个存储单元的状态,组成一个循环链表按顺序存储;所述任务存储模块包括:锁定任务存储模块中一个存储组,查找存储组的任务信息索引文件的循环链表,在待处理单元后面最近的空闲存储单元进行记录,记录后将当前存储单元设置为待处理。优选地,所述异步任务信息处理模块包括:在异步任务处理进程中,当前异步任务处理进程与主交易进程运行在同一个服务器中;所述异步任务信息处理模块包括:针对任务存储模块中每一个存储组创建一个线程,当前线程负责顺序读取存储组的任务信息索引文件的循环链表,查找最前面的状态为待处理的任务,任务处理线程池执行最前面的状态为待处理的任务,在处理完成后将任务存储单元状态设置为空闲。优选地,还包括:异步任务信息记录模块和异步任务信息处理模块均采用内存映射文件技术奖任务存储模块的存储文件映射到内存进行读写。与现有技术相比,本专利技术具有如下的有益效果:1、本专利技术通过采用内存映射文件记录待处理任务的机制,实现跨进程任务登记和处理,主交易进程高效登记待处理任务,任务处理进程异步处理任务,既解决了额外附加的操作处理,又不影响主交易的性能,解决了各种高并发交易的附加操作,如日志记录、流量统计、异步消息发送等业务场景,实现了功能解耦。2、本专利技术采用内存映射文件记录待处理任务的机制,在任务信息读取写入均通过内存操作,不依赖任何外部设备和环境,其性能远远高于网络、数据库进行跨进程交互,大大降低了部署维护成本。3、本专利技术采用内存映射文件记录待处理任务的机制,可以起到任务缓冲及持久化作用,在任务处理进程忙不过来的情况下,不影响主交易登记性能,同时也不会造成待处理任务丢失,而且随着存储文件越多,能够缓冲持久化的任务也越多。附图说明通过阅读参照以下附图对非限制性实施例所作的详细描述,本专利技术的其它特征、目的和优点将会变得更明显:图1为基于内存映射文件的跨进程异步任务处理系统示意图。具体实施方式下面结合具体实施例对本专利技术进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本专利技术,但不以任何形式限制本专利技术。应当指出的是,对本领域的普通技术人员来说,在不脱离本专利技术构思的前提下,还可以做出若干变化和改进。这些都属于本专利技术的保护范围。实施例1根据本专利技术提供的一种基于内存映射文件的跨进程异步任务处理方法,包括:步骤S1:主交易进程调用异步任务信息记录模块将需要处理的异步任务写入任务存储模块中;具体地,所述步骤S1中任务存储模块包括:N个存储组,每个存储组包括任务信息存储文件和任务信息索引文件;所述任务信息存储文件被格式化成多个存储单元,每个存储单元存储一个任务信息,占用固定的空间;所述任务信息索引文件记录每个存储单元的状态,组成一个循环链表按顺序存储待处理的任务信息。具体地,所述步骤S1包括:锁定任务存储模块中一个存储组,查找存储组的任务信息索引文件的循环链表,在待处理单元后面最近的空闲存储单元进行记录,记录后将当前存储单元设置为待处理。步骤S2:异步任务信息处理模块从任务存储模块中读取待处理的异步任务进行本文档来自技高网
...

【技术保护点】
1.一种基于内存映射文件的跨进程异步任务处理方法,其特征在于,包括:/n步骤S1:主交易进程调用异步任务信息记录模块将需要处理的异步任务写入任务存储模块中;/n步骤S2:异步任务信息处理模块从任务存储模块中读取待处理的异步任务进行处理。/n

【技术特征摘要】
1.一种基于内存映射文件的跨进程异步任务处理方法,其特征在于,包括:
步骤S1:主交易进程调用异步任务信息记录模块将需要处理的异步任务写入任务存储模块中;
步骤S2:异步任务信息处理模块从任务存储模块中读取待处理的异步任务进行处理。


2.根据权利要求1所述的基于内存映射文件的跨进程异步任务处理方法,其特征在于,所述步骤S1中任务存储模块包括:N个存储组,每个存储组包括任务信息存储文件和任务信息索引文件;
所述任务信息存储文件被格式化成多个存储单元,每个存储单元存储一个任务信息,占用固定的空间;
所述任务信息索引文件记录每个存储单元的状态,组成一个循环链表按顺序存储。


3.根据权利要求1所述的基于内存映射文件的跨进程异步任务处理方法,其特征在于,所述步骤S1包括:锁定任务存储模块中一个存储组,查找存储组的任务信息索引文件的循环链表,在待处理单元后面最近的空闲存储单元进行记录,记录后将当前存储单元设置为待处理。


4.根据权利要求1所述的基于内存映射文件的跨进程异步任务处理方法,其特征在于,所述步骤S2包括:针对任务存储模块中每一个存储组创建一个线程,当前线程负责顺序读取存储组的任务信息索引文件的循环链表,查找最前面的状态为待处理的任务,任务处理线程池执行最前面的状态为待处理的任务,在处理完成后将任务信息索引文件存储单元状态设置为空闲。


5.根据权利要求1所述的基于内存映射文件的跨进程异步任务处理方法,其特征还包括:异步任务信息记录模块和异步任务信息处理模块在两个进程中,运行在同一个服务器中,且均采用内存映射文件技术将任务存储模块的存储文件映射到内存进行读写,以便于提高性能及跨进程数据数...

【专利技术属性】
技术研发人员:吝晓军宋仁春
申请(专利权)人:兴业数字金融服务上海股份有限公司
类型:发明
国别省市:上海;31

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

1