一种千万级数据分片处理方法和装置制造方法及图纸

技术编号:31088393 阅读:14 留言:0更新日期:2021-12-01 12:47
本发明专利技术涉及一种千万级数据分片处理方法和装置。其方法部分主要包括:将分片机计算功能和业务处理功能解耦,并由分片机主动进行分片数据抢占任务;分片机根据自身性能实时申请分片数据;将每一台分片机申请所得的数据分为多个线程并行处理;最后一台处理完的分片机进行后置处理工作。本发明专利技术可以在不影响业务Service节点的情况下通过扩容分片机集群来大幅提高处理效率,且分片方法与业务解耦,在某些业务节点宕机时仍可保证数据正常处理。些业务节点宕机时仍可保证数据正常处理。些业务节点宕机时仍可保证数据正常处理。

【技术实现步骤摘要】
一种千万级数据分片处理方法和装置


[0001]本专利技术涉及大数据处理时的分片算法
,特别是涉及一种千万级数据分片处理方法和装置。

技术介绍

[0002]早期的软件系统大部分是服务于公司内部业务需求,系统使用者也大多是公司内部人员在操作,传统的软件架构也基本能满足日常需求。但随着公司规模的不断扩大,软件的开发逐渐由统一集成开始往微服务方向发展,部署方式也由单一节点转变为多节点集群模式,这样除了带来系统的复杂度,同时随时间的推进也会产生越来越多的数据量。
[0003]随着近几年互联网的快速发展,实现信息互通后,对于软件系统的功能要求以及处理能力要求越来越高。尤其在很多互联网公司,从传统的企业服务逐步转向为个人服务,这样客户的数量基本成几何倍数增长,同时带来对客户数据的维护也会逐日递增。由于是面向客户服务,一旦系统问题导致数据错误或服务体验感差,影响的用户群体范围大,进而可能引发大量的客户投诉,甚至会流失大量的客户群体,给企业带来的名誉以及经济损失不可估量。
[0004]由于客户流量的不断增大,对应的服务系统表数据量很容易就达到千万级甚至上亿级。在处理海量数据时(如给1000万用户推送服务信息),业界目前处理方式通常采用分片调度模式,调度作业由Job机制触发,请求分别下发到所有业务Service(服务)节点的服务器,下发请求时针对不同服务器分配不同的分片参数,每个业务Service节点的服务器在拿到分片参数时,去查询自己所需要处理的分片域数据,进而在本节点服务器处理。此方式下的分片处理与业务强耦合,处理效率只能依靠扩充业务Service节点数来提高,一旦某个业务Service节点宕机后,该节点处理的数据也将全部丢失。
[0005]综上所述,现有技术主要存在以下三个弊端:
[0006]1)针对海量数据处理,业界目前都是通过Job服务进行调度处理,业务Service节点用分布式集群部署,所有的业务Service节点在收到Job发送的请求后(带分片参数),即已经确定每个业务Service节点处理的数据范围,然后每个业务Service节点独立处理自己的数据,一旦中途处理过程中某个业务Service节点出现宕机,该业务Service节点所处理的数据将全部丢失。
[0007]2)每个业务Service节点在接收到Job发送的请求后,拿到的分片域数据基本是平均的,但每个业务Service节点的服务器之间可能存在着性能的差异,性能高的业务Service节点的服务会提前处理完自己节点的数据,性能低的会消耗较长的时间才能处理完自己节点的数据,这样也会导致资源处理分配不均的问题。
[0008]3)由于分片逻辑是在每个业务Service节点代码中,如果要提高处理效率,只能依靠横向扩容业务Service节点来提高整体处理能力,这样可能会因部分低频但又很重要的业务(高负载)和日常业务(一般负载)使用的资源负载出现无法均衡的问题。
[0009]鉴于此,如何克服现有技术所存在的缺陷,解决上述技术问题,是本
待解
决的难题。

技术实现思路

