一种数据处理的方法及装置的制造方法

xiaoxiao2020-10-23  20

一种数据处理的方法及装置的制造方法
【技术领域】
[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] 此处所说 明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申 请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
[0025] 图1为本申请实施例提供的数据处理的过程;
[0026] 图2为本申请实施例提供的第一种调整每个线程与数据标识的对应关系的方法;
[0027] 图3为本申请实施例提供的第二种调整每个线程与数据标识的对应关系的方法;
[0028] 图4为本申请实施例提供的数据处理的装置结构示意图。
【具体实施方式】
[0029] 为了均衡分布式处理系统中各分布式服务器存储的基础数据的数据量,本申请实 施例中可根据理论上每个线程对应的基础数据的平均数据量,将每个线程对应的基础数据 的数据量调整至近似于该平均数据量,再通过每个线程处理待处理数据。
[0030]为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及 相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一 部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做 出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0031] 图1为本申请实施例提供的数据处理的过程,具体包括以下步骤:
[0032] S101 :确定基础数据的总量除预置的线程的数量的商值。
[0033] 在本申请实施例中,可在分布式处理系统的每个分布式服务器上预置若干个线 程,用于处理待处理数据,其中,在任意两个分布式服务器上预置的线程的数量的差值的绝 对值不大于第一预设阈值,也即,|队-%| <m,其中,队为在第i个分布式服务器上预置的 线程的数量,%为在第j个分布式服务器上预置的线程的数量,m为第一预设阈值,该第一 预设阈值例如可以设定为1,使得在任意两个分布式服务器上预置的线程的数量是近似相 等的。
[0034] 其中,线程在处理待处理数据时,需要基于待处理数据对应的基础数据进行处理。 本申请实施例中基础数据和待处理数据中均携带有数据标识,如果一个待处理数据携带的 数据标识与一个基础数据携带的数据标识相同,则该基础数据为该待处理数据对应的基础 数据。还可预设每个线程与数据标识的对应关系,则一个线程只处理携带与该线程对应的 数据标识的待处理数据。
[0035] 在本申请实施例中,可预先确定所有基础数据的总量(总数据量)除预置的线程的 数量的商值,该商值即为理论上每个线程所对应的基础数据的平均数据量。假设共预置了 x个线程,基础数据的总量为Y,则基础数据的总量除线程的数量的商值为?
d卩,每个线程 所对应的基础数据的平均数据量为
[0036] S102:针对每个线程,确定携带该线程对应的数据标识的基础数据的数据量。
[0037] 在本申请实施例中,可根据预设的每个线程与数据标识的对应关系,针对每个线 程,确定携带该线程对应的数据标识的基础数据的数据量,确定的该数据量即为实际该线 程对应的基础数据的实际数据量。其中,一个线程可以与多个数据标识对应,但一个数据标 识只对应一个线程。
[0038] 需要说明的是,上述步骤S101和S102的执行顺序不分先后。
[0039] S103:当存在确定的数据量减该商值的差值的绝对值大于第二预设阈值的线程 时,调整每个线程与数据标识的对应关系,使调整后携带每个线程对应的数据标识的基础 数据的数据量减该商值的差值的绝对值不大于第二预设阈值。
[0040] 在本申请实施例中,如果步骤S102确定的某个线程对应的基础数据的数据量减 步骤S101确定的商值的差值的绝对值大于第二预设阈值,也即,如果存在某个线程对应的 基础数据的实际数据量减理论上的平均数据量的差值的绝对值大于第二预设阈值,则说明 存在各线程对应的基础数据的实际数据量不均衡的情况,会导致某些分布式服务器的内存 浪费,某些分布式服务器的内存溢出,因此,可调整每个线程与数据标识的对应关系,使调 整后每个线程对应的基础数据的实际数据量与理论上的平均数据量近似相等,也即,调整 后每个线程对应的基础数据的实际数据量近似相等。
[0041] S104:针对每个线程,通过该线程,对携带调整后该线程对应的数据标识的待处理 数据进行处理。
[0042]调整了各线程与数据标识的对应关系后,则可根据调整后每个线程对应的数据标 识,针对每个线程,通过该线程对携带调整后该线程对应的数据标识的待处理数据进行处 理。具体的,在接收到一个待处理数据时,可根据调整后每个线程对应的数据标识,确定该 待处理数据中携带的数据标识对应的线程,并将该待处理数据发送给确定的该线程所在的 分布式服务器,使该分布式服务器通过该线程处理该待处理数据。其中,一个线程在处理一 个待处理数据时,先从自身所在的分布式服务器的内存中查找该待处理数据对应的基础数 据(携带的数据标识与该待处理数据携带的数据标识相同的基础数据),若查找到,则基于 查找到的基础数据处理该待处理数据,否则,从数据库中读取该待处理数据对应的基础数 据,并基于读取的基础数据处理该待处理数据,将读取的基础数据保存在自身所在的分布 式服务器的内存中。
[0043] 通过上述方法,由于调整后每个线程对应的基础数据的数据量都近似相等,而且 在各分布式服务器上预置的线程的数量也近似相等,因此,各线程读取并存储在自身所在 分布式服务器的内存中的基础数据的数据量也是近似相等的,可有效均衡各分布式服务器 的内存中存储基础数据的数据量,避免了某些分布式服务器存储的数据量较小而浪费存储 资源,以及某些分布式服务器存储的数据量较大而造成内存溢出的问题。
[0044] 具体的,可在分布式处理系统中预置分发器,由该分发器执行如图1所示的方法, 由该分发器接收待处理数据,确定接收到的待处理数据中携带的数据标识,并根据调整后 的每个线程与数据标识的对应关系,确定接收到的待处理数据中携带的数据标识对应的线 程,再将接收到的待处理数据发送确定的线程所在的分布式服务器上,使该分布式服务器 通过该确定的线程处理该待处理数据。当然,也可由分布式处理系统以外的设备执行如图1 所示的方法,例如,在对物流订单信息进行预测处理时,分布式处理系统中的各分布式服务 器是从数据库中读取物流订单信息的,因此,可由数据库执行如图1所示的方法,即,由数 据库调整各线程与数据标识的对应关系,并针对每个线程,将携带调整后与该线程对应的 数据标识的物流订单信息提供给该线程。
[0045] 在本申请实施例中,图1所示的数据处理方法可应用于物流订单处理场景,S卩,本 申请实施例所述的基础数据是对卖家的历史物流操作记录进行统计得到的(如,基础数据 可以为:卖家在订单产生后的T时间内发货的概率、使用某物流机构的概率等),所述的基 础数据中携带的数据标识可以是卖家标识,所述的待处理数据可以是物流订单。
[0046] 在实际应用场景中,线程与数据标识的对应关系一般是通过以下方法确定的:针 对每个线程,如果一个数据标识对所有线程的数量取余的值为该线程的线程标识,则该线 程与该数据标识对应。
[0047] 在这种应用场景下,图1所示的步骤S101中确定基础数据的总量除预置的线程的 数量的商值的方法可以为:分别针对每个数据标识,确定携带该数据标识的所有基础数据 的第一数据量,确定各第一数据量的和值除预置的线程的数量的商值。步骤S102中确定携 带一个线程对应的数据标识的基础数据的数据量的方法可以为:根据线程与数据标识的对 应关系,确定该线程对应的每个数据标识,针对确定该线程对应的每个数据标识,分别确定 携带该数据标识的所有基础数据的第二数据量,确定各第二数据量的和值,作为确定的携 带该线程对应的数据标识的基础数据的数据量。
[0048] 例如,假设数据标识为卖家标识,卖家标识为0、1、2、3以此类推,假设预置的线程 的数量为128个,则在确定基础数据的总量除预置的线程的数量的商值时,可针对卖家标 识0,确定所有携带该卖家标识0的基础数据的第一数据量,针对卖家标识1,确定所有携带 该卖家标识1的基础数据的第一数据量,以此类推。针对每个卖家标识确定了第一数据量 后,则可确定各第一数据量的和值,再确定该和值与线程的数量128的商值。
[0049] 在确定携带某个线程对应的数据标识的基础数据的数据量时,对于线程标识为3 的线程来说,卖家标识3、131、259、……、3+128Xn与该线程标识为3的线程对应,其中n 为正整数,因此,可针对卖家标识3,确定携带卖家标识3的基础数据的第二数据量,确定携 带卖家标识131的基础数据的第二数 据量,以此类推。针对与该线程标识为3的线程对应 的每个卖家标识都确定了第二数据量后,则可确定各第二数据量的和值,作为确定的携带 该线程标识为3的线程对应数据标识的基础数据的数据量。
[0050] 当然,还可根据线程与数据标识的对应关系,建立数据量对应表,如表1所示。
[0052] 表 1
[0053] 通过上述表1,可方便的确定基础数据的总量以及携带每个线程对应的数据标识 的基础数据的数据量。
[0054] 在上述确定线程与数据标识的对应关系的方法的场景(如果一个数据标识对所有 线程的数量取余的值为该线程的线程标识,则该线程与该数据标识对应)下,本申请实施例 图1所示的步骤S103中,调整每个线程与数据标识的对应关系的方法可包括两种,第一种 是调整线程的数量,即,增加或减少线程的数量,第二种是调整数据标识。下面对这两种调 整每个线程与数据标识的对应关系的方法进行详细说明。
[0055] 图2为本申请实施例提供的第一种调整每个线程与数据标识的对应关系的方法, 具体包括以下步骤:
[0056] S201 :调整线程的数量。
[0057] 也即,增加若干个线程或减少若干个线程。其中,调整线程的数量后,在任意两个 分布式服务器上调整后的线程的数量的差值的绝对值仍不大于第一预设阈值,也就是说, 调整线程数量的一个原则是:每个分布式服务器上的线程的数量是近似相等的。
[0058] 例如,一个分布式处理系统中有10个分布式服务器,初始时共预置128个线程,其 中的8个分布式服务器各预设13个线程,另外两个分布式服务器各预设12个线程,这128 个线程分别以线程标识0~127进行标识。
[0059] 对于一个线程来说,如果某个数据标识对线程的数量128取余的值等于该线程的 线程标识,则该数据标识与该线程对应。假设以基础数据中携带的卖家标识为数据标识,如 果一个基础数据中携带的卖家标识为131,其对线程总数128取余的值为3,则该卖家标识 与线程标识为3的线程对应。
[0060] 如果预置的这128个线程中存在携带该线程对应的卖家标识的基础数据的数据 量减步骤S101确定的商值的差值的绝对值大于第二预设阈值的线程,则可调整线程的数 量。
[0061] 例如,可在只有12个线程的两个分布式服务器上各增加1个线程,这样,10个分布 式服务器上就都有13个线程,共130个线程。
[0062] S202:根据调整后线程的数量,重新确定基础数据的总量除调整后所有线程的数 量的商值。
[0063] 调整了线程的数量后,则可重新确定调整后理论上每个线程对应的基础数据的数 据量。假设基础数据的总量为Y,调整后的线程的数量为x',则重新确定的商值为
^
[0064] S203:根据调整后线程的数量,重新为调整后的每个线程设定线程标识,并根据重 新设定的线程标识,确定每个线程与数据标识的对应关系。
[0065] 继续沿用上例,由于调整后共有130个线程,因此可将这130个线程重新以线程标 识0~129进行标识。重新设定了每个线程的标识后,每个线程与卖家标识的对应关系的 确定方法仍不变,即,仍然是如果一个卖家标识对调整后的线程数量取余的值等于调整后 一个线程的线程标识,则该卖家标识与该线程对应。
[0066] 但是,由于线程的数量发生了变化,因此,卖家标识与数据的对应关系就发生了改 变。仍以卖家标识131为例进行说明,当共有128个线程时,该卖家标识131对线程数量 128取余的值为3,因此卖家标识131与线程标识为3的线程对应,调整前各卖家标识与线 程标识的对应关系如表2所示。

