任务处理方法、装置、设备及存储介质转让专利

申请号 : CN202010098686.8

文献号 : CN111338571B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张立超

申请人 : 腾讯科技(深圳)有限公司

摘要 :

本申请实施例提供了一种任务处理方法、装置、设备及存储介质;所述方法包括:获取待处理任务和用于存放任务的存储桶;根据待处理任务的标识,确定所述待处理任务所属的存储单元;从所述存储桶中确定与所述存储单元的标识相匹配的目标存储桶;将所述存储单元的标识所对应的待处理任务放入所述目标存储桶,以使所述目标存储桶的管理单元按照预设的处理参数处理所述目标存储桶中存放的待处理任务;这样,按照处理参数对目标哈希桶中的待处理任务进行处理,使得网络中的存储单元的负载是均衡的,避免了存储单元局部过载。

权利要求 :

1.一种任务处理方法,其特征在于,所述方法包括:获取待处理任务和用于存放任务的存储桶;

根据待处理任务的标识,确定所述待处理任务所属的存储单元;其中,每个所述待处理任务的标识对应唯一的所述存储单元,所述存储单元中存放至少一个所述待处理任务;

根据所述存储单元的标识查询所述存储单元的标识与所述存储桶的编号之间的关联关系,得到与所述存储单元的标识相匹配的存储桶的编号,并作为目标存储桶的编号;

从多个所述存储桶中确定与所述目标存储桶的编号相匹配的存储桶,以作为所述目标存储桶;

将所述存储单元的标识所对应的待处理任务放入所述目标存储桶,以使每个所述目标存储桶的频控管理单元在同一时间周期内,按照预设的频控参数以并发的方式处理所述目标存储桶中存放的待处理任务,其中,所述预设的频控参数是根据单位时间内处理的单位任务数和缓存中保存的任务总数来确定的。

2.根据权利要求1所述的方法,其特征在于,所述方法还包括:根据所述存储单元的标识,为对应的所述存储桶进行编号,得到所述关联关系。

3.根据权利要求2所述的方法,其特征在于,如果所述待处理任务的存储方式为分布式存储,所述根据所述存储单元的标识,为对应的所述存储桶进行编号,包括:将所述存储单元的标识对应的字符序列与预设数值相除;

将相除的结果确定为所述存储桶的编号。

4.根据权利要求2所述的方法,其特征在于,如果待处理任务与存储单元之间满足特定映射关系,所述根据所述存储单元的标识,为对应的所述存储桶进行编号,包括:将所述存储单元的标识中包含的有符号数据转换为无符号数据;

将所述无符号数据确定为所述存储桶的编号。

5.根据权利要求1所述的方法,其特征在于,所述将所述存储单元的标识所对应的待处理任务放入所述目标存储桶,包括:确定当前能够在缓存中保存的任务总数;

如果所述存储桶中当前未处理的任务量小于特定阈值,将所述待处理任务放入对应的目标存储桶;其中,所述特定阈值小于等于所述任务总数。

6.根据权利要求5所述的方法,其特征在于,所述将所述存储单元的标识所对应的所述待处理任务放入所述目标存储桶,包括:如果所述存储桶中当前未处理的任务量大于等于所述特定阈值,将所述待处理任务暂存在与目标存储桶对应的存储单元中,以使所述频控管理单元处理所述存储桶中当前存放的任务;

当处理后的所述存储桶中当前未处理的任务量小于所述特定阈值时,将暂存在所述存储单元中的所述待处理任务放入对应的目标存储桶。

7.根据权利要求5所述的方法,其特征在于,在所述确定当前能够在缓存中保存的任务总数之后,所述方法还包括:

确定在单位时间内能够处理的单位任务数;

根据所述任务总数和所述单位任务数,确定所述预设的频控参数。

8.一种任务处理装置,其特征在于,所述装置包括:第一获取模块,用于获取待处理任务和用于存放任务的存储桶;

第一确定模块,用于根据待处理任务的标识,确定所述待处理任务所属的存储单元;其中,每个所述待处理任务的标识对应唯一的所述存储单元,所述存储单元中存放至少一个所述待处理任务;

第一匹配模块,用于根据所述存储单元的标识查询所述存储单元的标识与所述存储桶的编号之间的关联关系,得到与所述存储单元的标识相匹配的存储桶的编号,作为目标存储桶的编号;从多个所述存储桶中确定与所述目标存储桶的编号相匹配的存储桶,以作为所述目标存储桶;

第一处理模块,用于将所述存储单元的标识所对应的待处理任务放入所述目标存储桶,以使每个所述目标存储桶的频控管理单元在同一时间周期内,按照预设的频控参数以并发的方式处理所述目标存储桶中存放的待处理任务,其中,所述预设的频控参数是根据单位时间内处理的单位任务数和缓存中保存的任务总数来确定的。

9.一种任务处理的设备,其特征在于,包括:存储器,用于存储可执行指令;

处理器,用于执行所述存储器中存储的可执行指令时,实现权利要求1至7任一项所述的方法。

10.一种存储介质,其特征在于,存储有可执行指令,用于引起处理器执行时,实现权利要求1至7任一项所述的方法。

说明书 :

任务处理方法、装置、设备及存储介质

技术领域

[0001] 本申请涉及网络技术领域,尤其涉及任务处理方法、装置、设备及存储介质。

背景技术

[0002] 在相关技术中,在大型网络中,为防止用户高删除频率导致存储引擎处理不及时出现过载的情况,对数据进行异步删除,并且对数据进行异步删除;但是异步删除服务的处
理过程中,如果是顺序处理待删除服务,会导致处理速度较慢;如果是并发处理待删除服
务,如果底层数据分布不均,会出现局部过载的情况。

发明内容

