基于缓存分片技术的数据过滤方法和装置的制造方法

xiaoxiao2020-10-23  12

基于缓存分片技术的数据过滤方法和装置的制造方法
【技术领域】
[0001]本发明涉及计算机技术领域,尤其涉及一种基于缓存分片技术的数据过滤方法和
目.0
【背景技术】
[0002]在电子商务领域,客户端通过爬虫系统抓取到海量的商品和活动,或者通过与公司合作来调用公司已有的促销接口获取到海量的商品和活动,然后按照已有的规则对这些数据进行过滤和估值,把优质的且促销力度高的商品和活动展现给用户。
[0003]在计算机科学中,消息队列是在消息的传输过程中保存消息的容器。“消息”是在两台计算机间传送的数据单位。消息被发送到队列中。消息队列管理器在将消息从它的源中继到它的目标时充当中间人。队列的主要目的是提供路由并保证消息的传递;如果发送消息时接收者不可用,消息队列会保留消息,直到可以成功地传递它。
[0004]不管是爬虫系统还是调用公司已有的促销接口,都是通过消息队列的方式发送数据,客户端作为消费者接收数据进行处理,目前自动化处理数据的方法主要是以下几种:
[0005](I)客户端拿到数据后直接进行处理,过滤数据、计算估值。由于商品的维度比较多,在过滤和计算的过程中,不可避免地要实时调用接口数据(例如商品的价格、评价信息等)。如果数据量比较大,导致的后果就是消息队列积压的数据越来越多。
[0006](2)采用缓存技术,把消息队列发送的数据暂存到缓存中,然后从缓存中取数据进行处理。这种处理方式仍然不能缓解海量数据的处理压力,只是减轻了消息队列端的压力,而把压力转移到缓存中。
[0007](3)采用多线程或分布式技术。如果采用多线程或分布式的方式直接从消息队列获取数据进行处理,肯定可以减轻消息队列的数据压力,但是没办法对数据进行去重;也没有办法进行SPU (Standard Product Unit,标准化产品单元,用于区分商品品种)合并(SPU合并是把相同商品中颜色或尺码不同的商品合并为同一种商品)。
[0008](4)缓存技术配合线程池技术。把消息队列发送的数据暂存到缓存中,然后启动线程池从缓存中取数据进行处理。无论是爬虫还是通过促销接口获取数据,一批次获取的数据基本都是同一品类的数据;而且相比商品,活动的数量非常少。因此这样过滤出来的数据非常不均匀,因为先来的必然优先过滤,无法满足用户的需求。
[0009]目前自动化规则处理数据的方法主要是以上谈到的几种方法,但是它们或多或少都存在一些冋题:
[0010]方法(I)在数据量小的情况可以完美解决问题,但是如果要处理海量的数据,导致的后果就是消息队列积压的数据越来越多。
[0011]方法⑵减轻了消息队列端的压力,但是缓存的压力会比较大。
[0012]方法(3)可以减轻消息队列的数据压力,但是没办法对数据进行去重;也没有办法进行SPU合并,不能满足用户的需求。
[0013]方法(4)可以解决去重和SPU合并的问题,但是由于它是单缓存的,会导致数据过滤非常不均匀,因为先接收的数据必然优先过滤。

【发明内容】