[0068] 表 2
[0069] 其中,上述表2是以预置的线程数量为128个为例进行说明的。
[0070] 将线程的数量由128调整为130后,卖家标识131对调整后的线程的数量130取 余的值就变成了 1,因此,该卖家标识131对应的线程是线程标识为1的线程。调整线程的 数量后,各卖家标识与线程标识的对应关系如表3所示。
[0072] 表 3
[0073] 上述表3是以将预置的线程数量由128个调整为130个为例进行说明的。由此可 以看出,调整了线程的数量后,基于同样的方法确定出的线程与数据标识的对应关系也就 发生了改变。
[0074] S204:针对调整后的每个线程,根据重新确定的每个线程与数据标识的对应关系, 确定携带该线程对应的数据标识的基础数据的数据量。
[0075] 在本申请实施例中,通过调整线程的数量对线程与数据标识的对应关系进行了调 整后,则可针对调整后的每个线程,重新确定调整后该线程实际对应的基础数据的实际数 据量。
[0076] S205:判断是否存在重新确定的数据量减重新确定的商值的差值的绝对值大于第 二预设阈值的线程,若是,则返回步骤S201,否则,执行步骤S206。
[0077] S206 :调整结束。
[0078] 也即,调整线程的数量后,如果仍然存在调整后对应的实际数据量(由步骤S204 确定)减调整后每个线程对应的平均数据量
(由步骤S202确定)的差值的绝对值大于第 二预设阈值的线程,则重新调整线程的数量,直至调整后携带每个线程对应的数据标识的 基础数据的数据量减重新确定的商值的差值的绝对值均不大于第二预设阈值为止。
[0079] 具体的,在调整线程的数量时,可预设一个步进值,每次调整时可在当前线程的数 量的基础上,增加或减少该步进值的线程。例如,该步进值设定为1,则第一次调整可增加1 个线程,若调整失败(即,步骤S205的判断结果为是),则第二次再增加1个线程,直至调整 成功为止。
[0080] 进一步的,考虑到实际应用中每个分布式服务器由于自身性能的限制而导致可预 置的线程数量有限,因此,可预设一个最大数量,在调整线程的数量时,调整的线程的数量 不大于预设的该最大数量。另一方面,线程的数量越少,处理待处理数据的效率也就越低, 因此,为了保证处理待处理数据的效率,还可预设一个最小数量,在调整线程的数量时,调 整的线程的数量不小于预设的该最小数量。也即,在图2所示的步骤S201中,调整的线程 的数量不大于预设的最大数量,且不小于预设的最小数量。
[0081] 图3为本申请实施例提供的第二种调整每个线程与数据标识的对应关系的方法, 具体包括以下步骤:
[0082] S301 :针对每个线程,在所有基础数据中,选择出未被选择过的、且数据量相加的 和值减该商值的差值的绝对值不大于第二预设阈值的各基础数据。
[0083] 在本申请实施例提供的第二种调整对应关系的方法中,是以不改变线程的数量的 条件下,改变线程与数据标识的对应关系的,可针对每个线程,根据步骤S101确定出的理 论上每个线程对应的基础数据的平均数据量,从所有的基础数据中选择出未被选择过的、 且数据量相加的和值与该理论上的平均数据量近似相等的各基础数据。
[0084] S302:将该线程对应的数据标识调整为选择出的各基础数据中携带的数据标识。
[0085] 针对一个线程选择出数据量相加的和值与该理论上的平均数据量近似相等的各 基础数据后,则可将该线程对应的数据标识调整为选择出的各基础数据中携带的数据标 识。
[0086] 进一步的,为了不改变现行的确定线程与数据标识对应关系的方法(S卩,如果一个 数据标识对所有线程的数量取余的值为该线程的线程标识,则该线程与该数据标识对应), 步骤S302中在将某个线程对应的数据标识调整为选择出的各基础数据中携带的数据标识 时,可对选择出的各基础数据中携带的数据标识进行调整。具体的,可调整选择出的各基础 数据中携带的数据标识,调整后的各数据标识各不相同,且对所有线程的数量取余的值为 该线程的线程标识。当然,调整了基础数据中携带的数据标识后,所有携带原来的数据标识 (即,调整前的数据标识)的数据(如,待处理数据)中携带的数据标识也会相应变为调整后的 数据标识。也即,虽然各线程与数据标识的对应关系发生了改变,导致各线程与基础数据的 对应关系发生了改变,但是基础数据与待处理数据之间的对应关系却是未发生改变的。
[0087] 例如,一个分布式处理系统中有10个分布式服务器,初始时共预置128个线程,其 中的8个分布式服务器各预设13个线程,另外两个分布式服务器各预设12个线程,这128 个线程分别以线程标识0~127进行标识。
[0088] 假设以基础数据中携带的卖家标识为数据标识,则假设针对线程标识为1的线 程, 步骤S301选择出的一个基础数据中携带的卖家标识为131,则可将该基础数据中携带 的卖家标识调整为1、129、257、……、nX128+1中的任意一个,其中n为正整数。这样,调 整后的卖家标识对线程的数量128取余的值就恒为1,即与该线程标识为1的线程对应。假 设针对线程标识1选择出的卖家标识为59、131、304,则调整前后的对应关系如表4所示。
[0090] 表 4
[0091] 由表4可见,将选择出的卖家标识59、131、304分别调整为1、129、257后,这三个 调整后的卖家标识对应的线程标识就都是线程标识1。
[0092] 另外,假设将该卖家标识131调整为129,则之后所有携带原卖家标识131的数据 中携带的卖家标识均会变为129。这样,当线程标识为1的线程处理携带卖家标识为129的 物流订单信息时,即可根据携带卖家标识129的基础数据进行处理。也即,虽然与线程标识 为1的线程对应的基础数据发生了改变,但基础数据与待处理数据之间的对应关系并未改 变,携带原卖家标识131的待处理数据对应携带原卖家标识131的基础数据,而卖家标识由 131变为129后,待处理数据和基础数据中携带的卖家标识也均为129。
[0093] 也即,如果预置的线程的数量为k,则针对线程标识为i的线程而言,可将步骤 S301选择出的基础数据中携带的数据标识调整为nXk+i,n为正整数,这样,调整后的数据 标识对线程的数量k取余的值就恒为i,S卩,调整后的数据标识与该线程标识为i的线程对 应。
[0094] 为了方便网络业务的操作,在上述第二种调整方法中,针对某个线程选择出各基 础数据后,也可不直接调整选择出的各基础数据中携带的数据标识,而是在各基础数据携 带的数据标识中增加一个代替标识,增加的各代替标识各不相同,且对所有线程的数量取 余的值为该线程的线程标识。针对增加代替标识后的基础数据,可建立该基础数据中携带 的数据标识与代替标识的对应关系。
[0095] 相应的,确定线程与数据标识的对应关系的方法为:如果一个数据标识对应的代 替标识对所有线程的数量取余的值等于一个线程的线程标识,则该数据标识与该线程对 应。后续在接收到待处理数据时,则可确定该待处理数据中携带的数据标识对应的代替标 识,并确定该代替标识对所有线程的数量取余的值,通过线程标识为该值的线程处理该待 处理数据。
[0096] 仍以预置128个线程,线程标识分别为0~127为例进行说明,对于线程标识为1 的线程,如果选择出的基础数据中携带的数据标识131,则可在该基础数据中增加代替标识 1、129、257、……、nX128+1中的任意一个,其中n为正整数。假设增加的代替标识为129, 则建立代替标识129与数据标识131的对应关系,这样,数据标识131对应的代替标识129 对线程的数量128取余的值为1,因此,数据标识131与线程标识为1的线程对应。后续在 接收到携带数据标识131的待处理数据时,则可根据数据标识与代替标识的对应关系,确 定数据标识131对应的代替标识为129,该代替标识129对线程的数量128取余的值为1, 因此将该待处理数据通过线程标识为1的线程进行处理。假设针对线程标识1选择出的数 据标识为59、131、304,则增加代替标识后的对应关系如表5所示。
[0098]
[0099] 表 5
[0100] 在根据表5确定了各数据标识对应的代替标识后,接收到某个待处理数据时,则 可确定该待处理数据中携带的数据标识对应的代替标识,再根据代替标识对线程数量取余 的值来确定处理该待处理数据的线程,通过确定的线程处理该待处理数据。
[0101] 以上为本申请实施例提供的数据处理的方法,基于同样的思路,本申请还提供一 种数据处理的装置,如图4所示。
[0102] 图4为本申请实施例提供的数据处理的装置结构示意图,所述装置应用于包括有 多个分布式服务器的分布式处理系统,每个分布式服务器上预置有若干个线程,在任意两 个分布式服务器上预置的线程的数量的差值的绝对值不大于第一预设阈值,基础数据中携 带数据标识,每个线程与至少一个数据标识对应,所述装置具体包括:
[0103] 理论平均值确定模块401,用于确定基础数据的总量除预置的线程的数量的商 值;
[0104] 实际数据量确定模块402,用于针对每个线程,确定携带该线程对应的数据标识的 基础数据的数据量;
[0105] 调整模块403,用于当存在确定的数据量减所述商值的差值的绝对值大于第二预 设阈值的线程时,调整每个线程与数据标识的对应关系,使调整后携带每个线程对应的数 据标识的基础数据的数据量减所述商值的差值的绝对值均不大于第二预设阈值;
[0106] 数据处理模块404,用于针对每个线程,通过该线程,对携带调整后该线程对应的 数据标识的待处理数据进行处理。
[0107] 所述装置应用于物流订单处理场景,所述基础数据是对卖家的历史物流操作记录 进行统计得到的,所述基础数据中携带的数据标识为卖家标识,所述待处理数据为物流订 单。
[0108] 针对每个线程,如果一个数据标识对所有线程的数量取余的值为该线程的线程标 识,则该线程与该数据标识对应。
[0109] 所述理论平均值确定模块401具体用于,分别针对每个数据标识,确定携带该数 据标识的所有基础数据的第一数据量,确定各第一数据量的和值除预置的线程的数量的商 值。
[0110] 所述实际数据量确定模块402具体用于,根据线程与数据标识的对应关系,确定 该线程对应的每个数据标识,针对确定该线程对应的每个数据标识,分别确定携带该数据 标识的所有基础数据的第二数据量,确定各第二数据量的和值,作为确定的携带该线程对 应的数据标识的基础数据的数据量。
[0111] 所述调整模块403具体包括:
[0112] 数量调整单元4031,用于调整线程的数量,其中,在任意两个分布式服务器上调整 后的线程的数量的差值的绝对值不大于所述第一预设阈值;
[0113] 确定单元4032,用于根据调整后线程的数量,重新为调整后的每个线程设定线程 标识,并根据重新设定的线程标识,确定每个线程与数据标识的对应关系;
[0114] 所述理论平均值确定模块401还用于,根据调整后线程的数量,重新确定基础数 据的总量除调整后所有线程的数量的商值;
[0115] 所述实际数据量确定模块402还用于,针对调整后的每个线程,根据重新确定的 每个线程与数据标识的对应关系,确定携带该线程对应的数据标识的基础数据的数据量;
[0116] 所述数量调整单元4031还用于,判断是否存在重新确定的数据量减重新确定的 商值的差值的绝对值大于第二预设阈值的线程;若存在,则重新调整线程的数量,直至调整 后携带每个线程对应的数据标识的基础数据的数据量减重新确定的商值的差值的绝对值 均不大于第二预设阈值为止。
[0117] 所述数量调整单元4031具体用于,调整的线程的数量不大于预设的最大数量,且 不小于预设的最小数量。
[0118] 所述调整模块403具体包括:
[0119]选择单元4033,用于针对每个线程,在所有基础数据中,选择出未被选择过的、且 数据量相加的和值减所述商值的差值的绝对值不大于所述第二预设阈值的各基础数据;
[0120] 对应关系调整单元4034,用于将该线程对应的数据标识调整为选择出的各基础数 据中携带的数据标识。
[0121] 针对每个线程,如果一个数据标识对所有线程的数量取余的值为该线程的线程标 识,则该线程与该数据标识对应;
[0122] 所述对应关系调整单元4034具体用于,调整选择出的各基础数据中携带的数据 标识,调整后的各数据标识各不相同,且对所有线程的数量取余的值为该线程的线程标识。
[0123] 所述数据处理模块404具体用于,接收待处理数据,确定接收到的所述待处理数 据中携带的数据标识,根据调整后的每个线程与数据标识的对应关系,确定所述待处理数 据中携带的数据标识对应的线程,将所述待处理数据发送给确定的线程所在的分布式服务 器,使所述分布式服务器通过确定的线程处理所述待处理数据。
[0124] 具体的上述如图4所示的装置可以位于所述分布式处理系统中,也可以独立于所 述分布式处理系统,所述分布式处理系统具体可以是Storm集群系统。
[0125] 本申请实施例提供一种数据处理的方法及装置,该方法确定基础数据的总量除线 程数量的商值,确定每个线程对应的基础数据的数据量,当存在对应的数据量减该商值 的 绝对值大于第二预设阈值的线程时,将每个线程对应的基础数据的数据量调整至减该商值 的绝对值不大于第二预设阈值,再通过每个线程处理待处理数据。通过上述方法,由于调整 后每个线程对应的基础数据的数据量都近似相等,而且在各分布式服务器上预置的线程的 数量也近似相等,因此,可有效均衡各分布式服务器的内存中存储基础数据的数据量,避免 了某些分布式服务器存储的数据量较小而浪费存储资源,以及某些分布式服务器存储的数 据量较大而造成内存溢出的问题。
[0126] 在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、 网络接口和内存。
[0127] 内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/ 或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM)。内存是计算机可读介质 的示例。
[0128] 计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法 或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。 计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、 动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电 可擦除可编程只读存储器(EEPR0M)、快闪记忆体或其他内存技术、只读光盘只读存储器 (CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁 性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中 的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信 号和载波。
[0129] 还需要说明的是,术语"包括"、"包含"或者其任何其他变体意在涵盖非排他性的 包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包 括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要 素。在没有更多限制的情况下,由语句"包括一个……"限定的要素,并不排除在包括所述 要素的过程、方法、商品或者设备中还存在另外的相同要素。
[0130] 本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。 因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的 形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存 储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形 式。
[0131] 以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员 来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同 替换、改进等,均应包含在本申请的权利要求范围之内。
【主权项】
1. 一种数据处理的方法,其特征在于,所述方法应用于包括有多个分布式服务器的分 布式处理系统,每个分布式服务器上预置有若干个线程,在任意两个分布式服务器上预置 的线程的数量的差值的绝对值不大于第一预设阈值,基础数据中携带数据标识,每个线程 与至少一个数据标识对应,所述方法包括: 确定基础数据的总量除预置的线程的数量的商值; 针对每个线程,确定携带该线程对应的数据标识的基础数据的数据量; 当存在确定的数据量减所述商值的差值的绝对值大于第二预设阈值的线程时,调整每 个线程与数据标识的对应关系,使调整后携带每个线程对应的数据标识的基础数据的数据 量减所述商值的差值的绝对值均不大于第二预设阈值; 针对每个线程,通过该线程,对携带调整后该线程对应的数据标识的待处理数据进行 处理。2. 如权利要求1所述的方法,其特征在于,所述方法应用于物流订单处理场景,所述基 础数据是对卖家的历史物流操作记录进行统计得到的,所述基础数据中携带的数据标识为 卖家标识,所述待处理数据为物流订单。3. 如权利要求1所述的方法,其特征在于,针对每个线程,如果一个数据标识对所有线 程的数量取余的值为该线程的线程标识,则该线程与该数据标识对应。4. 如权利要求3所述的方法,其特征在于,确定基础数据的总量除预置的线程的数量 的商值,具体包括: 分别针对每个数据标识,确定携带该数据标识的所有基础数据的第一数据量; 确定各第一数据量的和值除预置的线程的数量的商值。5. 如权利要求3所述的方法,其特征在于,确定携带该线程对应的数据标识的基础数 据的数据量,具体包括: 根据线程与数据标识的对应关系,确定该线程对应的每个数据标识; 针对确定该线程对应的每个数据标识,分别确定携带该数据标识的所有基础数据的第 二数据量; 确定各第二数据量的和值,作为确定的携带该线程对应的数据标识的基础数据的数据 量。6. 如权利要求3所述的方法,其特征在于,调整每个线程与数据标识的对应关系,具体 包括: 调整线程的数量; 根据调整后线程的数量,重新确定基础数据的总量除调整后所有线程的数量的商值; 根据调整后线程的数量,重新为调整后的每个线程设定线程标识,并根据重新设定的 线程标识,确定每个线程与数据标识的对应关系; 针对调整后的每个线程,根据重新确定的每个线程与数据标识的对应关系,确定携带 该线程对应的数据标识的基础数据的数据量; 判断是否存在重新确定的数据量减重新确定的商值的差值的绝对值大于第二预设阈 值的线程; 若存在,则重新调整线程的数量,直至调整后携带每个线程对应的数据标识的基础数 据的数据量减重新确定的商值的差值的绝对值均不大于第二预设阈值为止。7. 如权利要求3所述的方法,其特征在于,调整每个线程与数据标识的对应关系,具体 包括: 针对每个线程,在所有基础数据中,选择出未被选择过的、且数据量相加的和值减所述 商值的差值的绝对值不大于所述第二预设阈值的各基础数据; 将该线程对应的数据标识调整为选择出的各基础数据中携带的数据标识。8. 如权利要求7所述的方法,其特征在于,将该线程对应的数据标识调整为选择出的 各基础数据中携带的数据标识,具体包括: 调整选择出的各基础数据中携带的数据标识,调整后的各数据标识各不相同,且对所 有线程的数量取余的值为该线程的线程标识。9. 如权利要求1所述的方法,其特征在于,针对每个线程,通过该线程,对携带调整后 该线程对应的数据标识的待处理数据进行处理,具体包括: 接收待处理数据; 确定接收到的所述待处理数据中携带的数据标识; 根据调整后的每个线程与数据标识的对应关系,确定所述待处理数据中携带的数据标 识对应的线程; 将所述待处理数据发送给确定的线程所在的分布式服务器,使所述分布式服务器通过 确定的线程处理所述待处理数据。10. -种数据处理的装置,其特征在于,所述装置应用于包括有多个分布式服务器的分 布式处理系统,每个分布式服务器上预置有若干个线程,在任意两个分布式服务器上预置 的线程的数量的差值的绝对值不大于第一预设阈值,基础数据中携带数据标识,每个线程 与至少一个数据标识对应,所述装置包括: 理论平均值确定模块,用于确定基础数据的总量除预置的线程的数量的商值; 实际数据量确定模块,用于针对每个线程,确定携带该线程对应的数据标识的基础数 据的数据量; 调整模块,用于当存在确定的数据量减所述商值的差值的绝对值大于第二预设阈值的 线程时,调整每个线程与数据标识的对应关系,使调整后携带每个线程对应的数据标识的 基础数据的数据量减所述商值的差值的绝对值均不大于第二预设阈值; 数据处理模块,用于针对每个线程,通过该线程,对携带调整后该线程对应的数据标识 的待处理数据进行处理。
【专利摘要】本申请公开了一种数据处理的方法及装置,用以解决现有技术中各分布式服务器的内存中存储的数据量不均匀,存在或浪费存储资源,或造成内存溢出的问题。该方法确定基础数据的总量除线程数量的商值,确定每个线程对应的基础数据的数据量,当存在对应的数据量减该商值的差值的绝对值大于第二预设阈值的线程时,将每个线程对应的基础数据的数据量调整至减该商值的差值的绝对值不大于第二预设阈值,再通过每个线程处理待处理数据。通过上述方法,可有效均衡各分布式服务器的内存中存储基础数据的数据量,避免了某些分布式服务器存储的数据量较小而浪费存储资源,以及某些分布式服务器存储的数据量较大而造成内存溢出的问题。
【IPC分类】G06F9/46, G06F9/50
【公开号】CN104899079
【申请号】CN201410078864
【发明人】陈岳阳, 李经纬
【申请人】阿里巴巴集团控股有限公司
【公开日】2015年9月9日
【申请日】2014年3月5日

最新回复(0)