[0003] 本申请实施例提供一种任务处理方法、装置、设备及存储介质,能够按照处理参数对目标哈希桶中的待处理任务进行处理,使得多个存储单元承受的压力均匀,避免了存储
单元局部过载。
[0004] 本申请实施例的技术方案是这样实现的:
[0005] 第一方面,本申请实施例提供一种任务处理方法,包括:获取待处理任务和用于存放任务的存储桶;
[0006] 根据待处理任务的标识,确定所述待处理任务所属的存储单元;
[0007] 从所述存储桶中确定与所述存储单元的标识相匹配的目标存储桶;
[0008] 将所述存储单元的标识所对应的待处理任务放入所述目标存储桶,以使所述目标存储桶的管理单元按照预设的处理参数处理所述目标存储桶中存放的待处理任务。
[0009] 第二方面,本申请实施例提供一种任务处理装置,所述装置包括:
[0010] 第一获取模块,用于获取待处理任务和用于存放任务的存储桶;
[0011] 第一确定模块,用于根据待处理任务的标识,确定所述待处理任务所属的存储单元;
[0012] 第一匹配模块,用于从所述存储桶中确定与所述存储单元的标识相匹配的目标存储桶;
[0013] 第一处理模块,用于将所述存储单元的标识所对应的待处理任务放入所述目标存储桶,以使所述目标存储桶的管理单元按照预设的处理参数处理所述目标存储桶中存放的
待处理任务。
[0014] 第三方面,本申请实施例提供一种任务处理的设备,包括:存储器,用于存储可执行指令;处理器,用于执行所述存储器中存储的可执行指令时,实现上述任务处理方法。
[0015] 第四方面,本申请实施例提供一种存储介质,存储有可执行指令,用于引起处理器执行时,实现本申请实施例提供的任务处理方法。
[0016] 本申请实施例具有以下有益效果:对于获取的待处理任务,首先,按照存储待处理任务的存储单元的标识,确定与该存储单元的标识相匹配的目标存储桶;然后,将待处理任
务分别放入相对应的目标存储桶中;这样,通过将待处理任务划分到存储桶中,使得存储单
元中的待处理任务分布均匀;最后,管理单元按照预设的处理参数处理目标存储桶中存放
的待处理任务;这样,按照处理参数对目标存储桶中的待处理任务进行处理,使得多个存储
单元承受的压力均匀,避免了存储单元局部过载。

附图说明

[0017] 图1是本申请实施例提供的任务处理系统的一个可选的架构示意图;
[0018] 图2A是本申请实施例提供的任务处理系统的另一个可选的架构示意图;
[0019] 图2B是本申请实施例提供的任务处理系统的结构示意图;
[0020] 图3是本申请实施例提供的任务处理方法的实现流程示意图;
[0021] 图4A是本申请实施例提供的任务处理方法的另一实现流程示意图;
[0022] 图4B是本申请实施例提供的任务处理方法的又一实现流程示意图;
[0023] 图5是本申请实施例提供的任务处理方法的另一实现流程示意图;
[0024] 图6是本申请实施例提供的任务处理方法的实验结果示意图。

具体实施方式