[0014]有鉴于此,本发明提供一种基于缓存分片技术的数据过滤方法和装置,能缓解消息队列的数据积压,分散数据处理压力,并能实现对数据的去重和商品信息合并,从而完成对数据的有效过滤和估值。
[0015]为实现上述目的,根据本发明的一个方面,提供了一种基于缓存分片技术的数据过滤方法。
[0016]本发明的基于缓存分片技术的数据过滤方法包括:由客户端按照预设规则分片缓存接收到的数据,所述数据是服务器通过消息队列发送给客户端的;所述客户端对所分片缓存的数据进行多线程处理;所述客户端输出所处理的数据。
[0017]可选地,所述按预设规则分片缓存接收到的数据包括:如果所述数据是活动数据,则将所述数据放入活动缓存片;如果所述数据是商品数据,则将所述数据按照商品类别放入相应的商品缓存分片。
[0018]可选地,所述客户端对所述缓存分片中的数据进行多线程处理包括:所述客户端对应各缓存分片分别构建相应线程;所述线程从各自对应的缓存分片中获取数据进行去重、SPU合并、按预设规则过滤和估值处理。
[0019]可选地,所述从各自对应的缓存分片中获取数据进行去重包括:如果所述获取的数据是活动数据,则根据活动网址中的活动短码去重;如果所述获取的数据是商品数据,则根据商品SKU进行去重。
[0020]可选地,所述线程从各自对应的缓存分片中获取数据进行估值包括:如果所述数据是活动数据,则按照活动的维度根据预设的估值规则计算活动的得分,同时计算所述活动对应的商品得分,最终根据预设的活动和商品得分比例计算综合得分;如果所述获取的数据是商品数据,则按照商品的维度根据预设的估值规则计算商品的综合得分。
[0021]根据本发明的另一方面,提供了一种基于缓存分片技术的数据过滤装置。
[0022]本发明的基于缓存分片技术的数据过滤装置包括:分片缓存模块,用于按照预设规则分片缓存接收到的数据,所述数据是服务器通过消息队列发送给客户端的;线程池处理模块,用于对所分片缓存的数据进行多线程处理;输出模块,用于所述客户端输出所处理的数据。
[0023]可选地,所述分片缓存模块还用于:如果所述数据是活动数据,则将所述数据放入活动缓存片;如果所述数据是商品数据,则将所述数据按照商品类别放入相应的商品缓存分片。
[0024]可选地,所述线程池处理模块还用于:对应各缓存分片分别构建相应线程;所述线程从各自对应的缓存分片中获取数据进行去重、SPU合并、按预设规则过滤和估值处理。
[0025]可选地,所述线程池处理模块还用于:如果所述获取的数据是活动数据,则根据活动网址中的活动短码去重;如果所述获取的数据是商品数据,则根据商品SKU进行去重。
[0026]可选地,所述线程池处理模块还用于:如果所述数据是活动数据,则按照活动的维度根据预设的估值规则计算活动的得分,同时计算所述活动对应的商品得分,最终根据预设的活动和商品得分比例计算综合得分;如果所述获取的数据是商品数据,则按照商品的维度根据预设的估值规则计算商品的综合得分。
[0027]根据本发明的技术方案,通过对从消息队列接收的数据进行分片缓存,从而能缓解消息队列端的数据积压,分散数据处理压力,同时保障了一个缓存片内数据属于同一类别;在启动多线程对数据进行处理的过程中,首先通过对数据进行去重处理,从而能减少数据的冗杂,其次对数据进行SPU合并操作,从而能实现对属于同一商品信息的数据的整合;在进行去重和SPU合并之后,通过对数据进行过滤操作,从而能筛选出符合需求的商品或活动数据;最后对处理后的数据估值计算,从而实现将得分高的、优质的商品或活动呈现给用户。
【附图说明】
[0028]附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
[0029]图1是根据本发明实施例的基于缓存分片技术的数据过滤方法的主要步骤的示意图;
[0030]图2是根据本发明实施例的基于缓存分片技术的数据过滤主要装置的示意图。
【具体实施方式】
[0031 ]以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
[0032]图1是根据本发明实施例的基于缓存分片技术的数据过滤方法的主要步骤的示意图。
[0033]如图1所示,本发明实施例的基于缓存分片技术的数据过滤方法主要包括如下步骤:
[0034]步骤Sll:由客户端按照预设规则分片缓存接收到的数据,所述数据是服务器通过消息队列发送给客户端的。例如,服务器通过消息队列向客户端发送数据,客户端接收活动或商品数据,在该数据信息中有一个入口字段来标记数据是活动还是商品。入口字段可以采用任何适当的形式来标记数据是活动还是商品。例如,可以用I表示活动,以及用O表不商品。
[0035]鉴于在电子商务数据中活动数据的数量相对商品的数量较少,因此,如果是活动数据则直接放入活动缓存片,不需要进行分片;如果是商品数据,则需要按数据类别的不同进行分片缓存。
[0036]在确定缓存分片规则时,如果按照SKU(St0Ck Keeping Unit,库存量单位,用来区分单品)进行求余分片处理,则可能导致SPU相同的商品位于不同缓存片,导致的后果是SPU相同的商品无法进行区分。
[0037]基于每个商品都对应于一个一级品类序列号(一级品类是最基本的商品类别,每个一级品类可以包括多个子品类,即二级品类;比如京东有60多个一级品类,服饰鞋帽是一级品类,对应的序列号1315,如果获取的商品是衣服,则它的一级品类序列号就是1315),因此,可以根据一级品类序列号进行求余分片处理。在一个实施例中,根据一级品类序列号进行求余分片过程如下:将缓存分片数量定义为10个,则需要把60多个不同的一级品类序列号通过采用求余的方式映射到10个分片中,即序列号除以10,得到的余数就是对应的分片号。比如某商品一级品类序列号是1315,除以10的余数是5,5就是该商品对应的分片号(分片号只可能在O到9之间,包含O和9)。
[0038]也可以直接按照一级品类序列号进行分类,即一级品类序列号相同的商品存入相同的缓存片。
[0039]分片后,客户端给每个缓存分片定义分片编号。在一个示例中,编号可以以前缀加分片号的形式组成。前缀由用户自己定义,例如gs_,如果商品的一级品类序列号是1315,那么分片号就是5,则缓存分片的编号就是gs_5。如本领域技术人员所理解的,编号可以采取各种其它适当的形式,只要能有效地识别分片即可。
[0040]通过对接收到的数据进行分片缓存,从而能缓解消息队列端的数据积压,分散数据处理压力,同时也保障了一个缓存片内数据属于同一类别,从而为实现对数据的去重、商品信息合并提供可能,有助于实现对数据的有效过滤。
[0041]在本步骤的分片缓存之后,从步骤S12开始处理。
[0042]步骤S12:所述客户端对所述缓存分片中的数据进行多线程处理。例如,主线程启动后,通过所有缓存片的编号构建相应的线程池,线程池启动后,各线程池从对应的缓存片中获取数据进行处理。
[0043]通过采用线程池技术,进行多线程的自动化数据过滤操作,可以实现多线程分类处理数据,提高数据的处理速度和效率。
[0044]对数据的处理包括所述线程从各自对应的缓存分片中获取数据进行去重、SPU合并、过滤和估值处理。
[0045]为了保障数据过滤的有效性,在步骤12中,对海量数据进行过滤前,可以先对数据进行去重和SPU合并的操作。
[0046]基于前述对从消息队列接收的数据的分片缓存,使得同一类别的数据存放在相同的缓存片,从而在启动多线程进行数据处理的时候,能够实现对相同类别数据的去重和商品信息合并操作。
[0047]各线程从相应缓存片中获取数据进行去重可以采用布隆过滤器进行去重处理。布隆过滤器的算法采用的是哈希函数的方法,将一个元素映射到一个m长度的阵列上的一个点,当这个点是I时,那么这个元素在集合内,反之则不在集合内。每个缓存片都对应一个去重的位集合。对于活动数据,则从活动网址中获取活动短码(活动短码即网址后面的字符串,比如http://sale.jd.com/act/cwMpj4ytUFA.html是个活动地址,活动短码就是cwMpj4ytUFA,它唯一对应每个活动),进行哈希计算后,检查计算的每个哈希值是否存在于位集合中,如果存在则说明活动已经存在;如果获取的消息是商品数据,则根据商品SKU进行上述相应的去重处理。
[0048]此外,也可以通过查询数据库的方式去重,还可以通过哈希表进行去重处理。
[0049]线程池从相应缓存片中获取数据进行SPU合并,在一个实施例中,可以通过调用第三方接口获取某一商品的不同颜色或者尺码的所有SKU,然后进行合并。
[0050]通过对分类缓存中的数据进行去重,可以减少数据冗杂,排除重复数据,然后对数据进行SPU合并,把SPU相同的商品合并为同一品种的商品,完成对数据的整合处理。
[0051]在对去重、SPU合并后的数据进行过滤处理的一个实施例中,使用EL(Express1nLanguage,表达式语言)表达式进行过滤操作。EL表达式就是一个条件表达式,用户将预设的过滤规则拼接成条件表达式,然后通过条件表达式计算商品或者活动的维度是否满足过滤规则。对于商品数据,可以主要按照商品价格、评论数、好评率、折扣、品牌、是否自营、店铺类型、历史价格等维度进行判断。对于活动数据,可以不进行过滤,如要过滤,也可以按照活动类型、促销力度等指标进行。例如,预设的过滤规则可以是:折扣小于7折、好评度大于95%、评论数大于500,且只有同时满足这3个条件的商品才有效,那么构建的EL表达式如下:discount〈7&&goodReview>95&&commentNum>500。通过EL表达式引擎可以直接判断消息队列的商品是否同时满足这几个条件,满足则保留数据,不满足则将数据过滤掉。
[0052]此外,除了通过EL表达式过滤之外,也可以通过拼接结构化查询语言写成的条件表达式查询数据库的方式过滤,还可以直接通过得到的维度数据来判断是否满足规则判断来过滤。
[0053]数据过滤后,进行数据估值操作。在一个实施例里,可以按照预设的得分表计算商品或活动的得分。得分表即用户预设的估值规则。例如,按店铺类型:京东自营商品得10分、旗舰店得5分、专卖店得3分;按促销类型:满减10分、赠品促销5分;按折扣类型:0-3折10分、3到6折5分、6折以上3分等。分析数据中每个商品的属性,是自营还是旗舰、是满减还是赠品促销、以及商品的打折情况等,将商品的属性比对得分表计算每个商品的得分。在一个实施例中,如果所述获取的数据是活动数据,则主要按照活动的维度根据预设的得分表计算得分,同时计算该活动下对应商品的得分,最终根据活动得分和商品得分按照一定的比例计算综合得分;如果所述获取的数据是商品数据,则主要按照商品的维度根据预设的得分表计算商品 的得分。分数越高则在排序输出的过程中放置越前。
[0054]通过对数据的过滤,将不需要的数据过滤掉,只保留符合条件的数据信息,从而能避免数据处理的冗余和繁杂;通过对数据的估值计算,从而能将优质的促销力度高的商品和活动筛选出来。
[0055]步骤S13:所述客户端输出所述处理后的数据。
[0056]根据上述基于缓存分片技术的数据过滤方法的主要步骤可以得出,通过对从消息队列接收的数据进行分片缓存,从而能缓解消息队列端的数据积压,分散数据处理压力,同时保障了一个缓存片内数据属于同一类别;在启动多线程对数据进行处理的过程中,首先通过对数据进行去重处理,从而能减少数据的冗杂,其次对数据进行SPU合并操作,从而能实现对属于同一商品信息的数据的整合;在进行去重和SPU合并之后,通过对数据进行过滤操作,从而能筛选出符合需求的商品或活动数据;最后对处理后的数据估值计算,从而实现将得分高的、优质的商品或活动呈现给用户。
[0057]图2是根据本发明实施例的基于缓存分片技术的数据过滤主要装置的示意图。
[0058]如图2所示,本发明实施例的基于缓存分片技术的数据过滤装置主要包括:分片缓存模块201、线程池处理模块202、输出模块203。
[0059]分片缓存模块201用于按照预设规则分片缓存接收到的数据,所述数据是服务器通过消息队列发送给客户端的;线程池处理模块202用于对所分片缓存的数据进行多线程处理;输出模块203用于所述客户端输出所处理的数据。
[0060]分片缓存模块201还用于如果所述数据是活动数据,则将所述数据放入活动缓存片;如果所述数据是商品数据,则将所述数据按照商品类别放入相应的商品缓存分片。
[0061]线程池处理模块202还用于对应各缓存分片分别构建相应线程;所述线程从各自对应的缓存分片中获取数据进行去重、SPU合并、过滤和估值处理。
[0062]其中去重可以采用如下方式:如果所述获取的数据是活动数据,则根据活动网址中的活动短码去重;如果所述获取的数据是商品数据,则根据商品的SKU进行去重。
[0063]SPU合并可以通过调用第三方接口获取某一商品的不同颜色或者尺码的所有SKU,然后进行商品的合并。
[0064]线程池处理模块202还用于估值计算。例如可以是,如果所述获取的数据是活动数据,则主要按照活动的维度根据预设的得分表计算得分,同时计算该活动下对应商品的得分,最终根据活动得分和商品得分按照一定的比例计算总的得分;如果所述获取的数据是商品数据,则主要按照商品的维度根据预设的得分表计算商品的得分。
[0065]根据上述本发明的技术方案可以得出,通过对从消息队列接收的数据进行分片缓存,从而能缓解消息队列端的数据积压,分散数据处理压力,同时保障了一个缓存片内数据属于同一类别;在启动多线程对数据进行处理的过程中,首先通过对数据进行去重处理,从而能减少数据的冗杂,其次对数据进行SPU合并操作,从而能实现对属于同一商品信息的数据的整合;在进行去重和SPU合并之后,通过对数据进行过滤操作,从而能筛选出符合需求的商品或活动数据;最后对处理后的数据估值计算,从而实现将得分高的、优质的商品或活动呈现给用户。
[0066]上述【具体实施方式】,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
【主权项】
1.一种基于缓存分片技术的数据过滤方法,包括: 由客户端按照预设规则分片缓存接收到的数据,所述数据是服务器通过消息队列发送给客户端的; 所述客户端对所分片缓存的数据进行多线程处理; 所述客户端输出所处理的数据。2.根据权利要求1所述的数据过滤方法,其中,所述按预设规则分片缓存接收到的数据包括: 如果所述数据是活动数据,则将所述数据放入活动缓存片; 如果所述数据是商品数据,则将所述数据按照商品类别放入相应的商品缓存分片。3.根据权利要求1所述的数据过滤方法,其中,所述客户端对所分片缓存的数据进行多线程处理包括: 所述客户端对应各缓存分片分别构建相应线程; 所述线程从各自对应的缓存分片中获取数据进行去重、SPU合并、按预设规则过滤和估值处理。4.根据权利要求3所述的数据过滤方法,其中,所述线程从各自对应的缓存分片中获取数据进行去重包括: 如果所述获取的数据是活动数据,则根据活动网址中的活动短码去重; 如果所述获取的数据是商品数据,则根据商品SKU进行去重。5.根据权利要求3所述的数据过滤方法,其中,所述线程从各自对应的缓存分片中获取数据进行估值包括: 如果所述数据是活动数据,则按照活动的维度根据预设的估值规则计算活动的得分,同时计算所述活动对应的商品得分,最终根据预设的活动和商品得分比例计算综合得分;如果所述获取的数据是商品数据,则按照商品的维度根据预设的估值规则计算商品的综合得分。6.一种基于缓存分片技术的数据过滤装置,包括: 分片缓存模块,用于按照预设规则分片缓存接收到的数据,所述数据是服务器通过消息队列发送给客户端的; 线程池处理模块,用于对所分片缓存的数据进行多线程处理; 输出模块,用于所述客户端输出所处理的数据。7.根据权利要求6所述的数据过滤装置,其中,所述分片缓存模块还用于: 如果所述数据是活动数据,则将所述数据放入活动缓存片; 如果所述数据是商品数据,则将所述数据按照商品类别放入相应的商品缓存分片。8.根据权利要求6所述的数据过滤装置,其中,所述线程池处理模块还用于: 对应各缓存分片分别构建相应线程; 所述线程从各自对应的缓存分片中获取数据进行去重、SPU合并、按预设规则过滤和估值处理。9.根据权利要求8所述的数据过滤装置,其中,所述线程池处理模块还用于: 如果所述获取的数据是活动数据,则根据活动网址中的活动短码去重; 如果所述获取的数据是商品数据,则根据商品SKU进行去重。10.根据权利要求8所述的数据过滤装置,其中,所述线程池处理模块还用于: 如果所述数据是活动数据,则按照活动的维度根据预设的估值规则计算活动的得分,同时计算所述活动对应的商品得分,最终根据预设的活动和商品得分比例计算综合得分;如果所述获取的数据是商品数据,则按照商品的维度根据预设的估值规则计算商品的综合得分。
【专利摘要】本发明提供一种基于缓存分片技术的数据过滤方法和装置,能缓解消息队列的数据积压,分散数据处理压力,并能实现对数据的去重和商品信息合并,从而完成对数据的有效过滤和估值。该方法包括:由客户端按照预设规则分片缓存接收到的数据,所述数据是服务器通过消息队列发送给客户端的;所述客户端对所分片缓存的数据进行多线程处理;所述客户端输出所处理的数据。
【IPC分类】G06F17/30
【公开号】CN104881492
【申请号】CN201510321428
【发明人】廖耀华, 周东
【申请人】北京京东尚科信息技术有限公司, 北京京东世纪贸易有限公司
【公开日】2015年9月2日
【申请日】2015年6月12日
转载请注明原文地址:https://www.famiwei.com/read-8138583.html

最新回复(0)