一种数据处理的方法及装置的制造方法
【技术领域】
[0001] 本申请涉及计算机技术领域,尤其涉及一种数据处理的方法及装置。
【背景技术】
[0002] 目前,通常采用分布式处理系统来处理数据,可将要处理的多个数据按一定规则 分配给分布式处理系统中的不同分布式服务器进行处理,以提高数据处理的效率。
[0003] 具体的,可在每个分布式服务器中预设若干个线程,用于处理数据,每个线程对应 唯一的线程标识。为了保证各分布式服务器的负载均衡,针对任意两个分布式服务器,在这 两个分布式服务器中预设的线程数量的差值的绝对值可小于设定阈值,以使各分布式服务 器中的线程数量近似相等。
[0004] 在处理数据时,可根据待处理数据中携带的数据标识,确定该数据标识对应的线 程标识,并将该待处理数据分配给该线程标识对应的线程所在的分布式服务器,使该分布 式服务器采用该线程标识对应的线程处理该待处理数据。
[0005] 在确定待处理数据中携带的数据标识对应的线程标识时,具体可根据该数据标识 以及在各分布式服务器中预设的线程的总数,确定该数据标识对该总数取余的值,并将线 程标识为该值的线程标识确定为该数据标识对应的线程标识。
[0006] 例如,假设要使用具有10个分布式服务器的分布式处理系统,对某电商网站中产 生的物流订单涉及的商品在未来一段时间内的情况(如,卖家何时发货、使用哪个物流机构 配送、配送路线是哪条、会经过哪个中转站、何时送达等)进行预测,则可在这10个分布式服 务器中共预设128个线程,其中的8个分布式服务器各预设13个线程,另外两个分布式服 务器各预设12个线程,并对这128个线程分别以线程标识0~127进行标识。
[0007] 假设以物流订单信息中携带的卖家标识为数据标识,则当接收到一个携带卖家标 识为131的待处理物流订单信息时,可根据该物流订单信息中携带的卖家标识131以及预 设的线程的总数128,确定该卖家标识131对总数128取余的值,该值为3,因此将线程标识 为3的线程标识确定为该待处理物流订单信息对应的线程标识,将该待处理物流订单信息 发送给线程标识为3的线程所在的分布式服务器。该分布式服务器接收到该待处理物流订 单信息时,则可采用线程标识为3的线程对该待处理物流订单信息进行处理,以得到预测 结果。
[0008] 然而,在处理待处理数据时,通常要基于一定的基础数据进行处理,这些基础数据 是保存在数据库中的。基础数据中也携带有数据标识,对于一个基础数据来说,如果该基础 数据中携带的数据标识与待处理数据中携带的数据标识相同,则该基础数据就是该待处理 数据对应的基础数据,对该待处理数据进行处理时就要基于该待处理数据对应的基础数据 进行处理。如,上例中要根据待处理物流订单信息预测该物流订单涉及的商品在未来一段 时间的情况时,需要根据携带该卖家标识(卖家标识为131)的基础数据(这些基础数据例如 可以为:卖家在订单产生后的T时间内发货的概率、使用物流机构A的概率等)进行预测, 这些基础数据是预先根据该卖家的历史物流数据确定并保存在数据库中的。而由于从数据 库中读取基础数据的速度较慢,因此,如果线程每处理一个待处理数据,就从数据库中读取 相应的基础数据,势必会降低处理数据的效率。从而,为了提高数据处理的效率,线程每次 处理待处理数据时,先在其所在的分布式服务器的本地内存中查找该待处理数据对应的基 础数据,若未查找到,则从数据库中读取,并将读取的基础数据保存在本地内存中,以备下 次处理数据时可直接从本地内存中读取。
[0009] 但是,由于每个待处理数据对应的基础数据的数据量往往是各不相同的,也即,对 于不同的数据标识而言,携带一个数据标识的基础数据的数据量与携带另一个数据标识的 基础数据的数据量往往差别很大,例如,假设数据标识为卖家标识,则对于规模较大的卖家 来说,携带该卖家的卖家标识的基础数据的数据量较大,而对于规模较小的卖家来说,携带 该卖家的卖家标识的基础数据的数据量则较小。而每个分布式服务器处理的待处理数据又 是不同的,也即,每个分布式服务器处理的待处理数据中携带的数据标识各不相同,这就会 出现某些分布式服务器的内存中存储的基础数据的数据量较小,浪费了存储资源,而某些 分布式服务器的内存中存储的基础数据的数据量较大,甚至内存溢出,导致分布式服务器 出现异常的情况。
[0010] 例如,仍假设数据标识为卖家标识,共有2亿条基础数据,在各分布式服务器上共 预设了 128个线程,在理想情况下,S卩如果携带不同卖家标识的基础数据的数据量相同,则 理论上每个线程会将200000000/128=1562500条基础数据存储在本地内存中。假设每条基 础数据的数据量为256字节,则理想情况下每个线程存储在本地内存中的基础数据的数据 量约为 1562500X256 字节=300M。
[0011] 但是,在实际应用中,携带不同卖家标识的基础数据的数据量并不相同,携带规模 较大的卖家的卖家标识的基础数据的数据量较大,而携带规模较小的卖家的卖家标识的基 础数据的数据量较小,因此,假设规模较小的卖家只有20条基础数据,而规模较大的卖家 有100条数据,按每条基础数据的数据量为256字节计算,规模较大的卖家的基础数据是规 模较小的卖家的基础数据的5倍。假设某个线程存储的基础数据都是规模较大的卖家的基 础数据,则其存储在本地的基础数据的数据量就可能超过1G,如果本地内存只有1G,那么 显然这就会造成内存溢出,而如果某个线程存储的基础数据都是规模较小的卖家的基础数 据,则其存储在本地的基础数据的数据量可能不超过100M,这也显然浪费了存储资源。
【发明内容】
[0012] 本申请实施例提供一种数据处理的方法及装置,用以解决现有技术中各分布式服 务器的内存中存储的数据量不均匀,存在或浪费存储资源,或造成内存溢出的问题。
[0013] 本申请实施例提供的一种数据处理的方法,所述方法应用于包括有多个分布式服 务器的分布式处理系统,每个分布式服务器上预置有若干个线程,在任意两个分布式服务 器上预置的线程的数量的差值的绝对值不大于第一预设阈值,基础数据中携带数据标识, 每个线程与至少一个数据标识对应,所述方法包括:
[0014] 确定基础数据的总量除预置的线程的数量的商值;
[0015] 针对每个线程,确定携带该线程对应的数据标识的基础数据的数据量;
[0016] 当存在确定的数据量减所述商值的差值的绝对值大于第二预设阈值的线程时,调 整每个线程与数据标识的对应关系,使调整后携带每个线程对应的数据标识的基础数据的 数据量减所述商值的差值的绝对值均不大于第二预设阈值;
[0017] 针对每个线程,通过该线程,对携带调整后该线程对应的数据标识的待处理数据 进行处理。
[0018] 本申请实施例提供的一种数据处理的装置,所述装置应用于包括有多个分布式服 务器的分布式处理系统,每个分布式服务器上预置有若干个线程,在任意两个分布式服务 器上预置的线程的数量的差值的绝对值不大于第一预设阈值,基础数据中携带数据标识, 每个线程与至少一个数据标识对应,所述装置包括:
[0019] 理论平均值确定模块,用于确定基础数据的总量除预置的线程的数量的商值;
[0020] 实际数据量确定模块,用于针对每个线程,确定携带该线程对应的数据标识的基 础数据的数据量;
[0021] 调整模块,用于当存在确定的数据量减所述商值的差值的绝对值大于第二预设阈 值的线程时,调整每个线程与数据标识的对应关系,使调整后携带每个线程对应的数据标 识的基础数据的数据量减所述商值的差值的绝对值均不大于第二预设阈值;
[0022] 数据处理模块,用于针对每个线程,通过该线程,对携带调整后该线程对应的数据 标识的待处理数据进行处理。
[0023] 本申请实施例提供一种数据处理的方法及装置,该方法确定基础数据的总量除线 程数量的商值,确定每个线程对应的基础数据的数据量,当存在对应的数据量减该商值的 差值的绝对值大于第二预设阈值的线程时,将每个线程对应的基础数据的数据量调整至减 该商值的差值的绝对值不大于第二预设阈值,再通过每个线程处理待处理数据。通过上述 方法,由于调整后每个线程对应的基础数据的数据量都近似相等,而且在各分布式服务器 上预置的线程的数量也近似相等,因此,可有效均衡各分布式服务器的内存中存储基础数 据的数据量,避免了某些分布式服务器存储的数据量较小而浪费存储资源,以及某些分布 式服务器存储的数据量较大而造成内存溢出的问题。
【附图说明】
[0024] 此处所说