一种多线程的数据分片并行方法技术

技术编号:39848305 阅读:7 留言:0更新日期:2023-12-29 16:46
本发明专利技术涉及数据处理技术领域,且公开了一种多线程的数据分片并行方法,包括以下步骤:

【技术实现步骤摘要】
一种多线程的数据分片并行方法


[0001]本专利技术涉及数据处理
,具体为一种多线程的数据分片并行方法


技术介绍

[0002]数据库是按照数据结构来组织

存储和管理数据的仓库,数据库对数据的查询

处理速度远远超过普通文件的处理速度

随着移动互联网业务和用户数量的快速增长,传统的入库机制已经很难满足入库管理的需求,因此,采用多线程处理数据的方法应运而生
[0003]但随着数据库的数据越来越多,当有多个或大量请求同时来临时,会用尽机器的线程,由于操作系统的线程分配太多,上下文频繁切换,并且线程分配的任务不均衡会进一步导致请求处理变的缓慢

且还由于线程分配的任务不均衡,有的线程处理数据行数多,花的时间长,有的线程处理的行数少,花的时间短,但最终要统一等到所有线程处理完成才返回,线程资源不能充分利用


技术实现思路

[0004](

)
解决的技术问题
[0005]针对现有技术的不足,本专利技术提供了一种多线程的数据分片并行方法,主要为解决现有的线程分配的任务不均衡,有的线程处理数据行数多,花的时间长,有的线程处理的行数少,花的时间短,但最终要统一等到所有线程处理完成才返回,线程资源不能充分利用的问题

[0006](

)
技术方案
[0007]为实现上述目的,本专利技术提供如下技术方案:
[0008]一种多线程的数据分片并行方法,包括以下步骤:
[0009]S1
:创立线程,获取请求行数和分包大小,并利用请求行数和分包大小确定线程池的大小和线程的数量,然后初始化线程池,创建
10

12
个的线程;
[0010]S2
:数据接收,响应于线程启动请求,并生成发送数据包,管理节点接收数据包,同时管理节点对所接收的数据包进行切片处理,获得4‑6个分片数据组,并根据创建的线程数量,确定出目标数值,为各个分片数据组分配线程资源;
[0011]S3
:确定优先级,根据
S2
中分片数据组分配的线程资源确定分片数据组的优先级和分片数据组在优先级队列中的最长等待时间;
[0012]S4
:分片数据组管理,根据
S3
中确定的分片数据组的优先级和优先级别数量,将待执行的任务按照其优先级的级别插入到相应的队列中,并为任务增加一个时间戳,记录该任务加入到队列的时间;
[0013]S5
:检查,在任务调度过程中,检查非最高优先级队列中每个任务的等待时间,如果超过
S3
中的最长等待时间而该任务仍未被执行,则将该任务转移到上一级优先级更高的队列中并更改时间戳;
[0014]S6
:线程管理,守护线程维护线程池中任务线程的数量和任务线程状态表,记录和
[0029]参照图1,一种多线程的数据分片并行方法,包括以下步骤:
[0030]S1
:创立线程,获取请求行数和分包大小,并利用请求行数和分包大小确定线程池的大小和线程的数量,然后初始化线程池,创建
10
个的线程;
[0031]S2
:数据接收,响应于线程启动请求,并生成发送数据包,管理节点接收数据包,同时管理节点对所接收的数据包进行切片处理,获得4个分片数据组,并根据创建的线程数量,确定出目标数值,为各个分片数据组分配线程资源,首先确定用于处理数据的线程的数量,并创建相应数量的线程,将待处理的数据分配至每一个线程,以使各线程处理与之相对应的数据,通过多线程的方式以处理数据,能够提高数据处理的效率;
[0032]S3
:确定优先级,根据
S2
中分片数据组分配的线程资源确定分片数据组的优先级和分片数据组在优先级队列中的最长等待时间,通过使每一目标线程能够接收各自对应的分片数据组,对该对应的分片数据组进行处理,能够避免不同的数据间相互干扰渗透,提高了数据的可靠性;
[0033]S4
:分片数据组管理,根据
S3
中确定的分片数据组的优先级和优先级别数量,将待执行的任务按照其优先级的级别插入到相应的队列中,并为任务增加一个时间戳,记录该任务加入到队列的时间;
[0034]S5
:检查,在任务调度过程中,检查非最高优先级队列中每个任务的等待时间,如果超过
S3
中的最长等待时间而该任务仍未被执行,则将该任务转移到上一级优先级更高的队列中并更改时间戳;
[0035]S6
:线程管理,守护线程维护线程池中任务线程的数量和任务线程状态表,记录和控制线程状态的变化,如果有新任务加入到优先级队列,而当前无空闲的线程,则创建新的线程执行任务;如果所有优先级队列为空,即无需要执行的任务,线程将进入空闲状态,若空闲状态超过设定的最长空闲时间,则自动结束转变为终结态方式转变为终结态,通过提高线程资源的使用率,减少低负载

