《对象处理方法和装置.pdf》由会员分享,可在线阅读,更多相关《对象处理方法和装置.pdf(23页珍藏版)》请在专利查询网上搜索。
1、10申请公布号CN104102693A43申请公布日20141015CN104102693A21申请号201410275788722申请日20140619G06F17/3020060171申请人广州华多网络科技有限公司地址510655广东省广州市黄埔大道中309号羊城创意产业园308栋72发明人邱吉雄林道强74专利代理机构北京三高永信知识产权代理有限责任公司11138代理人张耀光54发明名称对象处理方法和装置57摘要本发明公开了一种对象处理方法和装置,属于计算机技术领域。所述方法包括从接收队列中获取一个对象;从至少一个处理单元中为对象分配一个处理单元;获取为对象分配的处理单元的负载;若负载大于。
2、缓存阈值,则将对象添加至缓存队列中;根据缓存队列对对象进行延迟处理。解决了背景技术中当大量的请求同时需要某一具有REDIS端口的REDIS实例进行处理时,所导致的请求积压、请求超时、业务访问不可用的问题;当某一处理单元比如具有REDIS端口的REDIS实例的负载过高时,将接收队列中对应于该处理单元的对象添加至缓存队列后再对其进行延迟处理,避免了在接收队列中造成积压的问题,隔离了对应于不同处理单元的对象的相互影响,保证了处理速度。51INTCL权利要求书4页说明书13页附图5页19中华人民共和国国家知识产权局12发明专利申请权利要求书4页说明书13页附图5页10申请公布号CN104102693A。
3、CN104102693A1/4页21一种对象处理方法,其特征在于,用于服务器中,所述方法包括从接收队列中获取一个对象;其中,所述接收队列中保存有来自至少一个客户端的待处理的对象,所述对象为请求或者消息;从至少一个处理单元中为所述对象分配一个处理单元;获取为所述对象分配的所述处理单元的负载;若所述负载大于缓存阈值,则将所述对象添加至缓存队列中;根据所述缓存队列对所述对象进行延迟处理。2根据权利要求1所述的方法,其特征在于,所述根据所述缓存队列对所述对象进行延迟处理,包括从所述缓存队列中获取所述对象;再次获取为所述对象分配的所述处理单元的负载;根据所述负载对所述对象进行处理或者将所述对象进行丢弃。。
4、3根据权利要求2所述的方法,其特征在于,所述根据所述负载对所述对象进行处理或者将所述对象进行丢弃,包括判断所述负载是否小于第一预定阈值;若所述负载小于所述第一预定阈值,则通过为所述对象分配的所述处理单元对所述对象进行处理;若所述负载大于所述第一预定阈值,则将所述对象进行丢弃。4根据权利要求2所述的方法,其特征在于,所述根据所述负载对所述对象进行处理或者将所述对象进行丢弃,包括判断所述负载与第二预定阈值和第三预定阈值的大小关系,所述第二预定阈值小于所述第三预定阈值;若所述负载小于所述第二预定阈值,则通过为所述对象分配的所述处理单元对所述对象进行处理;若所述负载大于所述第二预定阈值但小于所述第三预。
5、定阈值,则将所述对象进行随机性丢弃;若所述负载大于所述第三预定阈值,则将所述对象进行丢弃。5根据权利要求4所述的方法,其特征在于,所述将所述对象进行随机性丢弃,包括根据所述第二预定阈值和所述第三预定阈值计算丢弃概率P,0P1;根据所述丢弃概率P确定是否将所述对象进行丢弃;若确定将所述对象进行丢弃,则执行所述将所述对象进行丢弃的步骤。6根据权利要求5所述的方法,其特征在于,所述根据所述第二预定阈值和所述第三预定阈值计算丢弃概率P,包括当所述处理单元的负载由所述处理单元的平均处理时长TAVG表示时,根据所述第二预定阈值TMIN和所述第三预定阈值TMAX计算所述丢弃概率P其中,A为预设常数且2ATM。
6、AXTMIN,所述平均处理时长TAVG用于反映权利要求书CN104102693A2/4页3所述处理单元对各个历史对象进行处理时所需耗费的时长,TAVG0。7根据权利要求5所述的方法,其特征在于,所述根据所述丢弃概率P确定是否将所述对象进行丢弃,包括获取从上一次将对象进行丢弃的时刻开始进入所述接收队列,且与所述对象分配至相同的处理单元的对象的数量N,N0;计算第一随机数并随机生成第二随机数R2,0R21;比较所述第一随机数R1与所述第二随机数R2的大小;若R1R2,则确定将所述对象进行丢弃;若R1R2,则确定不将所述对象进行丢弃。8根据权利要求1至7任一所述的方法,其特征在于,所述从至少一个处理。
7、单元中为所述对象分配一个处理单元,包括当所述对象为用于访问REDIS数据库的请求,且所述至少一个处理单元为所述REDIS数据库对应的至少一个具有REDIS端口的REDIS实例时,获取所述请求的KEY;通过哈希算法将所述请求的KEY映射至所述至少一个具有REDIS端口的REDIS实例中的一个,映射至的具有REDIS端口的REDIS实例是为所述请求分配的所述处理单元。9根据权利要求8所述的方法,其特征在于,所述通过为所述对象分配的所述处理单元对所述对象进行处理,包括通过为所述请求分配的具有REDIS端口的REDIS实例对所述请求进行处理。10一种对象处理装置,其特征在于,用于服务器中,所述装置包括。
8、对象获取模块,用于从接收队列中获取一个对象;其中,所述接收队列中保存有来自至少一个客户端的待处理的对象,所述对象为请求或者消息;单元分配模块,用于从至少一个处理单元中为所述对象分配一个处理单元;负载获取模块,用于获取为所述对象分配的所述处理单元的负载;对象添加模块,用于若所述负载大于缓存阈值,则将所述对象添加至缓存队列中;延迟处理模块,用于根据所述缓存队列对所述对象进行延迟处理。11根据权利要求10所述的装置,其特征在于,所述延迟处理模块,包括对象获取子模块、负载获取子模块和对象处理子模块;所述对象获取子模块,用于从所述缓存队列中获取所述对象;所述负载获取子模块,用于再次获取为所述对象分配的所。
9、述处理单元的负载;所述对象处理子模块,用于根据所述负载对所述对象进行处理或者将所述对象进行丢弃。12根据权利要求11所述的装置,其特征在于,所述对象处理子模块,包括第一判断单元、对象处理单元和对象丢弃单元;所述第一判断单元,用于判断所述负载是否小于第一预定阈值;所述对象处理单元,用于若所述负载小于所述第一预定阈值,则通过为所述对象分配的所述处理单元对所述对象进行处理;所述对象丢弃单元,用于若所述负载大于所述第一预定阈值,则将所述对象进行丢弃。13根据权利要求11所述的装置,其特征在于,所述对象处理子模块,包括第二判断权利要求书CN104102693A3/4页4单元、对象处理单元、随机丢弃单元和。
10、对象丢弃单元;所述第二判断单元,用于判断所述负载与第二预定阈值和第三预定阈值的大小关系,所述第二预定阈值小于所述第三预定阈值;所述对象处理单元,用于若所述负载小于所述第二预定阈值,则通过为所述对象分配的所述处理单元对所述对象进行处理;所述随机丢弃单元,用于若所述负载大于所述第二预定阈值但小于所述第三预定阈值,则将所述对象进行随机性丢弃;所述对象丢弃单元,用于若所述负载大于所述第三预定阈值,则将所述对象进行丢弃。14根据权利要求13所述的装置,其特征在于,所述随机丢弃单元,包括概率计算子单元、丢弃确定子单元和对象丢弃子单元;所述概率计算子单元,用于根据所述第二预定阈值和所述第三预定阈值计算丢弃概。
11、率P,0P1;所述丢弃确定子单元,用于根据所述丢弃概率P确定是否将所述对象进行丢弃;所述对象丢弃子单元,用于若确定将所述对象进行丢弃,则将所述对象进行丢弃。15根据权利要求14所述的装置,其特征在于,所述概率计算子单元,还用于当所述处理单元的负载由所述处理单元的平均处理时长TAVG表示时,根据所述第二预定阈值TMIN和所述第三预定阈值TMAX计算所述丢弃概率P其中,A为预设常数且2ATMAXTMIN,所述平均处理时长TAVG用于反映所述处理单元对各个历史对象进行处理时所需耗费的时长,TAVG0。16根据权利要求14所述的装置,其特征在于,所述丢弃确定子单元,包括获取子单元、计算子单元、比较子单。
12、元、丢弃子单元和不丢弃子单元;所述获取子单元,用于获取从上一次将对象进行丢弃的时刻开始进入所述接收队列,且与所述对象分配至相同的处理单元的对象的数量N,N0;所述计算子单元,用于计算第一随机数并随机生成第二随机数R2,0R21;所述比较子单元,用于比较所述第一随机数R1与所述第二随机数R2的大小;所述丢弃子单元,用于若R1R2,则确定将所述对象进行丢弃;所述不丢弃子单元,用于若R1R2,则确定不将所述对象进行丢弃。17根据权利要求10至16任一所述的装置,其特征在于,所述单元分配模块,包括获取子模块和映射子模块;所述获取子模块,用于当所述对象为用于访问REDIS数据库的请求,且所述至少一个处理。
13、单元为所述REDIS数据库对应的至少一个具有REDIS端口的REDIS实例时,获取所述请求的KEY;所述映射子模块,用于通过哈希算法将所述请求的KEY映射至所述至少一个具有REDIS端口的REDIS实例中的一个,映射至的具有REDIS端口的REDIS实例是为所述请求分权利要求书CN104102693A4/4页5配的所述处理单元。18根据权利要求17所述的装置,其特征在于,所述对象处理单元,还用于通过为所述请求分配的具有REDIS端口的REDIS实例对所述请求进行处理。权利要求书CN104102693A1/13页6对象处理方法和装置技术领域0001本发明涉及计算机技术领域,特别涉及一种对象处理方。
14、法和装置。背景技术0002REDIS是一个开源、支持网络、基于内存的KEYVALUE键值对数据库。REDIS支持存储的数据类型包括STRING字符串、LIST链表、SET集合、ZSET有序集合和HASH哈希类型等。在对REDIS数据库进行访问的过程中,大致可分为读请求和写请求两种。0003请参考图1,其示出了对REDIS数据库进行访问所涉及的示意图。以读请求为例,M个读请求存放于请求队列12中,M1。为了应对大规模的业务访问,需要部署多个REDIS实例14,每个REDIS实例14占用一个REDIS端口。请求队列12中的读请求由该请求队列12对应的N个线程进行处理,N1。对于任一读请求,系统随机。
15、分配一个线程进行处理。假设线程1对读请求M进行处理,则线程1读取读请求M的KEY,并通过哈希算法将KEY映射到多个REDIS端口中的一个,进而通过该REDIS端口将读请求下发至与其对应的REDIS实例14,并通过该REDIS实例14对该读请求进行处理。比如,该REDIS实例14可以提供读取数据文件的功能。0004在实现本发明的过程中,发明人发现上述技术至少存在以下问题当请求队列12中存放的M个读请求的KEY哈希分布不均匀,或者在某个时间段内存在大量的具有相同的KEY的读请求时,将会导致某一REDIS端口对应的REDIS实例的负载过高。由于REDIS实例只支持对读请求进行单线程地串行处理,这就导。
16、致无法对大量的读请求进行及时地处理,造成请求积压、请求超时、业务访问不可用的问题。类似的,针对写请求的处理,上述技术也存在同样的问题。发明内容0005为了解决上述技术中存在的当大量的请求同时需要某一具有REDIS端口的REDIS实例进行处理时,所导致的请求积压、请求超时、业务访问不可用的问题,本发明实施例提供了一种对象处理方法和装置。所述技术方案如下0006第一方面,提供了一种对象处理方法,用于服务器中,所述方法包括0007从接收队列中获取一个对象;其中,所述接收队列中保存有来自至少一个客户端的待处理的对象,所述对象为请求或者消息;0008从至少一个处理单元中为所述对象分配一个处理单元;000。
17、9获取为所述对象分配的所述处理单元的负载;0010若所述负载大于缓存阈值,则将所述对象添加至缓存队列中;0011根据所述缓存队列对所述对象进行延迟处理。0012可选的,所述根据所述缓存队列对所述对象进行延迟处理,包括0013从所述缓存队列中获取所述对象;说明书CN104102693A2/13页70014再次获取为所述对象分配的所述处理单元的负载;0015根据所述负载对所述对象进行处理或者将所述对象进行丢弃。0016可选的,所述根据所述负载对所述对象进行处理或者将所述对象进行丢弃,包括0017判断所述负载是否小于第一预定阈值;0018若所述负载小于所述第一预定阈值,则通过为所述对象分配的所述处理。
18、单元对所述对象进行处理;0019若所述负载大于所述第一预定阈值,则将所述对象进行丢弃。0020可选的,所述根据所述负载对所述对象进行处理或者将所述对象进行丢弃,包括0021判断所述负载与第二预定阈值和第三预定阈值的大小关系,所述第二预定阈值小于所述第三预定阈值;0022若所述负载小于所述第二预定阈值,则通过为所述对象分配的所述处理单元对所述对象进行处理;0023若所述负载大于所述第二预定阈值但小于所述第三预定阈值,则将所述对象进行随机性丢弃;0024若所述负载大于所述第三预定阈值,则将所述对象进行丢弃。0025可选的,所述将所述对象进行随机性丢弃,包括0026根据所述第二预定阈值和所述第三预定。
19、阈值计算丢弃概率P,0P1;0027根据所述丢弃概率P确定是否将所述对象进行丢弃;0028若确定将所述对象进行丢弃,则执行所述将所述对象进行丢弃的步骤。0029可选的,所述根据所述第二预定阈值和所述第三预定阈值计算丢弃概率P,包括0030当所述处理单元的负载由所述处理单元的平均处理时长TAVG表示时,根据所述第二预定阈值TMIN和所述第三预定阈值TMAX计算所述丢弃概率P00310032其中,A为预设常数且2ATMAXTMIN,所述平均处理时长TAVG用于反映所述处理单元对各个历史对象进行处理时所需耗费的时长,TAVG0。0033可选的,所述根据所述丢弃概率P确定是否将所述对象进行丢弃,包括0。
20、034获取从上一次将对象进行丢弃的时刻开始进入所述接收队列,且与所述对象分配至相同的处理单元的对象的数量N,N0;0035计算第一随机数并随机生成第二随机数R2,0R21;0036比较所述第一随机数R1与所述第二随机数R2的大小;0037若R1R2,则确定将所述对象进行丢弃;0038若R1R2,则确定不将所述对象进行丢弃。0039可选的,所述从至少一个处理单元中为所述对象分配一个处理单元,包括0040当所述对象为用于访问REDIS数据库的请求,且所述至少一个处理单元为所述说明书CN104102693A3/13页8REDIS数据库对应的至少一个具有REDIS端口的REDIS实例时,获取所述请求的。
21、KEY;0041通过哈希算法将所述请求的KEY映射至所述至少一个具有REDIS端口的REDIS实例中的一个,映射至的具有REDIS端口的REDIS实例是为所述请求分配的所述处理单元。0042可选的,所述通过为所述对象分配的所述处理单元对所述对象进行处理,包括0043通过为所述请求分配的具有REDIS端口的REDIS实例对所述请求进行处理。0044第二方面,提供了一种对象处理装置,用于服务器中,所述装置包括0045对象获取模块,用于从接收队列中获取一个对象;其中,所述接收队列中保存有来自至少一个客户端的待处理的对象,所述对象为请求或者消息;0046单元分配模块,用于从至少一个处理单元中为所述对象。
22、分配一个处理单元;0047负载获取模块,用于获取为所述对象分配的所述处理单元的负载;0048对象添加模块,用于若所述负载大于缓存阈值,则将所述对象添加至缓存队列中;0049延迟处理模块,用于根据所述缓存队列对所述对象进行延迟处理。0050可选的,所述延迟处理模块,包括对象获取子模块、负载获取子模块和对象处理子模块;0051所述对象获取子模块,用于从所述缓存队列中获取所述对象;0052所述负载获取子模块,用于再次获取为所述对象分配的所述处理单元的负载;0053所述对象处理子模块,用于根据所述负载对所述对象进行处理或者将所述对象进行丢弃。0054可选的,所述对象处理子模块,包括第一判断单元、对象处。
23、理单元和对象丢弃单元;0055所述第一判断单元,用于判断所述负载是否小于第一预定阈值;0056所述对象处理单元,用于若所述负载小于所述第一预定阈值,则通过为所述对象分配的所述处理单元对所述对象进行处理;0057所述对象丢弃单元,用于若所述负载大于所述第一预定阈值,则将所述对象进行丢弃。0058可选的,所述对象处理子模块,包括第二判断单元、对象处理单元、随机丢弃单元和对象丢弃单元;0059所述第二判断单元,用于判断所述负载与第二预定阈值和第三预定阈值的大小关系,所述第二预定阈值小于所述第三预定阈值;0060所述对象处理单元,用于若所述负载小于所述第二预定阈值,则通过为所述对象分配的所述处理单元对。
24、所述对象进行处理;0061所述随机丢弃单元,用于若所述负载大于所述第二预定阈值但小于所述第三预定阈值,则将所述对象进行随机性丢弃;0062所述对象丢弃单元,用于若所述负载大于所述第三预定阈值,则将所述对象进行丢弃。0063可选的,所述随机丢弃单元,包括概率计算子单元、丢弃确定子单元和对象丢弃子单元;0064所述概率计算子单元,用于根据所述第二预定阈值和所述第三预定阈值计算丢弃说明书CN104102693A4/13页9概率P,0P1;0065所述丢弃确定子单元,用于根据所述丢弃概率P确定是否将所述对象进行丢弃;0066所述对象丢弃子单元,用于若确定将所述对象进行丢弃,则将所述对象进行丢弃。006。
25、7可选的,所述概率计算子单元,还用于当所述处理单元的负载由所述处理单元的平均处理时长TAVG表示时,根据所述第二预定阈值TMIN和所述第三预定阈值TMAX计算所述丢弃概率P00680069其中,A为预设常数且2ATMAXTMIN,所述平均处理时长TAVG用于反映所述处理单元对各个历史对象进行处理时所需耗费的时长,TAVG0。0070可选的,所述丢弃确定子单元,包括获取子单元、计算子单元、比较子单元、丢弃子单元和不丢弃子单元;0071所述获取子单元,用于获取从上一次将对象进行丢弃的时刻开始进入所述接收队列,且与所述对象分配至相同的处理单元的对象的数量N,N0;0072所述计算子单元,用于计算第一。
26、随机数并随机生成第二随机数R2,0R21;0073所述比较子单元,用于比较所述第一随机数R1与所述第二随机数R2的大小;0074所述丢弃子单元,用于若R1R2,则确定将所述对象进行丢弃;0075所述不丢弃子单元,用于若R1R2,则确定不将所述对象进行丢弃。0076可选的,所述单元分配模块,包括获取子模块和映射子模块;0077所述获取子模块,用于当所述对象为用于访问REDIS数据库的请求,且所述至少一个处理单元为所述REDIS数据库对应的至少一个具有REDIS端口的REDIS实例时,获取所述请求的KEY;0078所述映射子模块,用于通过哈希算法将所述请求的KEY映射至所述至少一个具有REDIS端。
27、口的REDIS实例中的一个,映射至的具有REDIS端口的REDIS实例是为所述请求分配的所述处理单元。0079可选的,所述对象处理单元,还用于通过为所述请求分配的具有REDIS端口的REDIS实例对所述请求进行处理。0080本发明实施例提供的技术方案带来的有益效果是0081通过从至少一个处理单元中为待处理的对象分配一个处理单元,并获取为对象分配的处理单元的负载,若负载大于缓存阈值,则将对象添加至缓存队列中,然后根据缓存队列对对象进行延迟处理;解决了背景技术中存在的当大量的请求同时需要某一具有REDIS端口的REDIS实例进行处理时,所导致的请求积压、请求超时、业务访问不可用的问题;当某一处理单。
28、元比如具有REDIS端口的REDIS实例的负载过高时,将接收队列中对应于该处理单元的对象添加至缓存队列中缓存一段时间后,再对其进行延迟处理,避免了在接收队列中造成请求或者消息的积压,隔离了对应于不同处理单元的对象之间的相互影响,保证了对接收队列中对象的处理速度。说明书CN104102693A5/13页10附图说明0082为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。0083图1是对REDIS数据库进行访问所。
29、涉及的示意图;0084图2是本发明各个实施例所涉及的实施环境的结构示意图;0085图3是本发明一个实施例提供的对象处理方法的方法流程图;0086图4A是本发明另一实施例提供的对象处理方法的方法流程图;0087图4B是通过本发明实施例提供的对象处理方法对REDIS数据库进行访问所涉及的示意图;0088图5是本发明一个实施例提供的对象处理装置的结构方框图;0089图6是本发明另一实施例提供的对象处理装置的结构方框图;0090图7是本发明一个实施例提供的服务器的结构示意图。具体实施方式0091为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。0092请参考图。
30、2,其示出了本发明各个实施例所涉及的实施环境的结构示意图。该实施环境包括至少一个终端210和服务器220。0093终端210可以是手机、平板电脑、电子书阅读器、MP3MOVINGPICTUREEXPERTSGROUPAUDIOLAYERIII,动态影像专家压缩标准音频层面3播放器、MP4MOVINGPICTUREEXPERTSGROUPAUDIOLAYERIV,动态影像专家压缩标准音频层面4播放器、膝上型便携计算机和台式计算机等等。0094终端210中运行有客户端,客户端用于通过无线网络或者有线网络向服务器220发送待处理的对象。该对象可以是请求,也可以是消息。0095服务器220可以是一台服。
31、务器,或者由若干台服务器组成的服务器集群,或者是一个云计算服务中心。服务器220用于接收终端210中运行的客户端发送的对象,并将对象保存至接收队列中。其中,当对象为请求时,对应的接收队列可以称为请求队列;当对象为消息时,对应的接收队列可以称为消息队列。0096请参考图3,其示出了本发明一个实施例提供的对象处理方法的方法流程图,本实施例以该对象处理方法应用于图2所示实施环境中的服务器侧来举例说明。该对象处理方法可以包括如下几个步骤0097步骤302,从接收队列中获取一个对象;其中,接收队列中保存有来自至少一个客户端的待处理的对象,该对象为请求或者消息。0098步骤304,从至少一个处理单元中为对。
32、象分配一个处理单元。0099步骤306,获取为对象分配的处理单元的负载。0100步骤308,若负载大于缓存阈值,则将对象添加至缓存队列中。说明书CN104102693A106/13页110101步骤310,根据缓存队列对对象进行延迟处理。0102综上所述,本实施例提供的对象处理方法,通过从至少一个处理单元中为待处理的对象分配一个处理单元,并获取为对象分配的处理单元的负载,若负载大于缓存阈值,则将对象添加至缓存队列中,然后根据缓存队列对对象进行延迟处理;解决了背景技术中存在的当大量的请求同时需要某一具有REDIS端口的REDIS实例进行处理时,所导致的请求积压、请求超时、业务访问不可用的问题;当。
33、某一处理单元比如具有REDIS端口的REDIS实例的负载过高时,将接收队列中对应于该处理单元的对象添加至缓存队列中缓存一段时间后,再对其进行延迟处理,避免了在接收队列中造成请求或者消息的积压,隔离了对应于不同处理单元的对象之间的相互影响,保证了对接收队列中对象的处理速度。0103请参考图4A,其示出了本发明另一实施例提供的对象处理方法的方法流程图,本实施例以该对象处理方法应用于图2所示实施环境中的服务器侧来举例说明。该对象处理方法可以包括如下几个步骤0104步骤401,从接收队列中获取一个对象。0105接收队列中保存有来自至少一个客户端的待处理的对象,该对象为请求或者消息。其中,当对象为请求时。
34、,对应的接收队列可以称为请求队列;当对象为消息时,对应的接收队列可以称为消息队列。服务器通常按照先进先出的原则从接收队列中按序获取一个对象。0106请参考图4B,其示出了通过本实施例提供的对象处理方法对REDIS数据库进行访问所涉及的示意图。接收队列41中包含至少一个待处理的请求,该至少一个待处理的请求用于对REDIS数据库进行访问。其中,当接收队列41中包含的为读请求时,接收队列41可以称为读请求队列;当接收队列41中包含的为写请求时,接收队列41可以称为写请求队列。0107步骤402,从至少一个处理单元中为对象分配一个处理单元。0108接收队列对应于至少一个用于处理对象的处理单元。在RED。
35、IS中,该处理单元即为用于处理请求的具有REDIS端口的REDIS实例。服务器可以通过哈希算法或者其它算法为对象分配一个处理单元。0109比如,在REDIS中,由于REDIS是KEYVALUE数据库,每一个用于访问REDIS数据库的请求都携带有一个KEY,线程从接收队列中读取请求后,获取请求的KEY,并通过哈希算法将KEY映射至至少一个具有REDIS端口的REDIS实例中的一个,该映射至的具有REDIS端口的REDIS实例是为该请求分配的处理单元。0110步骤403,获取为对象分配的处理单元的负载。0111一个处理单元的负载能够反映该处理单元的处理能力。当处理单元的负载较高时,表明其所需要处理。
36、的对象较多,其相应的处理能力将会下降;反之,当处理单元的负载较低时,表明其所需要处理的对象较少,其相应的处理能力将会提高。0112可选的,处理单元的负载可以由处理单元的平均处理时长TAVG表示,平均处理时长TAVG用于反映处理单元对各个历史对象进行处理时所需耗费的时长,TAVG0。某一处理单元的平均处理时长TAVG越大,表明该处理单元对历史对象进行处理时所需耗费的时长较长,也即该处理单元的负载较高;反之,某一处理单元的平均处理时长TAVG越小,表明该处理单元对历史对象进行处理时所需耗费的时长较短,也即该处理单元的负载较低。说明书CN104102693A117/13页120113步骤404,若负。
37、载大于缓存阈值,则将对象添加至缓存队列中。0114缓存阈值为预先设定的值。当处理单元的负载由处理单元的平均处理时长TAVG表示时,缓存阈值可记为TNORMAL。服务器获取为对象分配的处理单元的平均处理时长TAVG之后,判断平均处理时长TAVG与缓存阈值TNORMAL之间的大小关系;若0TAVGTNORMAL,则直接通过为对象分配的处理单元对对象进行处理;若TAVGTNORMAL,则将对象添加至缓存队列中。缓存队列用于将对象缓存一段时间,服务器通过缓存队列的缓存对对象进行延迟处理。0115可选的,服务器还可以根据处理单元的负载确定处理单元的服务级别。当处理单元的负载小于或者等于缓存阈值时,服务器。
38、确定处理单元的服务级别为正常级别,表明该处理单元的负载较低,可以对对象正常进行处理。当处理单元的负载大于缓存阈值时,服务器确定处理单元的服务级别不是正常级别,表明该处理单元的负载较高,若继续将对象下发至该处理单元进行处理,可能导致处理速度过慢、无响应以及接收队列中的其它对象的积压等问题。进一步地,当确定出处理单元的服务级别不是正常级别时,服务器将对象添加至缓存队列中。0116如图4B所示,假设系统分配线程N对接收队列41中的请求M进行处理,线程N从接收队列41中读取请求M后,获取该请求对应的具有REDIS端口的REDIS实例42的平均处理时长TAVG,并检测TAVG是否大于TNORMAL;当T。
39、AVGTNORMAL时,线程N将请求M添加至缓存队列43中,并后续由缓存队列43对应的多线程对请求M进行处理。0117步骤405,从缓存队列中获取对象。0118对象进入缓存队列后,仍然按照先进先出的原则被逐一按序处理。0119如图4B所示,假设系统分配线程K为缓存队列43中的请求M进行处理,线程K从缓存队列43中读取请求M。0120步骤406,再次获取为对象分配的处理单元的负载。0121待处理的对象经过在缓存队列中的一段时间的等待之后,为该对象分配的处理单元的服务级别可能发生变化,此时需要再次获取为该对象分配的处理单元的负载。0122可选的,服务器再次获取处理单元的平均处理时长TAVG。012。
40、3步骤407,根据负载对对象进行处理或者将对象进行丢弃。0124在第一种可能的实现方式中,本步骤可以包括如下几个子步骤0125第一,判断负载是否小于第一预定阈值。0126第一预定阈值为预先设定的值。当处理单元的负载由处理单元的平均处理时长TAVG表示时,第一预定阈值可记为T1。优选的,第一预定阈值T1大于或者等于缓存阈值TNORMAL。0127第二,若负载小于第一预定阈值,则通过为对象分配的处理单元对对象进行处理。0128第三,若负载大于第一预定阈值,则将对象进行丢弃。0129服务器再次获取处理单元的平均处理时长TAVG之后,判断再次获取的平均处理时长TAVG与第一预定阈值T1之间的大小关系;。
41、若0TAVGT1,则通过为对象分配的处理单元对对象进行处理;若TAVGT1,则将对象进行丢弃。0130在第二种可能的实现方式中,本步骤可以包括如下几个子步骤0131第一,判断负载与第二预定阈值和第三预定阈值的大小关系。0132其中,第二预定阈值和第三预定阈值均为预先设定的值,且第二预定阈值小于第说明书CN104102693A128/13页13三预定阈值。当处理单元的负载由处理单元的平均处理时长TAVG表示时,第二预定阈值可记为TMIN,第三预定阈值可记为TMAX。优选的,第二预定阈值TMIN大于或者等于缓存阈值TNORMAL。0133第二,若负载小于第二预定阈值,则通过为对象分配的处理单元对对。
42、象进行处理。0134当负载小于第二预定阈值时,线程将待处理的对象下发至为该对象分配的处理单元,并通过该处理单元对对象进行处理。比如,通过为请求分配的具有REDIS端口的REDIS实例对请求进行处理,该REDIS实例可以提供读取数据文件或者写入数据文件等功能。0135第三,若负载大于第二预定阈值但小于第三预定阈值,则将对象进行随机性丢弃。0136当负载大于第二预定阈值但小于第三预定阈值时,随机性地确定是否将对象进行丢弃。在一种可能的实施方式中,本步骤可以包括01371、根据第二预定阈值和第三预定阈值计算丢弃概率P,0P1。0138当处理单元的负载由处理单元的平均处理时长TAVG表示时,根据第二预。
43、定阈值TMIN和第三预定阈值TMAX计算丢弃概率P01390140其中,A为预设常数且2ATMAXTMIN。01412、根据丢弃概率P确定是否将对象进行丢弃。01421获取从上一次将对象进行丢弃的时刻开始进入接收队列,且与对象分配至相同的端处理单元的对象的数量N,N0。0143N反映了最近一段时间内进入接收队列中,且同类型的待处理的对象比如具有相同的KEY的待处理的请求的数量情况。01442计算第一随机数并随机生成第二随机数R2,0R21。0145N越大,第一随机数R1越大;反之,N越小,第一随机数R1越小。通过上述公式计算得的第一随机数R1能够更为准确地反映出为对象分配的处理单元的负载情况。。
44、01463比较第一随机数R1与第二随机数R2的大小。01474若R1R2,则确定将对象进行丢弃。01485若R1R2,则确定不将对象进行丢弃。01493、若确定将对象进行丢弃,则将对象进行丢弃。0150另外,若确定不将对象进行丢弃,则将对象再次添加至缓存队列中,并重复上述步骤405至步骤407对该对象进行处理。0151第四,若负载大于第三预定阈值,则将对象进行丢弃。0152通过将对象进行丢弃,可以有效地缓解为对象分配的处理单元的负载压力,使得各个处理单元的处理能力得到有效的平衡,避免因某个处理单元的处理能力大幅下降而影响到接收队列中其它待处理的对象通过其它处理单元对目标进行访问,有效避免了队列。
45、的积压阻塞问题。0153可选的,服务器还可以根据处理单元的负载确定处理单元的服务级别。以处理单元的负载由处理单元的平均处理时长TAVG表示为例。当0TAVGTNORMAL时,将处理单元的服务级别确定为正常级别;当TNORMALTAVGTMIN时,将处理单元的服务级别确定为慢级别;说明书CN104102693A139/13页14当TMINTAVGTMAX时,将处理单元的服务级别确定为随机丢包级别;当TAVGTMAX时,将处理单元的服务级别确定为丢包级别。服务器依据平均处理时长TAVG的逐步递增,将处理单元的服务级别划分为正常级别、慢级别、随机丢包级别和丢包级别。处理单元的负载量随上述四种不同类型。
46、的服务级别依次递增。0154对应于上述不同的服务级别,当服务级别为正常级别或者慢级别时,服务器通过为对象分配的处理单元对对象进行处理;当服务级别为随机丢包级别时,服务器将对象进行随机性丢弃;当服务级别为丢包级别时,服务器将对象进行丢弃。0155另外,在将对象进行丢弃之后,服务器可以向该对象的发起方,也即向该对象对应的客户端发送处理失败响应。以此告知客户端,服务器并未成功处理其发送的对象,客户端可以依据该处理失败响应在后续的某个时刻再次向服务器发送该处理失败的对象。0156类似的,在通过为对象分配的处理单元对对象进行处理之后,服务器可以向该对象的发起方,也即向该对象对应的客户端发送处理成功响应。。
47、以此告知客户端,服务器已成功处理其发送的对象。0157另外,当处理单元的负载由处理单元的平均处理时长TAVG表示时,本实施例还提供了一种对处理单元的平均处理时长TAVG的更新机制。具体的0158不论是将对象进行丢弃之后,或者通过为对象分配的处理单元对对象进行处理之后,记录对象的处理时间T,并更新为对象分配的处理单元的平均处理时长TAVG。若将对象进行丢弃,则将对象的处理时间T记为0;若为对象分配的处理单元对对象进行处理,则依据实际处理情况记录对象的处理时间T,T0。0159之后,通过加权平均算法对服务单元的平均处理时长TAVG进行更新。更新后的平均处理时长TAVG1WTAVGWT;其中,TAV。
48、G为更新前的平均处理时长,W为预设权重且0W1。0160当TTAVG时,更新后的平均处理时长TAVG将会增大;当TTAVG时,更新后的平均处理时长TAVG将会减小。特别地,在将对象进行丢弃的情况下,将对象的处理时间T记为0,可以使得该对象对应的处理单元的平均处理时长逐渐下降,直至恢复至小于或者等于缓存阈值,由此保证不会长时间地进行丢弃。0161综上所述,本实施例提供的对象处理方法,通过从至少一个处理单元中为待处理的对象分配一个处理单元,并获取为对象分配的处理单元的负载,若负载大于缓存阈值,则将对象添加至缓存队列中,然后根据缓存队列对对象进行延迟处理;解决了背景技术中存在的当大量的请求同时需要某。
49、一具有REDIS端口的REDIS实例进行处理时,所导致的请求积压、请求超时、业务访问不可用的问题;当某一处理单元比如具有REDIS端口的REDIS实例的负载过高时,将接收队列中对应于该处理单元的对象添加至缓存队列中缓存一段时间后,再对其进行延迟处理,避免了在接收队列中造成请求或者消息的积压,隔离了对应于不同处理单元的对象之间的相互影响,保证了对接收队列中对象的处理速度。0162另外,本实施例提供的对象处理方法,还通过设定不同的阈值,选择性地将缓存队列中的对象进行处理或者丢弃。通过将对象进行丢弃,可以有效地缓解该对象对应的处理单元的负载压力,使得各个处理单元的处理能力得到有效的平衡,避免因某个处理单元的处理能力大幅下降而影响到接收队列中其它待处理的对象通过其它处理单元对目标进行访问,有效避免了队列的积压阻塞问题。说明书CN104102693A1410/13页150163下述为本发明装置实施例,可以用于执行本发明方法实施例。对于本发明装置实施例中未披露的细节,请参照本发明方法实施例。0164请参考图5,其示出了本发明一个实施例提供的对象处理装置的结构方框图,该对象处理装置可以通过软件、硬件或者两者的结合实现成为服务器的部分或者全部。该对象处理装置可。