一種數(shù)據(jù)處理的方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001] 本申請涉及計算機技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)處理的方法及裝置。
【背景技術(shù)】
[0002] 目前,通常采用分布式處理系統(tǒng)來處理數(shù)據(jù),可將要處理的多個數(shù)據(jù)按一定規(guī)則 分配給分布式處理系統(tǒng)中的不同分布式服務(wù)器進行處理,以提高數(shù)據(jù)處理的效率。
[0003] 具體的,可在每個分布式服務(wù)器中預(yù)設(shè)若干個線程,用于處理數(shù)據(jù),每個線程對應(yīng) 唯一的線程標識。為了保證各分布式服務(wù)器的負載均衡,針對任意兩個分布式服務(wù)器,在這 兩個分布式服務(wù)器中預(yù)設(shè)的線程數(shù)量的差值的絕對值可小于設(shè)定閾值,以使各分布式服務(wù) 器中的線程數(shù)量近似相等。
[0004] 在處理數(shù)據(jù)時,可根據(jù)待處理數(shù)據(jù)中攜帶的數(shù)據(jù)標識,確定該數(shù)據(jù)標識對應(yīng)的線 程標識,并將該待處理數(shù)據(jù)分配給該線程標識對應(yīng)的線程所在的分布式服務(wù)器,使該分布 式服務(wù)器采用該線程標識對應(yīng)的線程處理該待處理數(shù)據(jù)。
[0005] 在確定待處理數(shù)據(jù)中攜帶的數(shù)據(jù)標識對應(yīng)的線程標識時,具體可根據(jù)該數(shù)據(jù)標識 以及在各分布式服務(wù)器中預(yù)設(shè)的線程的總數(shù),確定該數(shù)據(jù)標識對該總數(shù)取余的值,并將線 程標識為該值的線程標識確定為該數(shù)據(jù)標識對應(yīng)的線程標識。
[0006] 例如,假設(shè)要使用具有10個分布式服務(wù)器的分布式處理系統(tǒng),對某電商網(wǎng)站中產(chǎn) 生的物流訂單涉及的商品在未來一段時間內(nèi)的情況(如,賣家何時發(fā)貨、使用哪個物流機構(gòu) 配送、配送路線是哪條、會經(jīng)過哪個中轉(zhuǎn)站、何時送達等)進行預(yù)測,則可在這10個分布式服 務(wù)器中共預(yù)設(shè)128個線程,其中的8個分布式服務(wù)器各預(yù)設(shè)13個線程,另外兩個分布式服 務(wù)器各預(yù)設(shè)12個線程,并對這128個線程分別以線程標識0~127進行標識。
[0007] 假設(shè)以物流訂單信息中攜帶的賣家標識為數(shù)據(jù)標識,則當接收到一個攜帶賣家標 識為131的待處理物流訂單信息時,可根據(jù)該物流訂單信息中攜帶的賣家標識131以及預(yù) 設(shè)的線程的總數(shù)128,確定該賣家標識131對總數(shù)128取余的值,該值為3,因此將線程標識 為3的線程標識確定為該待處理物流訂單信息對應(yīng)的線程標識,將該待處理物流訂單信息 發(fā)送給線程標識為3的線程所在的分布式服務(wù)器。該分布式服務(wù)器接收到該待處理物流訂 單信息時,則可采用線程標識為3的線程對該待處理物流訂單信息進行處理,以得到預(yù)測 結(jié)果。
[0008] 然而,在處理待處理數(shù)據(jù)時,通常要基于一定的基礎(chǔ)數(shù)據(jù)進行處理,這些基礎(chǔ)數(shù)據(jù) 是保存在數(shù)據(jù)庫中的?;A(chǔ)數(shù)據(jù)中也攜帶有數(shù)據(jù)標識,對于一個基礎(chǔ)數(shù)據(jù)來說,如果該基礎(chǔ) 數(shù)據(jù)中攜帶的數(shù)據(jù)標識與待處理數(shù)據(jù)中攜帶的數(shù)據(jù)標識相同,則該基礎(chǔ)數(shù)據(jù)就是該待處理 數(shù)據(jù)對應(yīng)的基礎(chǔ)數(shù)據(jù),對該待處理數(shù)據(jù)進行處理時就要基于該待處理數(shù)據(jù)對應(yīng)的基礎(chǔ)數(shù)據(jù) 進行處理。如,上例中要根據(jù)待處理物流訂單信息預(yù)測該物流訂單涉及的商品在未來一段 時間的情況時,需要根據(jù)攜帶該賣家標識(賣家標識為131)的基礎(chǔ)數(shù)據(jù)(這些基礎(chǔ)數(shù)據(jù)例如 可以為:賣家在訂單產(chǎn)生后的T時間內(nèi)發(fā)貨的概率、使用物流機構(gòu)A的概率等)進行預(yù)測, 這些基礎(chǔ)數(shù)據(jù)是預(yù)先根據(jù)該賣家的歷史物流數(shù)據(jù)確定并保存在數(shù)據(jù)庫中的。而由于從數(shù)據(jù) 庫中讀取基礎(chǔ)數(shù)據(jù)的速度較慢,因此,如果線程每處理一個待處理數(shù)據(jù),就從數(shù)據(jù)庫中讀取 相應(yīng)的基礎(chǔ)數(shù)據(jù),勢必會降低處理數(shù)據(jù)的效率。從而,為了提高數(shù)據(jù)處理的效率,線程每次 處理待處理數(shù)據(jù)時,先在其所在的分布式服務(wù)器的本地內(nèi)存中查找該待處理數(shù)據(jù)對應(yīng)的基 礎(chǔ)數(shù)據(jù),若未查找到,則從數(shù)據(jù)庫中讀取,并將讀取的基礎(chǔ)數(shù)據(jù)保存在本地內(nèi)存中,以備下 次處理數(shù)據(jù)時可直接從本地內(nèi)存中讀取。
[0009] 但是,由于每個待處理數(shù)據(jù)對應(yīng)的基礎(chǔ)數(shù)據(jù)的數(shù)據(jù)量往往是各不相同的,也即,對 于不同的數(shù)據(jù)標識而言,攜帶一個數(shù)據(jù)標識的基礎(chǔ)數(shù)據(jù)的數(shù)據(jù)量與攜帶另一個數(shù)據(jù)標識的 基礎(chǔ)數(shù)據(jù)的數(shù)據(jù)量往往差別很大,例如,假設(shè)數(shù)據(jù)標識為賣家標識,則對于規(guī)模較大的賣家 來說,攜帶該賣家的賣家標識的基礎(chǔ)數(shù)據(jù)的數(shù)據(jù)量較大,而對于規(guī)模較小的賣家來說,攜帶 該賣家的賣家標識的基礎(chǔ)數(shù)據(jù)的數(shù)據(jù)量則較小。而每個分布式服務(wù)器處理的待處理數(shù)據(jù)又 是不同的,也即,每個分布式服務(wù)器處理的待處理數(shù)據(jù)中攜帶的數(shù)據(jù)標識各不相同,這就會 出現(xiàn)某些分布式服務(wù)器的內(nèi)存中存儲的基礎(chǔ)數(shù)據(jù)的數(shù)據(jù)量較小,浪費了存儲資源,而某些 分布式服務(wù)器的內(nèi)存中存儲的基礎(chǔ)數(shù)據(jù)的數(shù)據(jù)量較大,甚至內(nèi)存溢出,導(dǎo)致分布式服務(wù)器 出現(xiàn)異常的情況。
[0010] 例如,仍假設(shè)數(shù)據(jù)標識為賣家標識,共有2億條基礎(chǔ)數(shù)據(jù),在各分布式服務(wù)器上共 預(yù)設(shè)了 128個線程,在理想情況下,S卩如果攜帶不同賣家標識的基礎(chǔ)數(shù)據(jù)的數(shù)據(jù)量相同,則 理論上每個線程會將200000000/128=1562500條基礎(chǔ)數(shù)據(jù)存儲在本地內(nèi)存中。假設(shè)每條基 礎(chǔ)數(shù)據(jù)的數(shù)據(jù)量為256字節(jié),則理想情況下每個線程存儲在本地內(nèi)存中的基礎(chǔ)數(shù)據(jù)的數(shù)據(jù) 量約為 1562500X256 字節(jié)=300M。
[0011] 但是,在實際應(yīng)用中,攜帶不同賣家標識的基礎(chǔ)數(shù)據(jù)的數(shù)據(jù)量并不相同,攜帶規(guī)模 較大的賣家的賣家標識的基礎(chǔ)數(shù)據(jù)的數(shù)據(jù)量較大,而攜帶規(guī)模較小的賣家的賣家標識的基 礎(chǔ)數(shù)據(jù)的數(shù)據(jù)量較小,因此,假設(shè)規(guī)模較小的賣家只有20條基礎(chǔ)數(shù)據(jù),而規(guī)模較大的賣家 有100條數(shù)據(jù),按每條基礎(chǔ)數(shù)據(jù)的數(shù)據(jù)量為256字節(jié)計算,規(guī)模較大的賣家的基礎(chǔ)數(shù)據(jù)是規(guī) 模較小的賣家的基礎(chǔ)數(shù)據(jù)的5倍。假設(shè)某個線程存儲的基礎(chǔ)數(shù)據(jù)都是規(guī)模較大的賣家的基 礎(chǔ)數(shù)據(jù),則其存儲在本地的基礎(chǔ)數(shù)據(jù)的數(shù)據(jù)量就可能超過1G,如果本地內(nèi)存只有1G,那么 顯然這就會造成內(nèi)存溢出,而如果某個線程存儲的基礎(chǔ)數(shù)據(jù)都是規(guī)模較小的賣家的基礎(chǔ)數(shù) 據(jù),則其存儲在本地的基礎(chǔ)數(shù)據(jù)的數(shù)據(jù)量可能不超過100M,這也顯然浪費了存儲資源。
【發(fā)明內(nèi)容】
[0012] 本申請實施例提供一種數(shù)據(jù)處理的方法及裝置,用以解決現(xiàn)有技術(shù)中各分布式服 務(wù)器的內(nèi)存中存儲的數(shù)據(jù)量不均勻,存在或浪費存儲資源,或造成內(nèi)存溢出的問題。
[0013] 本申請實施例提供的一種數(shù)據(jù)處理的方法,所述方法應(yīng)用于包括有多個分布式服 務(wù)器的分布式處理系統(tǒng),每個分布式服務(wù)器上預(yù)置有若干個線程,在任意兩個分布式服務(wù) 器上預(yù)置的線程的數(shù)量的差值的絕對值不大于第一預(yù)設(shè)閾值,基礎(chǔ)數(shù)據(jù)中攜帶數(shù)據(jù)標識, 每個線程與至少一個數(shù)據(jù)標識對應(yīng),所述方法包括:
[0014] 確定基礎(chǔ)數(shù)據(jù)的總量除預(yù)置的線程的數(shù)量的商值;
[0015] 針對每個線程,確定攜帶該線程對應(yīng)的數(shù)據(jù)標識的基礎(chǔ)數(shù)據(jù)的數(shù)據(jù)量;
[0016] 當存在確定的數(shù)據(jù)量減所述商值的差值的絕對值大于第二預(yù)設(shè)閾值的線程時,調(diào) 整每個線程與數(shù)據(jù)標識的對應(yīng)關(guān)系,使調(diào)整后攜帶每個線程對應(yīng)的數(shù)據(jù)標識的基礎(chǔ)數(shù)據(jù)的 數(shù)據(jù)量減所述商值的差值的絕對值均不大于第二預(yù)設(shè)閾值;
[0017] 針對每個線程,通過該線程,對攜帶調(diào)整后該線程對應(yīng)的數(shù)據(jù)標識的待處理數(shù)據(jù) 進行處理。
[0018] 本申請實施例提供的一種數(shù)據(jù)處理的裝置,所述裝置應(yīng)用于包括有多個分布式服 務(wù)器的分布式處理系統(tǒng),每個分布式服務(wù)器上預(yù)置有若干個線程,在任意兩個分布式服務(wù) 器上預(yù)置的線程的數(shù)量的差值的絕對值不大于第一預(yù)設(shè)閾值,基礎(chǔ)數(shù)據(jù)中攜帶數(shù)據(jù)標識, 每個線程與至少一個數(shù)據(jù)標識對應(yīng),所述裝置包括:
[0019] 理論平均值確定模塊,用于確定基礎(chǔ)數(shù)據(jù)的總量除預(yù)置的線程的數(shù)量的商值;
[0020] 實際數(shù)據(jù)量確定模塊,用于針對每個線程,確定攜帶該線程對應(yīng)的數(shù)據(jù)標識的基 礎(chǔ)數(shù)據(jù)的數(shù)據(jù)量;
[0021] 調(diào)整模塊,用于當存在確定的數(shù)據(jù)量減所述商值的差值的絕對值大于第二預(yù)設(shè)閾 值的線程時,調(diào)整每個線程與數(shù)據(jù)標識的對應(yīng)關(guān)系,使調(diào)整后攜帶每個線程對應(yīng)的數(shù)據(jù)標 識的基礎(chǔ)數(shù)據(jù)的數(shù)據(jù)量減所述商值的差值的絕對值均不大于第二預(yù)設(shè)閾值;
[0022] 數(shù)據(jù)處理模塊,用于針對每個線程,通過該線程,對攜帶調(diào)整后該線程對應(yīng)的數(shù)據(jù) 標識的待處理數(shù)據(jù)進行處理。
[0023] 本申請實施例提供一種數(shù)據(jù)處理的方法及裝置,該方法確定基礎(chǔ)數(shù)據(jù)的總量除線 程數(shù)量的商值,確定每個線程對應(yīng)的基礎(chǔ)數(shù)據(jù)的數(shù)據(jù)量,當存在對應(yīng)的數(shù)據(jù)量減該商值的 差值的絕對值大于第二預(yù)設(shè)閾值的線程時,將每個線程對應(yīng)的基礎(chǔ)數(shù)據(jù)的數(shù)據(jù)量調(diào)整至減 該商值的差值的絕對值不大于第二預(yù)設(shè)閾值,再通過每個線程處理待處理數(shù)據(jù)。通過上述 方法,由于調(diào)整后每個線程對應(yīng)的基礎(chǔ)數(shù)據(jù)的數(shù)據(jù)量都近似相等,而且在各分布式服務(wù)器 上預(yù)置的線程的數(shù)量也近似相等,因此,可有效均衡各分布式服務(wù)器的內(nèi)存中存儲基礎(chǔ)數(shù) 據(jù)的數(shù)據(jù)量,避免了某些分布式服務(wù)器存儲的數(shù)據(jù)量較小而浪費存儲資源,以及某些分布 式服務(wù)器存儲的數(shù)據(jù)量較大而造成內(nèi)存溢出的問題。
【附圖說明】
[0024] 此處所說