一种基于redis实现多worker协同的系统技术方案

技术编号:14684660 阅读:55 留言:0更新日期:2017-02-22 18:16
一种基于redis实现多worker协同的系统,开始重新获取一批待处理的任务,以任务类名称为key进行汇总数量,其中redis计数器根据以task的任务名为key建立生存周期为1分钟的key‑value值,其中key值是任务名称,value值为累加数值,发送key的任务汇总数量到redis请求对key的value进行累加,其中由于集群中的worker并行请求,所以汇总到redis里面后会进行排队,然后串行处理worker的key的累加请求,对请求的数量进行value累加,返给worker累加后的数值,累加后value值和系统中的每分钟的限量值进行比较,如果没有超过限额,则执行这批任务,如果部分超额则拒绝超额部分并且执行未超额部分,如果全部超额,则全部拒绝执行任务task。本系统为分布式计算的集群中对计算任务task协同控制速度的通用解决技术方案。

【技术实现步骤摘要】

本专利技术属于软件系统
,尤其涉及一种基于redis实现多worker协同的系统
技术介绍
随着互联网大数据时代的到来,越来越多的计算任务task需要交多个计算机(worker)组成的集群来并发处理,由于计算任务中的task对资源(cpu/io/disk)的消耗差别很大,这个时候特别需要合理的安排任务,以防止某类任务占用过多资源造成系统过载,进而影响系统的稳定行和可靠性,因此特别需要一个高效稳定的解决方案来应对此问题。
技术实现思路
本专利技术所解决的技术问题采用以下技术方案来实现:提供一种基于redis实现多worker协同的系统,是分布式计算的集群中对计算任务task协同控制速度的通用解决技术方案。一种基于redis实现多worker协同的系统,开始重新获取一批待处理的任务,以任务类名称为key进行汇总数量,其中redis计数器根据以task的任务名为key建立生存周期为1分钟的key-value值,其中key值是任务名称,value值为累加数值,发送key的任务汇总数量到redis请求对key的value进行累加,其中由于集群中的worker并行请求,所以汇总到redis里面后会进行排队,然后串行处理worker的key的累加请求,对请求的数量进行value累加,返给worker累加后的数值,累加后value值和系统中的每分钟的限量值进行比较,如果没有超过限额,则执行这批key名称任务的task,如果部分超额则拒绝超额部分并且执行未超额部分,如果全部超额,则全部拒绝执行任务task。本专利技术的有益效果为:本系统用redis来实现计数器功能,因为整个系统采用的是星型结构,所以各类任务task的计数以key-value形式,集中存储在redis中,key为任务task的名称,value为对应的计数;本系统是分布式计算的集群中对计算任务task协同控制速度的通用解决技术方案。附图说明图1是本专利技术的程序流程图图2是本专利技术worker和redis计数器时序图样例图3是本专利技术系统结构图具体实施方式参照附图,一种基于redis实现多worker协同的系统,其中计算机集群中的各计算节点统称为worker,计算任务统称为task,task的计数以key-value形式,集中存储在redis中,key为任务task的名称,value为对应的计数,首先开始重新获取一批待处理的任务,以任务类名称为key进行汇总数量,其中redis计数器根据以task的任务名为key建立生存周期为1分钟的key-value值,其中key值是任务名称,value值为累加数值,发送key的任务汇总数量到redis请求对key的value进行累加,其中由于集群中的worker并行请求,所以汇总到redis里面后会进行排队,然后串行处理worker的key的累加请求,对请求的数量进行value累加,返给worker累加后的数值,累加后value值和系统中的每分钟的限量值进行比较,如果没有超过限额,则执行这批key名称任务的task,如果部分超额则拒绝超额部分并且执行未超额部分,如果全部超额,则全部拒绝执行任务task。worker先取一批计算任务task,然后对这批task按照名称为key进行分类汇总,汇总后,按照名称和数量申请redis里面的对应任务名称作为key的计数器进行累加,如果redis里面没有此任务名称key的计数器,则生成一个新的进行累加,并且设置好失效时间,如果有此名key对应的计数器,则进行对value进行累加,并且把累加结果返回给worker,由于在redis里面的key支持生命周期,我们给key值设置为1分钟,则1分钟后,无论key值对应的value值变成多大,key都会消失,进而很简单高效的实现1分钟限速。本系统用redis来实现计数器功能,因为整个系统采用的是星型结构,所以各类任务task的计数以key-value形式,集中存储在redis中,key为任务task的名称,value为对应的计数;本系统是分布式计算的集群中对计算任务task协同控制速度的通用解决技术方案。利用本专利技术所述的技术方案,或本领域的技术人员在本专利技术技术方案的启发下,设计出类似的技术方案,而达到上述技术效果的,均是落入本专利技术的保护范围。本文档来自技高网...
一种基于redis实现多worker协同的系统

【技术保护点】
一种基于redis实现多worker协同的系统,其特征在于:开始重新获取一批待处理的任务,以任务类名称为key进行汇总数量,其中redis计数器根据以task的任务名为key建立生存周期为1分钟的key‑value值,其中key值是任务名称,value值为累加数值,发送key的任务汇总数量到redis请求对key的value进行累加,其中由于集群中的worker并行请求,所以汇总到redis里面后会进行排队,然后串行处理worker的key的累加请求,对请求的数量进行value累加,返给worker累加后的数值,累加后value值和系统中的每分钟的限量值进行比较,如果没有超过限额,则执行这批key名称任务的task,如果部分超额则拒绝超额部分并且执行未超额部分,如果全部超额,则全部拒绝执行任务task。

【技术特征摘要】
1.一种基于redis实现多worker协同的系统,其特征在于:开始重新获取一批待处理的任务,以任务类名称为key进行汇总数量,其中redis计数器根据以task的任务名为key建立生存周期为1分钟的key-value值,其中key值是任务名称,value值为累加数值,发送key的任务汇总数量到redis请求对key的value进行累加,其中由于集群中的w...

【专利技术属性】
技术研发人员:崔运海
申请(专利权)人:天津海量信息技术股份有限公司
类型:发明
国别省市:天津;12

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

1