空置线程的情况,减少线程资源的浪费的同时,也减少了所需分配的线程总量,缓减线程数量一多则又会造成上下文频繁切换的问题

[0036]本专利技术中尤其的,请求行数表示请求数据中的数据行的总数,分包大小表示每个线程处理请求行的最大数,利用请求行数和分包大小确定线程数,包括:当各业务数据之间的关系为无相互依赖关系时,获取请求行数与分包大小的比值;若比值为整数,则将比值作为线程数,发送数据包中含有线程的发送数据以及发送数据的
ID
值,发送数据的
ID
值为接收数据的缓存的虚拟地址,目标数值表示当前需要启用的线程数量,终端读取数据包中每一数据各自对应的设备标签

时间标签以及数据校验码,终端将数据包中具有相同数据标签的各个数据进行打包,得到多个初始分组,然后终端利用当前时间标签对每一初始分组中包含的所有数据的时间标签进行校验,将每一初始分组中对应的时间标签与当前时间不匹配的数据进行剔除,以获得多个中间分组,最后终端对每一中间分组中包含的所有数据的数据校验码进行聚类分析,将不属于该中间分组的数据进行剔除,以得到多个分片数据组

[0037]实施例2[0038]参照图1,一种多线程的数据分片并行方法,包括以下步骤:
[0039]S1
:创立线程,获取请求行数和分包大小,并利用请求行数和分包大小确定线程池的大小和线程的数量,然后初始化线程池,创建
11
个的线程;
[0040]S2
:数据接收,响应于线程启动请求,并生成发送数据包,管理节点接收数据包,同时管理节点对所接收的数据包进行切片处理,获得5个分片数据组,并根据创建的线程数量,确定出目标数值,为各个分片数据组分配线程资源,首先确定用于处理数据的线程的数量,并创建相应数量的线程,将待处理的数据分配至每本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.
一种多线程的数据分片并行方法,其特征在于,包括以下步骤:
S1
:创立线程,获取请求行数和分包大小,并利用请求行数和分包大小确定线程池的大小和线程的数量,然后初始化线程池,创建
10

12
个的线程;
S2
:数据接收,响应于线程启动请求,并生成发送数据包,管理节点接收数据包,同时管理节点对所接收的数据包进行切片处理,获得4‑6个分片数据组,并根据创建的线程数量,确定出目标数值,为各个分片数据组分配线程资源;
S3
:确定优先级,根据
S2
中分片数据组分配的线程资源确定分片数据组的优先级和分片数据组在优先级队列中的最长等待时间;
S4
:分片数据组管理,根据
S3
中确定的分片数据组的优先级和优先级别数量,将待执行的任务按照其优先级的级别插入到相应的队列中,并为任务增加一个时间戳,记录该任务加入到队列的时间;
S5
:检查,在任务调度过程中,检查非最高优先级队列中每个任务的等待时间,如果超过
S3
中的最长等待时间而该任务仍未被执行,则将该任务转移到上一级优先级更高的队列中并更改时间戳;
S6
:线程管理,守护线程维护线程池中任务线程的数量和任务线程状态表,记录和控制线程状态的变化,如果有新任务加入到优先级队列,而当前无空闲的线程,则创建新的线程执行任务;如果所有优先级队列为空,即无需要执行的任务,线程将进入空闲状态,若空闲状态超过设定的最长空闲时间,则自动结束转变为终结态方式转变为终结态
...

【专利技术属性】
技术研发人员:黄羿衡
申请(专利权)人:江苏苏云信息科技有限公司
类型:发明
国别省市:

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

1