[0010]针对现有技术的以上缺陷或改进需求,本专利技术提供一种千万级数据分片处理方法和装置,在不影响业务Service节点的情况下通过扩容分片机集群来大幅提高处理效率,分片方法与业务解耦,在某些业务Service节点宕机时仍可保证数据正常处理。
[0011]本专利技术实施例采用如下技术方案:
[0012]第一方面,本专利技术提供了一种千万级数据分片处理方法,包括:
[0013]将分片机计算功能和业务处理功能解耦,并由分片机主动进行分片数据抢占任务;
[0014]分片机根据自身性能实时申请分片数据;
[0015]将每一台分片机申请所得的数据分为多个线程并行处理;
[0016]最后一台处理完的分片机进行后置处理工作。
[0017]进一步的,所述将分片机计算功能和业务处理功能解耦,并由分片机主动进行分片数据抢占任务具体包括:
[0018]随机一台分片机接收到业务处理请求;
[0019]该分片机处理完前置工作后通知Zookeeper进行请求广播;
[0020]所有分片机监听到广播后,同时开始主动抢占分片数据。
[0021]进一步的,在抢占分片数据过程中,若分片机宕机重启后,会进行自动检测且继续加入任务集群。
[0022]进一步的,所述前置工作具体包括白名单测试、设定本次处理数据的起止位置、任务加锁以及记录相关任务信息。
[0023]进一步的,所述分片机根据自身性能实时申请分片数据具体包括:
[0024]将所有分片机进行编号;
[0025]确定每台分片机自身的处理效率;
[0026]分片机根据自身处理效率向redis申请相对应的分片数据。
[0027]进一步的,所述分片机的处理效率表示为:
[0028]分片数据(x)=n*cpu,其中,x表示分片域数据大小,n表示单cpu批处理大小,cpu表示cpu核数;
[0029]所述分片机根据自身处理效率向redis申请相对应的分片数据具体包括:分片机主动向redis申请incr(x),其中,incr(x)代表的是每个分片机单批处理的分片数据大小。
[0030]进一步的,所述将每一台分片机申请所得的数据分为多个线程并行处理具体包括:
[0031]分片机获得单批数据域后对该批次数据在redis中做标记,然后依次多线程向业务Service节点分发;
[0032]该批处理完后清除标记,开始抢占下一批分片域。
[0033]进一步的,每一台分片机所分的线程数根据cpu计算,计算公式默认为:cpu密集型线程=cpu核数+1。
[0034]进一步的,所述最后一台处理完的分片机进行后置处理工作具体包括:
[0035]通过zk临时节点数量与redis处理完毕数量做比较,判断是否为最后一台处理完的分片机,若是,称之为后置机;
[0036]后置机检测本次处理的完整性并进行统计以及通知;
[0037]整个任务结束,后置机释放任务锁。
[0038]另一方面,本专利技术提供了一种千万级数据分片处理装置,具体为:包括至少一个处理器和存储器,至少一个处理器和存储器之间通过数据总线连接,存储器存储能被至少一个处理器执行的指令,指令在被处理器执行后,用于完成第一方面中的千万级数据分片处理方法。
[0039]与现有技术相比,本专利技术的有益效果在于:在不影响业务Service节点的情况下可以通过扩容分片机集群来大幅提高处理效率,分片方法与业务解耦,在某些业务节点宕机时仍可保证数据正常处理。借鉴“抢票”模式思想,使不同处理机能够根据自身的性能去处理不同的数据量,即性能高者,处理快,则“抢”到的分片域数量也会更多,从一定的程度上平衡了分片机的负载,提升了整体业务处理效率。
【附图说明】
[0040]为了更清楚地说明本专利技术实施例的技术方案,本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种千万级数据分片处理方法,其特征在于,包括:将分片机计算功能和业务处理功能解耦,并由分片机主动进行分片数据抢占任务;分片机根据自身性能实时申请分片数据;将每一台分片机申请所得的数据分为多个线程并行处理;最后一台处理完的分片机进行后置处理工作。2.根据权利要求1所述的千万级数据分片处理方法,其特征在于,所述将分片机计算功能和业务处理功能解耦,并由分片机主动进行分片数据抢占任务具体包括:随机一台分片机接收到业务处理请求;该分片机处理完前置工作后通知Zookeeper进行请求广播;所有分片机监听到广播后,同时开始主动抢占分片数据。3.根据权利要求2所述的千万级数据分片处理方法,其特征在于,在抢占分片数据过程中,若分片机宕机重启后,会进行自动检测且继续加入任务集群。4.根据权利要求2所述的千万级数据分片处理方法,其特征在于,所述前置工作具体包括白名单测试、设定本次处理数据的起止位置、任务加锁以及记录相关任务信息。5.根据权利要求1所述的千万级数据分片处理方法,其特征在于,所述分片机根据自身性能实时申请分片数据具体包括:将所有分片机进行编号;确定每台分片机自身的处理效率;分片机根据自身处理效率向redis申请相对应的分片数据。6.根据权利要求4所述的千万级数据分片处理方法,其特征在于,所述分片机的处理效率表示为:分片数据(x)=n*cpu,其中,x表示分片域数据大小,n表示单cpu批处理大小,cpu...

【专利技术属性】
技术研发人员:门国强吴亚松杨雄辉张天浩李吉发
申请(专利权)人:烽火通信科技股份有限公司
类型:发明
国别省市:

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

1