[0025] 为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有
做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
[0026] 在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突
的情况下相互结合。
[0027] 在以下的描述中,所涉及的术语“第一\第二\第三”仅仅是是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定
的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的
顺序实施。
[0028] 除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,
不是旨在限制本申请。
[0029] 对本申请实施例进行进一步详细说明之前,对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释。
[0030] 1)云端存储服务(COS):腾讯云对象存储产品,安全稳定、海量、便捷、低延迟、低成本的云端存储服务。
[0031] 2)实体(Object):COS用于存储的具体文件,是存储的基本实体。
[0032] 3)分布式文件系统(Team Foundation Server,TFS):是一个高可扩展、高可用、高性能、面向互联网服务的分布式文件系统,小型化集合(SET)管理, SET内部使用红黑树保
存对象,而红黑树的构建需要对元素进行排序,所以在向SET容器插入数据时,需要保证插
入的数据是可排序的,或者提供排序方法供SET调用来对数据排序。
[0033] 4)有序键值对存储引擎(Lavadb):是一种分布式有序键值对(Key‑Value, KV)存储引擎。
[0034] 5)哈希虚拟桶(hash SLOT):在分布式集群中,如何保证相同请求落到相同的机器上,并且后面的集群机器可以尽可能的均分请求,并且当扩容或down 机的情况下能对原有
集群影响最小;采用hash slot的方法解决这一问题,即某些hash slot区间对应一台机器,
对于扩容或down机情况下,就改变某个hash slot 区间就可以了,改动比较小,对之前分配
的影响也较小。
[0035] 6)区块链(Blockchain):由区块(Block)形成的加密的、链式的交易的存储结构。
[0036] 7)区块链网络(Blockchain Network):通过共识的方式将新区块纳入区块链的一系列的节点的集合。
[0037] 8)云技术(Cloud Technology)基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计
算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源,如视频网
站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都
有可能存在自己的识别标志,都需要传输到后台系统进行逻辑处理,不同程度级别的数据
将会分开处理,各类行业数据皆需要强大的系统后盾支撑,只能通过云计算来实现。
[0038] 9)云存储(Cloud Storage),是在云计算概念上延伸和发展出来的一个新的概念,分布式云存储系统(以下简称存储系统)是指通过集群应用、网格技术以及分布存储文件系
统等功能,将网络中大量各种不同类型的存储设备(存储设备也称之为存储节点)通过应用
软件或应用接口集合起来协同工作,共同对外提供数据存储和业务访问功能的一个存储系
统。
[0039] 在相关技术中,在针对公司网络(To Business,ToB)场景下,为防止用户高删除频率导致存储引擎处理不及时过载,影响线上上传或下载等同步请求,对数据进行异步删除,
并且对数据进行异步删除之后,配置数据缓删,对大用户误删除数据场景,可以辅助寻回;
但是异步删除服务的处理过程中,如果是顺序处理待删除服务,导致处理速度较慢;如果并
发处理待删除服务,对底层数据分布不均场景,有局部过载情况。
[0040] 基于此,本申请实施例提供一种任务处理方法、装置、设备及存储介质,在需要对大量任务进行处理的场景下,首先,对要处理的多个任务按照存储桶进行划分,将这多个待
处理任务划分到多个存储桶中;这样,保证了存储待处理任务的存储单元上任务的均匀分
布;然后,通过轮询多个存储桶,按照一定的处理参数处理每个存储桶中的任务,从而使得
每一存储单元上承受的处理任务的压力是均匀的,避免了由于处理速度过快导致存储单元
局部压力过大的情况。
[0041] 下面说明本申请实施例提供的任务处理的设备的示例性应用,本申请实施例提供的设备可以实施为笔记本电脑,平板电脑,台式计算机,机顶盒,移动设备(例如,移动电话,
便携式音乐播放器,个人数字助理,专用消息设备,便携式游戏设备)等各种类型的用户设
备,也可以实施为服务器。下面,将说明设备实施为设备或服务器时示例性应用。服务器可
以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还
可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域
名服务、安全服务、以及大数据和人工智能平台等基础云计算服务的云服务器。终端可以是
智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。终
端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限
制。
[0042] 参见图1,图1是本申请实施例提供的任务处理系统的一个可选的架构示意图,为实现支撑一个示例性应用,首先,当获取到多个待处理事务101至10n 时,依据待处理任务
的存储单元的标识确定该待处理任务应该存放的存储桶111 至11n;然后,将待处理事务
101至10n一一对应地,放入相匹配的存储桶111 至11n中;最后,存储桶111至11n中的管理
单元121至12n按照预设的处理参数,以并发的方式对存储桶111至11n的队列中存放的待处
理任务进行处理,从而使得多个存储单元承受的压力均匀,避免了存储单元过载。
[0043] 参见图2A,图2A是本申请实施例提供的任务处理系统的另一个可选的架构示意图,包括区块链网络20(示例性示出了作为原生节点的服务器200)、监测系统30(示例性示
出归属于监测系统30的设备300及其图形界面301),下面分别进行说明。
[0044] 区块链网络20的类型是灵活多样的,例如可以为公有链、私有链或联盟链中的任意一种。以公有链为例,任何业务主体的电子设备例如用户设备和服务器,都可以在不需要
授权的情况下接入区块链网络20;以联盟链为例,业务主体在获得授权后其下辖的电子设
备(例如设备/服务器)可以接入区块链网络20,此时,成为区块链网络20中的一类特殊的节
点即客户端节点。
[0045] 需要指出地,客户端节点可以只提供支持业务主体发起交易(例如,用于上链存储数据或查询链上数据)功能,对于区块链网络20的原生节点的功能,例如下文所述的排序功
能、共识服务和账本功能等,客户端节点可以缺省或者有选择性(例如,取决于业务主体的
具体业务需求)地实现。从而,可以将业务主体的数据和业务处理逻辑最大程度迁移到区块
链网络20中,通过区块链网络20实现数据和业务处理过程的可信和可追溯。
[0046] 区块链网络20接收来自业务主体(例如图2A中示出的监测系统30)的客户端节点(例如,图2A中示出的归属于监测系统30的设备300)提交的交易,执行交易以更新账本或者
查询账本,并在设备的用户界面(例如,设备300的图形界面301)显示执行交易的各种中间
结果或最终结果。
[0047] 下面以监测系统接入区块链网络以实现任务处理的上链为例说明区块链网络的示例性应用。
[0048] 监测系统30的设备300接入区块链网络20,成为区块链网络20的客户端节点。设备300通过传感器获取待处理任务;并且,将最终处理完成的指令反馈给区块链网络20中的服
务器200或者保存在设备300中;在已对设备300 部署上传逻辑或用户进行操作的情况下,
设备300根据待处理任务/同步时间查询请求,生成对应更新操作/查询操作的交易,在交易
中指定了实现更新操作/ 查询操作需要调用的智能合约、以及向智能合约传递的参数,交
易还携带了监测系统30签署的数字签名(例如,使用监测系统30的数字证书中的私钥,对交
易的摘要进行加密得到),并将交易广播到区块链网络20。其中,数字证书可由监测系统30
向认证中心31进行登记注册得到。
[0049] 区块链网络20中的原生节点,例如服务器200在接收到交易时,对交易携带的数字签名进行验证,数字签名验证成功后,根据交易中携带的监测系统30 的身份,确认监测系
统30是否是具有交易权限,数字签名和权限验证中的任何一个验证判断都将导致交易失
败。验证成功后签署原生节点自己的数字签名(例如,使用原生节点的私钥对交易的摘要进
行加密得到),并继续在区块链网络 20中广播。
[0050] 区块链网络20中具有排序功能的节点接收到验证成功的交易后,将交易填充到新的区块中,并广播到区块链网络中20提供共识服务的节点。
[0051] 区块链网络20中的提供共识服务的节点对新区块进行共识过程以达成一致,提供账本功能的节点将新区块追加到区块链的尾部,并执行新区块中的交易:对于提交待处理
任务的处理结果的交易,更新状态数据库中待处理任务对应的键值对;对于查询同步时间
的交易,从状态数据库中查询同步时间对应的键值对,并返回查询结果。对于得到的同步时
间,可显示于设备300的图形界面301中。
[0052] 区块链网络20中的原生节点可从区块链中读取待处理任务,并将待处理任务呈现于原生节点的监测页面,原生节点也可以利用在区块链存储的待处理任务,对该待处理任
务进行处理。
[0053] 在实际应用中,可为区块链网络20的不同原生节点设置不同的功能,例如设置服务器200具有任务处理功能和记账功能。对于该情况,可在交易过程中,服务器200接收设备
300发送的待任务处理,采用服务器200将多个待处理任务划分到对应的存储桶中,使得存
储单元中的待处理任务分布均匀;然后,存储桶的管理单元按照预设的处理参数处理每一
存储桶中存放的待处理任务,使得多个存储单元承受的压力均匀,避免了存储单元过载。
[0054] 参见图2B,图2B是本申请实施例提供的任务处理系统的结构示意图,图 2B所示的设备400包括:至少一个处理器410、存储器450、至少一个网络接口420和用户接口430。设备
400中的各个组件通过总线系统440耦合在一起。可理解,总线系统440用于实现这些组件之
间的连接通信。总线系统440除包括数据总线之外,还包括电源总线、控制总线和状态信号
总线。但是为了清楚说明起见,在图2B中将各种总线都标为总线系统440。
[0055] 处理器410可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器,或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,
其中,通用处理器可以是微处理器或者任何常规的处理器等。
[0056] 用户接口430包括使得能够呈现媒体内容的一个或多个输出装置431,包括一个或多个扬声器和/或一个或多个视觉显示屏。用户接口430还包括一个或多个输入装置432,包
括有助于用户输入的用户接口部件,在一些示例中键盘、鼠标、麦克风、触屏显示屏、摄像
头、其他输入按钮和控件。
[0057] 存储器450可以是可移除的,不可移除的或其组合。示例性的硬件设备包括固态存储器,硬盘驱动器,光盘驱动器等。存储器450可选地包括在物理位置上远离处理器410的一
个或多个存储设备。
[0058] 存储器450包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(Read Only Memory, ROM),易失性存储器可
以是随机存取存储器(Random Access Memory,RAM)。本申请实施例描述的存储器450旨在
包括任意适合类型的存储器。
[0059] 在一些实施例中,存储器450能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。
[0060] 操作系统451,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;
[0061] 网络通信模块452,用于经由一个或多个(有线或无线)网络接口420到达其他计算设备,示例性的网络接口420包括:蓝牙、无线相容性认证、和通用串行总线(Universal 
Serial Bus,USB)等;
[0062] 呈现模块453,用于经由一个或多个与用户接口430相关联的输出装置431 (例如,显示屏、扬声器等)使得能够呈现信息(例如,用于操作外围设备和显示内容和信息的用户
接口);
[0063] 输入处理模块454,用于对一个或多个来自一个或多个输入装置432之一的一个或多个用户输入或互动进行检测以及翻译所检测的输入或互动。
[0064] 在一些实施例中,本申请实施例提供的装置可以采用软件方式实现,图2B 示出了存储在存储器450中的任务处理的服务器455,其可以是程序和插件等形式的软件,包括以
下软件模块:第一获取模块4551、第一确定模块4552、第一匹配模块4553和第一处理模块
4554;这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分。将
在下文中说明各个模块的功能。
[0065] 在另一些实施例中,本申请实施例提供的装置可以采用硬件方式实现,作为示例,本申请实施例提供的装置可以是采用硬件译码处理器形式的处理器,其被编程以执行本申
请实施例提供的任务处理方法,例如,硬件译码处理器形式的处理器可以采用一个或多个
应用专用集成电路(Application Specific Integrated Circuit,ASIC)、DSP、可编程逻辑
器件(Programmable Logic Device, PLD)、复杂可编程逻辑器件(Complex Programmable 
Logic Device,CPLD)、现场可编程门阵列(Field‑Programmable Gate Array,FPGA)或其他
电子元件。
[0066] 将结合本申请实施例提供的设备的示例性应用和实施,说明本申请实施例提供的任务处理方法。
[0067] 参见图3,图3是本申请实施例提供的任务处理方法的实现流程示意图,结合图3示出的步骤进行说明。
[0068] 步骤S301,获取待处理任务和用于存放任务的存储桶。
[0069] 这里,待处理任务为多个,存储桶也是多个,待处理任务可以是存储任务或者删除任务等,比如,在大系统场景下,删除大量的文件或者存储大量的文档。存储桶为能够创建
多个文件夹目录以及所对应的多个文件的存储空间,其中,文件数量可以是无限的,并以单
一文件的形式存储;另外,每个文件夹或文件都可以设置权限。存储桶可以是任意形式用于
存储待处理任务的桶,比如,哈希桶。获取多个存储桶可以是,获取设定好的多个存储桶,比
如,获取包含独立的先进先出的队列和管理单元。在获取到多个存储桶之后,基于系统的系
统参数(比如,系统能够缓存的任务总量和单位时间内处理的任务量)为存储桶设定单位时
间内处理任务量的处理参数。
[0070] 步骤S302,根据待处理任务的标识,确定待处理任务所属的存储单元。
[0071] 这里,待处理任务的标识可以是待处理任务的键值或者认证标识等,基于此,可以确定每一待处理任务所存储的存储单元。在一些实施例中,每一个待处理任务的标识对应
唯一的存储单元,一个存储单元中可以存放一个或多个待处理任务。在一些可能的实现方
式中,该存储单元可以是系统中底层存储单元,比如,如果对象存储使用的分布式有序键值
对存储集群的存储单元是单元(cell);如果对象存储使用的分布式数据存储集群的存储单
元是集合。
[0072] 步骤S303,从存储桶中确定与存储单元的标识相匹配的目标存储桶。
[0073] 这里,从多个存储桶的编号中,确定编号与存储单元的标识相匹配的目标存储桶的编号,以得到目标存储桶。每一个存储桶都有一个编号,存储单元的标识与该编号相对
应,可以是,一个存储单元的标识对应多个存储桶的编号,也可以是一个存储单元的标识对
应一个存储桶的编号,还可以是多个存储单元的标识对应一个存储桶的编号;这样,为每一
待处理任务均能够确定出相匹配的目标存储桶。
[0074] 步骤S304,将存储单元的标识所对应的待处理任务放入目标存储桶,以使目标存储桶的管理单元按照预设的处理参数处理目标存储桶中存放的待处理任务。
[0075] 这里,将每一待处理任务放入目标存储桶,可以理解为,将待处理任务放入目标存储桶的队列中,那么在对目标存储桶中的任务进行处理时,也是按照先进先出的顺序进行
处理,即先存放在目标存储桶中的任务先被处理。预设的处理参数可以是根据系统在单位
时间内能够处理的单位任务数和系统能够在缓存中保存的任务总数来确定,比如,首先,确
定在单位时间内能够处理的单位任务数;然后,根据任务总数和单位任务数,确定预设的处
理参数。在一个具体例子中,任务总数为10000,单位任务数为1000,将该处理参数设置为大
于任务总数和单位任务数的商,比如,大于10。
[0076] 在一些可能的实现方式中,如果管理单元为频控管理单元,处理参数为频控参数,将每一待处理任务放入目标存储桶,以使每一目标存储桶的频控管理单元在同一时间周期
内,按照频控参数处理每一目标存储桶中存放的待处理任务。也就是说,多个目标存储桶的
频控管理单元是同时对相应的存储桶中的待处理任务进行处理,其中,频控管理单元用于
设定单位时间内能够处理的任务量,比如,频控管理单元将预设的处理参数设定为50次/毫
秒(ms),那么在1 毫秒的时间周期内,同时对多个目标存储桶中的待处理任务按照50次/毫
秒进行处理。这样,多个存储单元以高并发的方式同时对自身对应的存储桶中的待处理任
务进行处理能够最大限度的利用底层存储资源。
[0077] 在一个具体例子中,存储桶为哈希桶,将每一待处理任务放入对应的目标哈希桶中,以使目标哈希桶的频控管理单元按照预设的处理参数处理每一目标哈希桶中存放的待
处理任务;比如,预设的处理参数设定为50次/毫秒,那么这多个哈希桶的频控管理单元同
时对相应的哈希桶中的待处理任务,按照50 次/毫秒的速度进行处理,如果某一个哈希桶
中存放的待处理任务不足50,那么处理该哈希桶中所有的待处理任务,如果哈希桶中为空,
那么不进行处理。
[0078] 在本申请实施例中,首先对要处理的多个任务划分到多个存储桶中,保证了请求存储单元均匀分布,然后,轮询多个存储桶中存储的任务,在一定的时间周期内存储桶的管
理单元按照一定的处理参数处理存储桶中的任务,从而使得在任务处理的过程中存储单元
承受的压力是均匀的,能够避免局部过载的情况。
[0079] 在一些实施例中,为了能够准确的为待处理任务查找相匹配的目标存储桶,步骤S303可以通过以下方式实现:
[0080] 根据存储单元的标识查询特定的关联关系,确定与存储单元的标识相匹配的目标存储桶。
[0081] 这里,关联关系用于表征存储单元的标识与存储桶的编号之间的映射关系。该关联关系是建立存储桶时设定好的。这样,当获取了多个待处理任务后,即可依据待处理任务
所属的存储单元的标识找到该待处理任务应该归属的目标存储桶。这样,能够为每一待处
理任务找到应该归属的目标存储桶,从而能够将在存储单元中集中存储的待处理任务分散
到多个存储桶中,保证存储单元上分布均匀,从而使得在任务处理的过程中,存储单元所承
受的处理任务的压力均匀。
[0082] 在一些可能的实现方式中,在为待处理任务查找相匹配的目标存储桶之前,先为每一个存储桶进行编号,可以通过根据每一存储单元的标识,为对应的存储桶进行编号,得
到所述关联关系。
[0083] 这里,存储桶的编号和存储单元的标识之间的对应关系,包括以下多种情况:
[0084] 情况一:如果目标存储桶的编号和存储单元的标识是一对多的关系,那么可以将几个存储单元中的待处理任务放入一个目标存储桶中。
[0085] 比如,多个存储单元对应于一个目标存储桶,那么将这多个存储单元中存储的待处理任务均放在这一个目标存储桶中,这样情况下的要求是,该多个存储单元中的任务总
量小于目标存储桶的存储空间。如图1所示,如果待处理任务101和102属于一个存储单元,
103至105属于另一存储单元,而这两个存储单元对应于一个存储桶111,那么将待处理任务
101至105存放在存储桶111 的队列中。
[0086] 情况二:如果目标存储桶的编号和存储单元的标识是一对一的关系,那么分别将待处理任务放在自身相匹配的目标存储桶中。
[0087] 如图1所示,如果待处理任务101和102属于一个存储单元,该存储单元对应于存储桶112;待处理任务103至105属于另一存储单元,该存储单元对应于存储桶113;那么,将待
处理任务101和102存放在存储桶112的队列中;将待处理任务103至105存放在存储桶113的
队列中。
[0088] 情况三:如果目标存储桶的编号和存储单元的标识是多对一的关系,那么可以将一个存储单元中的待处理任务放入多个目标存储桶中。
[0089] 这里,一个存储单元对应于多个目标存储桶,那么可以将该存储单元中的待处理任务平均分之后,存储在这多个存储桶中;还可以是,结合这多个存储桶的剩余空间的比
例,将该存储单元中的待处理任务存储在这多个存储桶中,比如,三个存储桶的剩余存储空
间的比例为1:2:3,那么按照该比例将该存储单元中的待处理任务进行划分为这样的三份,
分别放在各个存储桶中。如图1所示,待处理任务101至110对应于一个存储单元,该存储单
元与存储桶111和 112相对应,且存储桶111和112的剩余存储空间的比例为1:1,那么将这
10 个待处理任务各自放5个到存储桶111和112的队列中。这样,无论是存储单元的标识和
存储桶的编号之间是上述哪一种关联关系,都可以将存储单元中存储的待处理任务分散到
多个存储桶中,避免大量的任务集中在一个存储桶,从而达到多个存储单元中待处理任务
分布均匀的目的。该多个目标存储桶之间是以并发的方式,同时对桶中存放的待处理任务
进行处理。当这多个桶中有至少一个桶中存储有待处理任务的情况下,同步启动这多个桶
的管理单元,以能够同时对这多个桶中的待处理任务按照预设的处理参数进行处理。
[0090] 在本申请实施例中多个待处理任务的存储单元的标识与存储桶的编号之间的关联关系无论是是一对一的,多对一的,还是一对多的,均可以将集中在某几个存储单元中的
大量的待处理任务打散到多个存储桶中,从而使得存储单元上的待处理任务分布均匀。
[0091] 在一些实施例中,为存储桶进行编号的方式至少包括以下两种:
[0092] 方式一:在多个待处理任务的存储方式为分布式存储的场景下:
[0093] 首先,将每一存储单元的标识对应的字符序列与预设数值相除。
[0094] 在一些可能的实现方式中,比如,待处理任务的存储方式为采用分布式数据存储集群进行存储。根据存储单元的标识对应的字符序列的位数确定该预设数值;或者是,在设
定该存储单元的标识时,在存储单元的标识对应的字符序列的前端添加上该预设数值,比
如,将100000000添加在存储单元的标识对应的字符序列的前端,这样,得到存储单元的标
识时,将该存储单元的标识对应的字符序列与预设数值相除,即可得到对应存储桶的编号。
[0095] 然后,将相除的结果确定为每一所述存储桶的编号。这样,每一个存储桶的编号与存储单元的标识都是有关联关系的,从而在获取到待处理任务之后,基于存储单元的标识
和该关联关系,即可确定出该待处理任务应该归属的存储桶。
[0096] 方式二:在待处理任务与存储单元之间满足特定映射关系,即存储方式为有序存储的场景下:
[0097] 首先,将每一所述存储单元的标识包含的有符号数据转换为无符号数据。
[0098] 在一些可能的实现方式中,待处理任务的存储方式为有序存储可以理解为,待处理任务的标识与存储单元的标识之间存在映射关系,比如,一一对应或多对一的映射关系;
在一个具体例子中,采用KV存储的方式存储该待处理任务,即该多个待处理任务的标识与
存储单元的标识是以键值对的形式进行存储的。
[0099] 然后,将所述无符号数据确定为每一所述存储桶的编号。
[0100] 这样,待处理任务就和存储单元能够对应起来,而且存储单元的标识和存储桶的编号是相关联的,从而在得到待处理任务之后,就可以通过将待处理任务的存储单元的标
识包含的有符号数据转换为无符号数据,确定该待处理任务应该归属的目标存储桶的编
号。
[0101] 在一些实施例中,为了能够将多个待处理任务均匀地分散在多个目标存储桶中,在存储桶中的当前未处理的任务量不大的情况下,步骤S304可以通过以下步骤实现,如图
4A所示,图4A是本申请实施例提供的任务处理方法的另一实现流程示意图,结合图3进行以
下说明:
[0102] 步骤S401,确定当前能够在缓存中保存的任务总数。
[0103] 这里,任务总数可以理解为是系统能够在缓存中保存的总的任务量。
[0104] 步骤S402,如果存储桶中当前未处理的任务量小于特定阈值,将待处理任务放入对应的目标存储桶。
[0105] 这里,特定阈值小于等于所述任务总数。比如,任务总数为一万,特定阈值可以设定为九千。如果多个存储桶中当前未处理的任务量小于特定阈值,说明当前场景下,系统还
可以接收待处理任务,所以获取到该多个待处理任务,然后,将这些待处理任务放入相匹配
的目标存储桶中,从而达到了对存储单元的待处理任务进行打散的目的。
[0106] 在存储桶中的当前未处理的任务量较大的情况下,步骤S304可以通过以下步骤实现,如图4B所示,图4B是本申请实施例提供的任务处理方法的又一实现流程示意图,结合图
3进行以下说明:
[0107] 步骤S421,如果存储桶中当前未处理的任务量大于等于特定阈值,将待处理任务暂存在与目标存储桶对应的存储单元中,以使管理单元处理存储桶中当前存放的任务。
[0108] 这里,如果多个存储桶中当前未处理的任务量大于等于特定阈值,说明系统中当前未处理的任务量已经很多了,如果继续获取待处理任务会导致系统过载,所以,将待处理
任务暂存在与目标存储桶对应的存储单元中,这样,就暂时不需要对这些待处理任务进行
处理,而是多个存储桶中的管理单元,以并发的方式,按照处理参数先处理存储桶中当前已
存放的待处理任务;这样,在每一个时间周期内,都按照处理参数对存储桶中当前已存放的
待处理任务进行处理,当处理后的存储桶中当前未处理的任务量较少时,进入步骤S422。
[0109] 步骤S422,当处理后的存储桶中当前未处理的任务量小于特定阈值时,将暂存在存储单元中的待处理任务放入对应的目标存储桶。
[0110] 这里,当处理后的多个存储桶中当前未处理的任务量小于特定阈值时,说明该系统当前可以接收新的待处理任务,所以,将暂存在存储单元中的待处理任务分别放在各自
所属的目标存储桶的队列中,并且存储桶的管理单元按照先进先出的原则,按照该处理参
数对存储桶中的待处理任务进行处理,直到存储桶中没有待处理任务。
[0111] 在本申请实施例中,如果存储桶中的未处理的任务量不大,则直接将待处理任务放入目标存储桶中;如果存储桶中的未处理的任务量较大,将待处理任务暂存在存储单元,
先处理存储桶中当前未处理任务,当任务量减小到小于特定阈值时,将暂存的待处理任务
放入目标存储桶的队列中,继续按照处理参数对该目标存储桶中的待处理任务进行处理,
避免了在任务处理过程中,存储单元局部过载的情况,使得存储单元所承受的处理任务的
压力均匀,有效的防止底层存储单元的过载。
[0112] 下面,将说明本申请实施例在一个实际的应用场景中的示例性应用,以对企业网络场景下实现异步删除,且存储桶为哈希桶为例,进行说明。
[0113] 本申请实施例提供一种任务处理方法,应用于分布式存储系统中,能够解决底层存储机器处理的每秒的读写次数(Input/Output Operations Per Second, IOPS)和带宽
存在限制或性能瓶颈的问题,比如,可以应用于公司内存储类产品,例如:云对象存储COS、
文件存储、归档存储或云硬盘等,还可以应用于竞品存储类产品,例如,多个公司的云存储。
[0114] 本申请实施例提供的一种任务处理方法,可以通过以下步骤实现:
[0115] 第一步,分布式存储路由方式,支持理解路由键值(KEY)或者数据身份标识号(IDentity,ID),对底层存储单元进行打散,保证请求到底层存储单元均匀分布。
[0116] 这里,理解底层分布式存储路由方式是为了上层(即本系统)异步删除服务对下层存储集群,每个存储单元的压力均匀且支持频控防过载。
[0117] 在一个具体例子中,下层存储集群的存储单元,可以是,云对象存储使用的分布式有序(Key‑Value,KV)存储集群Lavadb的存储单元(cell(比如,3 台物理存储机器为1组
cell));对象存储使用的分布式数据存储集群的基本存储单元是SET(比如,12台物理存储
机器为1个SET)。上层根据下层存储路由的唯一标识(比如,KEY或者ID),计算当前唯一标识
属于哪一个存储单元。
[0118] 在一些实施例中,分布式存储集群,存储路由的方式主要为两种:上层指定KEY和下层生成ID。
[0119] 上层指定KEY场景,例如:有序KV存储。以Lavadb为例,上层指定KEY 主要分为两部分,哈希值(keyhash)和范围值(keyrange)。keyhash的主要作用是,确定具有该keyhash的
任务计算应该去哪一组物理存储单元(cell); keyrange的主要作用保证在当前物理cell
存储单元上,keyrange部分是有序的。当前场景分析完毕后,对底层cell的打散方式,可以
直接使用keyhash部分来进行打散。
[0120] 下层生成ID场景,例如:数据存储。以TFS为例,上层存储1兆字节(MB) 数据分片后,TFS会返回数据唯一标识节点ID(chid)和文件ID(fid)。下载/ 删除路由的过程中,利用
chid计算删除/下载数据属于哪个SET。当确定当前数据属于哪一个SET之后,对底层SET的
打散方式,可以直接使用chid部分来对当前系统的存储单元进行打散。
[0121] 在一些实施例中,对底层存储单元进行打散的方式至少包括以下两种:
[0122] 方式一:在分布式文件系统中,首先确定任务的chid,然后,将chid除以 10000000即可得到,该chid对应的任务属于哪一个slot。
[0123] 方式二:在分布式有序键值对存储系统(Lavadb)下(即待处理任务与存储单元之间满足的特定映射关系为,待处理任务的标识和存储单元的标识是以键值对的形式存储
的),首先,将任务的标识信息的字符串转换为无符号字符串,即可得到该任务对应的slot
的编号。
[0124] 在本申请实施例中,对底层存储单元这样打散之后,能够进行hash均匀调度,在底层存储单元均匀调度,对底层存储单元压力均匀。如图5所示,图5 是本申请实施例提供的
任务处理方法的另一实现流程示意图,进行以下说明:
[0125] 首先,采用上述方式一或者方式二提供的方式,确定待处理任务对应的标识,基于该标识确定该待处理任务应该存放的slot的编号。
[0126] 比如,基于多个待处理任务中的存储单元的标识,在哈希桶501至50n中确定每一个待处理任务应该存放的目标哈希桶。
[0127] 其次,将待处理任务放入目标哈希桶的队列中。
[0128] 这里,哈希桶501至50n中的每一哈希桶均包含独立的先进先出队列和频控管理单元;先进先出队列,用于存放该哈希桶中的待处理任务;频控管理单元,用于基于该先进先
出的队列,对哈希桶中的待处理任务按照一定的处理参数进行处理。比如,哈希桶501中包
括队列511和频控管理单元512;哈希桶 502中包括队列521和频控管理单元522;哈希桶50n
中包括队列5n1和频控管理单元5n2。
[0129] 最后,以并发的方式,采用频率管理单元,按照频控参数,对哈希桶中存放的待处理任务进行处理。
[0130] 在一些实施例中,当需要实现任务处理的服务时,过程如下:
[0131] 第一步,对任务处理的服务启动初始化。
[0132] 这里,在服务启动初始化阶段:
[0133] 首先,对需要进行打散操作的存储引擎申请对应的频控管理单元;需要进行打散操作的存储引擎可以是分布式KV集群或分布式数据集群等。
[0134] 其次,服务启动阶段,需要对频控管理单元进行初始化,读取当前系统的配置:比如,当前系统单位时间能够处理的单位任务数λ和能够在缓存中保存的任务总数τ,具体设
定的频控参数跟单位任务数λ和能够在缓存中保存的任务总数τ有关。
[0135] 第二步,对待处理任务的任务量进行判断。
[0136] 这里,判断待处理任务的任务量的目的是,判断是否需要继续获取待处理任务,放入频控管理单元进行管控。如果已缓存待处理任务(即哈希桶中当前已存放的任务量)总数
大于τ,暂缓继续获取待处理任务(比如,隐藏待处理任务)。如果已缓存待处理任务(即哈希
桶中当前已存放的任务量)总数小于τ,仍然可以继续获取待处理任务,可以继续获取待处
理任务放入频控管理单元。
[0137] 第三步,调度选择处理哈希桶中的待处理任务。
[0138] 这里,首先,轮询调度每一个哈希桶,选择队列中有待处理任务,采用频控管理单元按照频控参数对哈希桶中的待处理任务进行处理,比如,频控参数设定的是50次/毫秒,
将携带该频控参数的处理指令,发送给每一个哈希桶的频控管理单元,以并发的方式,按照
该频控参数对哈系统中的待处理任务进行处理;比如,在这1毫秒的周期内,每一个哈希桶
中最多处理50个待处理任务;结束一个周期之后,进行以1毫秒为周期时长的下一个周期的
轮询;直到每一个哈希桶中的待处理任务处理完毕,结束轮询。这样,采用一定的频控参数
对哈希桶中的待处理任务进行处理,能够有效的防止待处理任务的底层存储单元的过载;
而且采用高并发的方式对待处理任务进行处理,能够最大限度利用底层存储资源。
[0139] 其次,从队列中获取待处理任务,进行处理。
[0140] 图6是本申请实施例提供的任务处理方法的实验结果示意图,如图6所示,横轴表示时间,纵轴表示单位时间处理任务的次数,线603和线604表示在不同时刻未采用本申请
实施例提供的任务处理方法的任务处理情况下,待处理任务所属的底层存储单元的压力的
视图变化情况;框601中的线602为从时刻14 点38分至时刻15点23分期间,采用本申请实施
例提供的任务处理方法对待处理任务进行处理的情况下,待处理任务所属的底层存储单元
的压力的视图变化情况;从线602可以看出,在这一时间段内,各个存储单元压力是均衡的,
没有毛刺出现,由此可见,本申请实施例提供的任务处理方法能够很好的保证存储单元的
均匀分布,从而能够实现存储单元的防过载。
[0141] 下面继续说明本申请实施例提供的任务处理的服务器455的实施为软件模块的示例性结构,在一些实施例中,如图2B所示,存储在存储器450的任务处理的服务器455中的软
件模块可以包括:第一获取模块4551,用于获取待处理任务和用于存放任务的存储桶;第一
确定模块4552,用于根据待处理任务的标识,确定所述待处理任务所属的存储单元;第一匹
配模块4553,用于从所述存储桶中确定与所述存储单元的标识相匹配的目标存储桶;第一
处理模块4554,用于将所述存储单元的标识所对应的待处理任务放入所述目标存储桶,以
使所述目标存储桶的管理单元按照预设的处理参数处理所述目标存储桶中存放的待处理
任务。在一些实施例中,所述第一匹配模块4553,还用于:根据所述存储单元的标识查询特
定的关联关系,确定与所述存储单元的标识相匹配的目标存储桶,所述关联关系用于表征
存储单元的标识与存储桶的编号之间的映射关系。在一些实施例中,所述第一匹配模块
4553,还用于:根据所述存储单元的标识,为对应的存储桶进行编号,得到所述关联关系。在
一些实施例中,如果所述待处理任务的存储方式为分布式存储,所述第一匹配模块4553,还
用于:将所述存储单元的标识对应的字符序列与预设数值相除;将相除的结果确定为所述
存储桶的编号。在一些实施例中,如果待处理任务与存储单元之间满足特定映射关系,所述
第一匹配模块4553,还用于:将所述存储单元的标识包含的有符号数据转换为无符号数据;
将所述无符号数据确定为所述存储桶的编号。在一些实施例中,所述第一处理模块4554,还
用于:确定当前能够在缓存中保存的任务总数;如果所述所述存储桶中当前未处理的任务
量小于特定阈值,将所述待处理任务放入对应的目标存储桶;其中,所述特定阈值小于等于
所述任务总数。在一些实施例中,所述第一处理模块4554,还用于:如果所述所述存储桶中
当前未处理的任务量大于等于所述特定阈值,将所述待处理任务暂存在与目标存储桶对应
的存储单元中,以使所述管理单元处理所述存储桶中当前存放的任务;当处理后的所述存
储桶中当前未处理的任务量小于所述特定阈值时,将暂存在所述存储单元中的所述待处理
任务放入对应的目标存储桶。在一些实施例中,所述第一处理模块4554,还用于:确定在单
位时间内能够处理的单位任务数;根据所述任务总数和所述单位任务数,确定所述预设的
处理参数。在一些实施例中,如果所述管理单元为频控管理单元,所述处理参数为频控参
数,所述第一处理模块4554,还用于:将所述频控管理单元的标识所对应的待处理任务放入
所述目标存储桶,以使所述目标存储桶的频控管理单元在同一时间周期内,按照所述频控
参数处理所述目标存储桶中存放的待处理任务。
[0142] 本申请实施例提供一种存储有可执行指令的存储介质,其中存储有可执行指令,当可执行指令被处理器执行时,将引起处理器执行本申请实施例提供的方法。在一些实施
例中,存储介质可以是闪存、磁表面存储器、光盘、或光盘存储器等存储器;也可以是包括上
述存储器之一或任意组合的各种设备。在一些实施例中,可执行指令可以采用程序、软件、
软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性
或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为
模块、组件、子例程或者适合在计算环境中使用的其它单元。作为示例,可执行指令可以但
不一定对应于文件系统中的文件,可以可被存储在保存其它程序或数据的文件的一部分,
例如,存储在超文本标记语言(Hyper Text Markup Language, HTML)文档中的一个或多个
脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储
一个或多个模块、子程序或代码部分的文件)中。作为示例,可执行指令可被部署为在一个
车载计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个
地点且通过通信网络互连的多个计算设备执行。综上所述,本申请实施例对于获取的多个
待处理任务,首先,按照存储待处理任务的存储单元的标识,确定与该存储单元的标识相匹
配的目标哈希桶;然后,将多个待处理任务分别放入相对应的目标哈希桶中;这样,通过将
多个待处理任务划分到多个哈希桶中,使得存储单元中的待处理任务分布均匀;最后,管理
单元按照预设的处理参数处理每一目标哈希桶中存放的待处理任务;这样,按照处理参数
对目标哈希桶中的待处理任务进行处理,使得多个存储单元承受的压力均匀,避免了存储
单元过载。以上所述,仅为本申请的实施例而已,并非用于限定本申请的保护范围。凡在本
申请的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本申请的保护范围
之内。