基于分布式的數(shù)據(jù)流處理方法和系統(tǒng)的制作方法
【專利摘要】本發(fā)明提供一種基于分布式的數(shù)據(jù)流處理方法和系統(tǒng),通過工作節(jié)點根據(jù)從主節(jié)點接收的邏輯任務(wù)中用于指示進行指定操作的目標邏輯任務(wù)的接收速率,以及對目標邏輯任務(wù)執(zhí)行指定操作的處理速率,確定指定操作對應(yīng)的并行度,根據(jù)并行度,對目標邏輯任務(wù)進行整合獲得物理任務(wù),所述物理任務(wù)的數(shù)量為所述并行度,從而對物理任務(wù)并行執(zhí)行指定操作,由于根據(jù)邏輯任務(wù)的接收速率和邏輯任務(wù)的處理速率,動態(tài)確定各個操作的并行度,從而解決了現(xiàn)有技術(shù)中由于不能適應(yīng)數(shù)據(jù)流的時變性和外部負載變化所導致的系統(tǒng)資源的浪費或數(shù)據(jù)流處理延遲的技術(shù)問題。
【專利說明】基于分布式的數(shù)據(jù)流處理方法和系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機技術(shù),尤其涉及一種基于分布式的數(shù)據(jù)流處理方法和系統(tǒng)。
【背景技術(shù)】
[0002]基于分布式的數(shù)據(jù)流處理系統(tǒng),適用于對持續(xù)接收的數(shù)據(jù)流,進行實時處理,可應(yīng)用于金融服務(wù)、網(wǎng)絡(luò)監(jiān)控、通信數(shù)據(jù)管理、Web應(yīng)用和傳感檢測等方面。
[0003]基于分布式的數(shù)據(jù)流處理系統(tǒng)包括一個主節(jié)點和多個工作節(jié)點。主節(jié)點用于根據(jù)接收到的數(shù)據(jù)流向各個工作節(jié)點分配任務(wù),以指示各個工作節(jié)點待處理的數(shù)據(jù)流以及該待處理的數(shù)據(jù)流所需要進行的操作。各個工作節(jié)點根據(jù)設(shè)定的可同時進行相同操作的任務(wù)數(shù)量,即并行度,對接收的任務(wù)進行處理。
[0004]現(xiàn)有技術(shù)中,各個操作的并行度是固定的,而由于數(shù)據(jù)流的時變性,以及數(shù)據(jù)流處理系統(tǒng)的外部負載的變化,所需執(zhí)行相同操作的任務(wù)數(shù)量隨時間而發(fā)生變化,因此固定的并行度不能適應(yīng)數(shù)據(jù)流的時變性的特點,導致在一些操作中并行度過低,處理速度下降,從而出現(xiàn)數(shù)據(jù)流處理的延遲,而在另一些操作中并行度過高,需要較大的系統(tǒng)資源以滿足該并行度,從而出現(xiàn)系統(tǒng)資源的浪費。
【發(fā)明內(nèi)容】
[0005]本發(fā)明提供一種基于分布式的數(shù)據(jù)流處理方法和系統(tǒng),用于解決由于現(xiàn)有技術(shù)不能適應(yīng)數(shù)據(jù)流的時變性以及外部負載的變化,所導致的系統(tǒng)資源的浪費或數(shù)據(jù)流處理延遲。
[0006]本發(fā)明的第一個方面是提供一種基于分布式的數(shù)據(jù)流處理方法,包括:
[0007]工作節(jié)點從至少一個操作中確定指定操作;
[0008]所述工作節(jié)點根據(jù)接收的各個邏輯任務(wù)中用于指示進行所述指定操作的目標邏輯任務(wù)的接收速率,以及所述目標邏輯任務(wù)的處理速率,確定所述指定操作對應(yīng)的并行度,所述并行度為并行執(zhí)行所述指定操作的線程數(shù)量;所述邏輯任務(wù)是主節(jié)點根據(jù)接收到的數(shù)據(jù)流分配的,用于指示待處理的數(shù)據(jù)流以及所述待處理的數(shù)據(jù)流所需進行的操作;
[0009]所述工作節(jié)點根據(jù)所述并行度,對所述目標邏輯任務(wù)進行整合獲得至少一個物理任務(wù),所述物理任務(wù)的數(shù)量與所述并行度相同;
[0010]所述工作節(jié)點并行執(zhí)行所述至少一個物理任務(wù)。
[0011]本發(fā)明的另一個方面是提供一種基于分布式的數(shù)據(jù)流處理方法,包括:
[0012]主節(jié)點根據(jù)接收到的數(shù)據(jù)流向各個工作節(jié)點分配邏輯任務(wù),以使所述工作節(jié)點根據(jù)接收的各個邏輯任務(wù)中用于指示進行所述指定操作的目標邏輯任務(wù)的接收速率,以及所述目標邏輯任務(wù)的處理速率,確定所述指定操作對應(yīng)的并行度;所述工作節(jié)點根據(jù)所述并行度,對所述目標邏輯任務(wù)進行整合獲得至少一個物理任務(wù),所述物理任務(wù)的數(shù)量與所述并行度相同;所述工作節(jié)點并行執(zhí)行所述至少一個物理任務(wù);所述并行度為并行執(zhí)行所述指定操作的線程數(shù)量;所述邏輯任務(wù)用于指示各個工作節(jié)點待處理的數(shù)據(jù)流以及所述待處理的數(shù)據(jù)流所需進行的操作。
[0013]本發(fā)明的又一個方面是提供一種基于分布式的數(shù)據(jù)流處理系統(tǒng),包括:一個主節(jié)點和至少兩個工作節(jié)點;
[0014]所述主節(jié)點,用于根據(jù)接收到的數(shù)據(jù)流向各個所述工作節(jié)點分配邏輯任務(wù);所述邏輯任務(wù)用于指示各個工作節(jié)點待處理的數(shù)據(jù)流以及所述待處理的數(shù)據(jù)流所需進行的操作;
[0015]所述工作節(jié)點,用于從至少一個操作中確定指定操作;根據(jù)接收的各個邏輯任務(wù)中用于指示進行所述指定操作的目標邏輯任務(wù)的接收速率,以及所述目標邏輯任務(wù)的處理速率,確定所述指定操作對應(yīng)的并行度,所述并行度為并行執(zhí)行所述指定操作的線程數(shù)量;根據(jù)所述并行度,對所述目標邏輯任務(wù)進行整合獲得至少一個物理任務(wù),所述物理任務(wù)的數(shù)量與所述并行度相同;所述工作節(jié)點并行執(zhí)行所述至少一個物理任務(wù);
[0016]所述主節(jié)點,還用于獲取各個所述工作節(jié)點的負載信息;根據(jù)所述負載信息重新分配所述邏輯任務(wù),所述負載信息用于指示所述工作節(jié)點的資源占用情況,包括接收的所述邏輯任務(wù)的數(shù)量、CPU占用程度、帶寬占用程度和輸入輸出IO接口占用程度中的至少一個。
[0017]本發(fā)明提供的基于分布式的數(shù)據(jù)流處理方法和系統(tǒng),通過根據(jù)從主節(jié)點接收的邏輯任務(wù)中用于指示進行指定操作的目標邏輯任務(wù)的接收速率,以及對目標邏輯任務(wù)執(zhí)行指定操作的處理速率,確定指定操作對應(yīng)的并行度,根據(jù)并行度,對目標邏輯任務(wù)進行整合獲得物理任務(wù),所述物理任務(wù)的數(shù)量為所述并行度,從而并行執(zhí)行物理任務(wù),由于根據(jù)邏輯任務(wù)的接收速率和邏輯任務(wù)的處理速率,動態(tài)確定各個操作的并行度,從而解決了由于不能適應(yīng)數(shù)據(jù)流的時變性以及外部負載的變化,所導致的系統(tǒng)資源的浪費或數(shù)據(jù)流處理延遲。
【專利附圖】
【附圖說明】
[0018]圖1為本發(fā)明一實施例提供的基于分布式的數(shù)據(jù)流處理方法的流程示意圖;
[0019]圖2為本發(fā)明另一實施例提供的基于分布式的數(shù)據(jù)流處理方法的流程示意圖;
[0020]圖3為本發(fā)明一實施例提供的基于分布式的數(shù)據(jù)流處理系統(tǒng)的結(jié)構(gòu)示意圖。
【具體實施方式】
[0021]圖1為本發(fā)明一實施例提供的基于分布式的數(shù)據(jù)流處理方法的流程示意圖,如圖1所示,包括:
[0022]100、工作節(jié)點從至少一個操作中確定指定操作。
[0023]101、工作節(jié)點根據(jù)從主節(jié)點接收的邏輯任務(wù)中用于指示進行指定操作的目標邏輯任務(wù)的接收速率,以及對目標邏輯任務(wù)執(zhí)行指定操作的處理速率,確定指定操作對應(yīng)的并行度。
[0024]其中,所述并行度為并行執(zhí)行所述指定操作的線程數(shù)量;所述邏輯任務(wù)是所述主節(jié)點根據(jù)接收到的數(shù)據(jù)流分配的,用于指示待處理的數(shù)據(jù)流以及所述待處理的數(shù)據(jù)流所需進行的操作。指定操作可以為運行函數(shù)、過濾、聚合、合并和訪問數(shù)據(jù)庫中的一個或多個組
口 ο
[0025]可選的,確定所并行度的初始值之后,分別對所述目標邏輯任務(wù)的接收速率,以及所述目標邏輯任務(wù)的處理速率進行監(jiān)控;當監(jiān)控到所述目標邏輯任務(wù)的接收速率發(fā)生變化時,根據(jù)所述目標邏輯任務(wù)的接收速率和所述目標邏輯任務(wù)的處理速率,按照第一策略調(diào)整所述并行度;當監(jiān)控到所述目標邏輯任務(wù)的處理速率發(fā)生變化時,根據(jù)所述目標邏輯任務(wù)的接收速率和所述目標邏輯任務(wù)的處理速率,按照第二策略調(diào)整所述并行度。其中,第一策略包括若所述目標邏輯任務(wù)的接收速率增加,并且所述目標邏輯任務(wù)的處理速率小于所述目標邏輯任務(wù)的接收速率,則提高所述并行度;若所述目標邏輯任務(wù)的接收速率降低,并且所述目標邏輯任務(wù)的處理速率小于目標邏輯任務(wù)的接收速率,則降低所述并行度。第二策略包括若所述目標邏輯任務(wù)的處理速率增加,則提高所述并行度;若所述目標邏輯任務(wù)的處理速率降低,并且所述目標邏輯任務(wù)的處理速率小于所述目標邏輯任務(wù)的接收速率,則降低所述并行度;若所述目標邏輯任務(wù)的處理速率降低,并且所述目標邏輯任務(wù)的處理速率大于所述目標邏輯任務(wù)的接收速率,則降低所述并行度。
[0026]當數(shù)據(jù)流增大時,邏輯任務(wù)數(shù)量也會相應(yīng)增大,則系統(tǒng)的負載升高,則需要提高并行度;當數(shù)據(jù)流減小時,邏輯任務(wù)數(shù)量也會相應(yīng)減低,需要降低并行度;當邏輯任務(wù)的處理速率降低時,可認為系統(tǒng)的外部負載升高,或者邏輯任務(wù)的處理速率提高時,可認為系統(tǒng)的外部負載降低,均需要根據(jù)邏輯任務(wù)的處理速率和邏輯任務(wù)的數(shù)量進行判斷,從而確定并行度。根據(jù)并行度調(diào)整消息隊列的數(shù)量,以及對并行執(zhí)行指定操作的線程數(shù)進行調(diào)整,并行度的數(shù)量與線程和消息隊列的數(shù)量相一致,并行執(zhí)行各個線程,從而并行執(zhí)行線程中的物理任務(wù)。
[0027]需要說明的是,執(zhí)行第一策略之前可獲取調(diào)整鎖,以避免在執(zhí)行第一策略的同時執(zhí)行第二策略,同時對并行度進行調(diào)整。
[0028]102、工作節(jié)點根據(jù)所述并行度,對所述目標邏輯任務(wù)進行整合獲得物理任務(wù)。
[0029]其中,物理任務(wù)的數(shù)量與并行度相同,為至少一個。
[0030]可選的,根據(jù)所述并行度生成各個消息隊列,將所述目標邏輯任務(wù)加入所述各個消息隊列中,獲得加入相同所述消息隊列的所述目標邏輯任務(wù)構(gòu)成的每一個物理任務(wù)。由于將各個目標邏輯任務(wù)加入各個消息隊列,獲得加入相同所述消息隊列的所述目標邏輯任務(wù)構(gòu)成的各個所述物理任務(wù),并且消息隊列的數(shù)量與確定的所述并行度相同,不同于現(xiàn)有的主節(jié)點分配的任務(wù)與消息隊列一一對應(yīng)的關(guān)系,可實現(xiàn)將一個或多個目標邏輯任務(wù)加入到同一個消息隊列中。另外由于消息隊列與線程一一對應(yīng),因而通過調(diào)整消息隊列的數(shù)量,可實現(xiàn)對線程的動態(tài)調(diào)整。
[0031]103、工作節(jié)點并行執(zhí)行物理任務(wù)。
[0032]進一步,還包括,向主節(jié)點發(fā)送負載信息,以使所述主節(jié)點根據(jù)所述負載信息重新分配所述邏輯任務(wù)。
[0033]其中,負載信息用于指示所述工作節(jié)點的資源占用情況,包括接收的所述邏輯任務(wù)數(shù)量、CPU占用程度、帶寬占用程度和輸入輸出(Input Output,10)接口占用程度中的至少一個。
[0034]向主節(jié)點發(fā)送負載信息,以使所述主節(jié)點根據(jù)所述負載信息重新分配所述邏輯任務(wù)可為在工作節(jié)點根據(jù)從主節(jié)點接收的邏輯任務(wù)中用于指示進行指定操作的目標邏輯任務(wù)的接收速率,以及對目標邏輯任務(wù)執(zhí)行指定操作的處理速率,確定指定操作對應(yīng)的并行度之后執(zhí)行。[0035]本實施例中,通過工作節(jié)點根據(jù)從主節(jié)點接收的邏輯任務(wù)中用于指示進行指定操作的目標邏輯任務(wù)的接收速率,以及對目標邏輯任務(wù)執(zhí)行指定操作的處理速率,確定指定操作對應(yīng)的并行度,根據(jù)并行度,對目標邏輯任務(wù)進行整合獲得物理任務(wù),物理任務(wù)的數(shù)量為并行度,從而對物理任務(wù)并行執(zhí)行,由于根據(jù)邏輯任務(wù)的接收速率和邏輯任務(wù)的處理速率,動態(tài)確定各個操作的并行度,從而解決了由于不能適應(yīng)數(shù)據(jù)流的時變性所導致的系統(tǒng)資源的浪費或數(shù)據(jù)流處理延遲。
[0036]圖2為本發(fā)明另一實施例提供的基于分布式的數(shù)據(jù)流處理方法的流程示意圖,包括:
[0037]201、主節(jié)點根據(jù)接收到的數(shù)據(jù)流向各個工作節(jié)點分配邏輯任務(wù),以使各個工作節(jié)點根據(jù)從主節(jié)點接收的邏輯任務(wù)中用于指示進行指定操作的目標邏輯任務(wù)的接收速率,以及對目標邏輯任務(wù)執(zhí)行指定操作的處理速率,確定指定操作對應(yīng)的并行度,根據(jù)并行度對目標邏輯任務(wù)進行整合獲得物理任務(wù),物理任務(wù)的數(shù)量與并行度相同,對物理任務(wù)并行執(zhí)行指定操作。
[0038]其中,并行度為并行執(zhí)行所述指定操作的線程數(shù)量;所述邏輯任務(wù)用于指示各個工作節(jié)點待處理的數(shù)據(jù)流以及所述待處理的數(shù)據(jù)流所需進行的操作,所述并行度為并行執(zhí)行所述指定操作的物理任務(wù)數(shù)量。指定操作是工作節(jié)點從至少一個操作中確定的。
[0039]基于主節(jié)點接收的數(shù)據(jù)流的時變性,因此工作節(jié)點實時監(jiān)測目標邏輯任務(wù)的接收速率,以及目標邏輯任務(wù)的處理速率,根據(jù)監(jiān)測到的目標邏輯任務(wù)的接收速率和目標邏輯任務(wù)的處理速率,對目標操作對應(yīng)的并行度進行彈性調(diào)整,從而優(yōu)化基于分布式的數(shù)據(jù)流處理系統(tǒng),避免在一些操作中并行度過低,導致處理速度下降,從而出現(xiàn)數(shù)據(jù)流處理的延遲,而在另一些操作中并行度過高,需要較大的系統(tǒng)資源以滿足該并行度,從而出現(xiàn)系統(tǒng)資源的浪費的現(xiàn)象出現(xiàn)。
[0040]主節(jié)點接收到數(shù)據(jù)流,利用用戶預先提交的作業(yè)文件,向各個工作節(jié)點分配邏輯任務(wù)。其中,用戶提交的作業(yè)文件可為一張邏輯的拓撲圖,拓撲圖中的每一個點就是一個操作,每個操作對應(yīng)多個邏輯任務(wù)。從而主節(jié)點利用作業(yè)文件,對接收到的數(shù)據(jù)流進行劃分,獲得對應(yīng)各個操作的各個邏輯任務(wù),向各個工作節(jié)點分配該邏輯任務(wù)。
[0041]需要說明的是,若各個工作節(jié)點具體通過根據(jù)并行度對目標邏輯任務(wù)進行合并獲得物理任務(wù)時,即根據(jù)并行度生成各個消息隊列,將所述目標邏輯任務(wù)加入所述各個消息隊列中,獲得加入相同所述消息隊列的所述目標邏輯任務(wù)構(gòu)成的所述物理任務(wù),需要盡可能多的分配邏輯任務(wù),該邏輯任務(wù)的數(shù)量為并行度的上限。
[0042]進一步,主節(jié)點獲取各個所述工作節(jié)點的負載信息;根據(jù)負載信息重新分配邏輯任務(wù)。
[0043]其中,負載信息用于指示所述工作節(jié)點的資源占用情況,包括接收的所述邏輯任務(wù)的數(shù)量、CPU占用程度、帶寬占用程度和IO接口占用程度中的至少一個。負載信息可為數(shù)值,例如:接收的所述邏輯任務(wù)的數(shù)量、CPU占用比例、帶寬占用比例和IO接口占用比例的加權(quán)平均值,或最大值。
[0044]可選的,主節(jié)點獲取各個所述工作節(jié)點的負載信息,若存在所述負載信息未超過閾值的工作節(jié)點和所述負載信息超過所述閾值的工作節(jié)點,將向所述負載信息最高的至少一個工作節(jié)點分配的所述邏輯任務(wù)調(diào)整為向所述負載信息未超過所述閾值的至少一個工作節(jié)點分配;若各個所述工作節(jié)點的所述負載信息均超過所述閾值,則增加所述工作節(jié)點,將向所述負載信息最高的至少一個工作節(jié)點分配的所述邏輯任務(wù)調(diào)整為向增加的所述工作節(jié)點分配;若所述各個所述工作節(jié)點的所述負載信息均未超過所述閾值,則在除分配的所述邏輯任務(wù)的數(shù)量最少的所述工作節(jié)點以外的各個所述工作節(jié)點中確定待接收工作節(jié)點,將向所述包含所述邏輯任務(wù)的數(shù)量最少的工作節(jié)點分配的所述邏輯任務(wù)調(diào)整為向所述待接收工作節(jié)點分配。
[0045]例如:當工作節(jié)點中的邏輯任務(wù)的接收速率不大于邏輯任務(wù)的處理速率,則確定負載信息為閾值,如零,即CPU占用程度、帶寬占用程度和IO接口占用程度均未超過閾值;當工作節(jié)點中的邏輯任務(wù)的接收速率大于邏輯任務(wù)的處理速率,則系統(tǒng)繁忙,出現(xiàn)擁塞,即CPU占用程度、帶寬占用程度和IO接口占用程度中的一個超過閾值。若系統(tǒng)繁忙,進一步獲取CPU占用程度、帶寬占用程度和IO接口占用程度,當CPU利用率或帶寬利用率大于80%時,確認CPU或帶寬為引起系統(tǒng)繁忙的主要原因,并確定CPU或帶寬的占用程度為邏輯任務(wù)的接收速率與邏輯任務(wù)的處理速率之差與邏輯任務(wù)的處理速率的比值,IO接口的占用程度為閾值,如零;當CPU利用率和帶寬利用率均未大于80%時,確定IO接口為引起系統(tǒng)繁忙的主要原因,并確定IO接口的占用程度為邏輯任務(wù)的接收速率與邏輯任務(wù)的處理速率之差與邏輯任務(wù)的處理速率的比值,CPU占用程度和帶寬占用程度為閾值,如零。對各個工作節(jié)點在CPU占用程度、帶寬占用程度和IO接口占用程度三個維度上進行多維排序,將向每一維排序中,負載信息最高的至少一個工作節(jié)點分配的邏輯任務(wù)調(diào)整為向負載信息為零的至少一個工作節(jié)點分配,若不存在負載信息為零的工作節(jié)點,增加負載信息為零的工作節(jié)點,以將向負載信息最高的至少一個工作節(jié)點中分配的邏輯任務(wù)調(diào)整為向負載信息為零的至少一個工作節(jié)點分配;若不存在負載信息非零的工作節(jié)點,刪除分配獲得的邏輯任務(wù)最少的工作節(jié)點,從其余各個工作節(jié)點中確定待接收工作節(jié)點,將分配獲得的邏輯任務(wù)最少的工作節(jié)點的邏輯任務(wù)調(diào)整為向待接收工作節(jié)點分配,例如:待接收工作節(jié)點為分配獲得的邏輯任務(wù)次少的工作節(jié)點。
[0046]本實施例中,通過主節(jié)點根據(jù)接收到的數(shù)據(jù)流向各個工作節(jié)點分配邏輯任務(wù),以使工作節(jié)點根據(jù)從主節(jié)點接收的邏輯任務(wù)中用于指示進行指定操作的目標邏輯任務(wù)的接收速率,以及對目標邏輯任務(wù)執(zhí)行指定操作的處理速率,確定指定操作對應(yīng)的并行度,根據(jù)并行度,對目標邏輯任務(wù)進行整合獲得物理任務(wù),所述物理任務(wù)的數(shù)量為所述并行度,從而對物理任務(wù)并行執(zhí)行指定操作,由于根據(jù)邏輯任務(wù)的接收速率和邏輯任務(wù)的處理速率,動態(tài)確定各個操作的并行度,從而解決了由于不能適應(yīng)數(shù)據(jù)流的時變性所導致的系統(tǒng)資源的浪費或數(shù)據(jù)流處理延遲。
[0047]圖3為本發(fā)明一實施例提供的基于分布式的數(shù)據(jù)流處理系統(tǒng)的結(jié)構(gòu)示意圖,如圖3所示,基于分布式的數(shù)據(jù)流處理系統(tǒng)包括:主節(jié)點31和至少兩個工作節(jié)點32。
[0048]主節(jié)點31,用于根據(jù)接收到的數(shù)據(jù)流向各個所述工作節(jié)點32分配邏輯任務(wù)。
[0049]其中,邏輯任務(wù)用于指示各個工作節(jié)點32待處理的數(shù)據(jù)流以及所述待處理的數(shù)據(jù)流所需進行的操作。
[0050]工作節(jié)點32,與主節(jié)點31連接,用于根據(jù)從所述主節(jié)點31接收的所述邏輯任務(wù)中用于指示進行指定操作的目標邏輯任務(wù)的接收速率,以及對所述目標邏輯任務(wù)執(zhí)行所述指定操作的處理速率,確定所述指定操作對應(yīng)的并行度;根據(jù)所述并行度,對所述目標邏輯任務(wù)進行整合獲得所述物理任務(wù),所述物理任務(wù)的數(shù)量與所述并行度相同;對所述物理任務(wù)并行執(zhí)行。
[0051]其中,并行度為并行執(zhí)行所述指定操作的線程數(shù)量。
[0052]基于主節(jié)點31接收的數(shù)據(jù)流的時變性,因此實時監(jiān)測目標邏輯任務(wù)的接收速率,以及目標邏輯任務(wù)的處理速率,根據(jù)監(jiān)測到的目標邏輯任務(wù)的接收速率和目標邏輯任務(wù)的處理速率,對目標操作對應(yīng)的并行度進行彈性調(diào)整,從而優(yōu)化基于分布式的數(shù)據(jù)流處理系統(tǒng),避免在一些操作中并行度過低,導致處理速度下降,從而出現(xiàn)數(shù)據(jù)流處理的延遲,而在另一些操作中并行度過高,需要較大的系統(tǒng)資源以滿足該并行度,從而出現(xiàn)系統(tǒng)資源的浪費的現(xiàn)象出現(xiàn)。
[0053]主節(jié)點31,還用于獲取各個所述工作節(jié)點32的負載信息;根據(jù)所述負載信息重新分配所述邏輯任務(wù),所述負載信息用于指示所述工作節(jié)點的資源占用情況,包括接收的所述邏輯任務(wù)的數(shù)量、CPU占用程度、帶寬占用程度和IO接口占用程度中的至少一個。
[0054]可選的,若存在所述負載信息未超過閾值的工作節(jié)點和所述負載信息超過所述閾值的工作節(jié)點,將向所述負載信息最高的至少一個工作節(jié)點分配的所述邏輯任務(wù)調(diào)整為向所述負載信息未超過所述閾值的至少一個工作節(jié)點分配;若各個所述工作節(jié)點的所述負載信息均超過所述閾值,則增加所述工作節(jié)點,將向所述負載信息最高的至少一個工作節(jié)點分配的所述邏輯任務(wù)調(diào)整為向增加的所述工作節(jié)點分配;若所述各個所述工作節(jié)點的所述負載信息均未超過所述閾值,則在除分配的所述邏輯任務(wù)的數(shù)量最少的所述工作節(jié)點以外的各個所述工作節(jié)點中確定待接收工作節(jié)點,將向所述包含所述邏輯任務(wù)的數(shù)量最少的工作節(jié)點分配的所述邏輯任務(wù)調(diào)整為向所述待接收工作節(jié)點分配。
[0055]例如:當工作節(jié)點中的邏輯任務(wù)的接收速率不大于邏輯任務(wù)的處理速率,則確定負載信息為閾值,如零,即CPU占用程度、帶寬占用程度和IO接口占用程度均未超過閾值;當工作節(jié)點中的邏輯任務(wù)的接收速率大于邏輯任務(wù)的處理速率,則系統(tǒng)繁忙,出現(xiàn)擁塞,即CPU占用程度、帶寬占用程度和IO接口占用程度中的一個超過閾值。若系統(tǒng)繁忙,進一步獲取CPU占用程度、帶寬占用程度和IO接口占用程度,當CPU利用率或帶寬利用率大于80%時,確認CPU或帶寬為引起系統(tǒng)繁忙的主要原因,并確定CPU或帶寬的占用程度為邏輯任務(wù)的接收速率與邏輯任務(wù)的處理速率之差與邏輯任務(wù)的處理速率的比值,IO接口的占用程度為閾值,如零;當CPU利用率和帶寬利用率均未大于80%時,確定IO接口為引起系統(tǒng)繁忙的主要原因,并確定IO接口的占用程度為邏輯任務(wù)的接收速率與邏輯任務(wù)的處理速率之差與邏輯任務(wù)的處理速率的比值,CPU占用程度和帶寬占用程度為閾值,如零。對各個工作節(jié)點在CPU占用程度、帶寬占用程度和IO接口占用程度三個維度上進行多維排序,將向每一維排序中,負載信息最高的至少一個工作節(jié)點分配的邏輯任務(wù)調(diào)整為向負載信息為零的至少一個工作節(jié)點分配,若不存在負載信息為零的工作節(jié)點,增加負載信息為零的工作節(jié)點,以將向負載信息最高的至少一個工作節(jié)點中分配的邏輯任務(wù)調(diào)整為向負載信息為零的至少一個工作節(jié)點分配;若不存在負載信息非零的工作節(jié)點,刪除分配獲得的邏輯任務(wù)最少的工作節(jié)點,從其余各個工作節(jié)點中確定待接收工作節(jié)點,將分配獲得的邏輯任務(wù)最少的工作節(jié)點的邏輯任務(wù)調(diào)整為向待接收工作節(jié)點分配,例如:待接收工作節(jié)點為分配獲得的邏輯任務(wù)次少的工作節(jié)點。
[0056]本實施例提供的基于分布式的數(shù)據(jù)流處理系統(tǒng),是一種適用于對持續(xù)接收的數(shù)據(jù)流,進行實時處理,可應(yīng)用于金融服務(wù)、網(wǎng)絡(luò)監(jiān)控、通信數(shù)據(jù)管理、Web應(yīng)用和傳感檢測等方面,對金融服務(wù)、網(wǎng)絡(luò)監(jiān)控、通信數(shù)據(jù)管理、Web應(yīng)用和傳感檢測過程中產(chǎn)生的數(shù)據(jù)流進行處理。
[0057]本實施例中,通過工作節(jié)點根據(jù)從主節(jié)點接收的邏輯任務(wù)中用于指示進行指定操作的目標邏輯任務(wù)的接收速率,以及對目標邏輯任務(wù)執(zhí)行指定操作的處理速率,確定指定操作對應(yīng)的并行度,根據(jù)并行度,對目標邏輯任務(wù)進行整合獲得物理任務(wù),物理任務(wù)的數(shù)量為所述并行度,從而對物理任務(wù)并行執(zhí)行指定操作,由于根據(jù)邏輯任務(wù)的接收速率和邏輯任務(wù)的處理速率,動態(tài)確定各個操作的并行度,從而解決了由于不能適應(yīng)數(shù)據(jù)流的時變性所導致的系統(tǒng)資源的浪費或數(shù)據(jù)流處理延遲。同時,主節(jié)點根據(jù)各個工作節(jié)點的負載情況,對邏輯任務(wù)進行重新分配,從而進一步優(yōu)化了基于分布式的數(shù)據(jù)流處理系統(tǒng)的性能,避免了系統(tǒng)資源的浪費或數(shù)據(jù)流處理延遲。
[0058]本領(lǐng)域普通技術(shù)人員可以理解:實現(xiàn)上述各方法實施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來完成。前述的程序可以存儲于一計算機可讀取存儲介質(zhì)中。該程序在執(zhí)行時,執(zhí)行包括上述各方法實施例的步驟;而前述的存儲介質(zhì)包括:R0M、RAM、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。另外可以理解的是,上述方法及系統(tǒng)中的相關(guān)特征可以相互參考。
[0059]最后應(yīng)說明的是:以上各實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述各實施例對本發(fā)明進行了詳細的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當理解:其依然可以對前述各實施例所記載的技術(shù)方案進行修改,或者對其中部分或者全部技術(shù)特征進行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的范圍。
【權(quán)利要求】
1.一種基于分布式的數(shù)據(jù)流處理方法,其特征在于,包括: 工作節(jié)點從至少一個操作中確定指定操作; 所述工作節(jié)點根據(jù)接收的各個邏輯任務(wù)中用于指示進行所述指定操作的目標邏輯任務(wù)的接收速率,以及所述目標邏輯任務(wù)的處理速率,確定所述指定操作對應(yīng)的并行度,所述并行度為并行執(zhí)行所述指定操作的線程數(shù)量;所述邏輯任務(wù)是主節(jié)點根據(jù)接收到的數(shù)據(jù)流分配的,用于指示待處理的數(shù)據(jù)流以及所述待處理的數(shù)據(jù)流所需進行的操作; 所述工作節(jié)點根據(jù)所述并行度,對所述目標邏輯任務(wù)進行整合獲得至少一個物理任務(wù),所述物理任務(wù)的數(shù)量與所述并行度相同; 所述工作節(jié)點并行執(zhí)行所述至少一個物理任務(wù)。
2.根據(jù)權(quán)利要求1所述的基于分布式的數(shù)據(jù)流處理方法,其特征在于,所述工作節(jié)點根據(jù)所述并行度,對所述目標邏輯任務(wù)進行整合獲得至少一個物理任務(wù),所述物理任務(wù)的數(shù)量與所述并行度相同,包括: 所述工作節(jié)點根據(jù)所述并行度生成至少一個消息隊列,所述消息隊列的數(shù)量與所述并行度相同; 所述工作節(jié)點將所述目標邏輯任務(wù)分別加入所述至少一個消息隊列中,所述至少一個消息隊列中每個消息隊列中的至少一個目標邏輯任務(wù)構(gòu)成的一個物理任務(wù)。
3.根據(jù)權(quán)利要求1所述的基于分布式的數(shù)據(jù)流處理方法,其特征在于,所述工作節(jié)點根據(jù)接收的各個邏輯任務(wù)中用于指示進行所述指定操作的目標邏輯任務(wù)的接收速率,以及所述目標邏輯任務(wù)的處理速率,確定所述指定操作對應(yīng)的并行度,包括: 確定所述并行 度的初始值; 分別對所述目標邏輯任務(wù)的接收速率,以及所述目標邏輯任務(wù)的處理速率進行監(jiān)控;當監(jiān)控到所述目標邏輯任務(wù)的接收速率發(fā)生變化時,根據(jù)所述目標邏輯任務(wù)的接收速率和所述目標邏輯任務(wù)的處理速率,按照第一策略調(diào)整所述并行度; 當監(jiān)控到所述目標邏輯任務(wù)的處理速率發(fā)生變化時,根據(jù)所述目標邏輯任務(wù)的接收速率和所述目標邏輯任務(wù)的處理速率,按照第二策略調(diào)整所述并行度。
4.根據(jù)權(quán)利要求3所述的基于分布式的數(shù)據(jù)流處理方法,其特征在于,所述第一策略包括: 若所述目標邏輯任務(wù)的接收速率增加,并且所述目標邏輯任務(wù)的處理速率小于所述目標邏輯任務(wù)的接收速率,則提高所述并行度; 若所述目標邏輯任務(wù)的接收速率降低,并且所述目標邏輯任務(wù)的處理速率小于所述目標邏輯任務(wù)的接收速率,則降低所述并行度。
5.根據(jù)權(quán)利要求3所述的基于分布式的數(shù)據(jù)流處理方法,其特征在于,所述第二策略包括: 若所述目標邏輯任務(wù)的處理速率增加,則提高所述并行度; 若所述目標邏輯任務(wù)的處理速率降低,并且所述目標邏輯任務(wù)的處理速率小于所述目標邏輯任務(wù)的接收速率,則降低所述并行度; 若所述目標邏輯任務(wù)的處理速率降低,并且所述目標邏輯任務(wù)的處理速率大于所述目標邏輯任務(wù)的接收速率,則降低所述并行度。
6.根據(jù)權(quán)利要求1-5任一項所述的基于分布式的數(shù)據(jù)流處理方法,其特征在于,所述基于分布式的數(shù)據(jù)流處理方法還包括: 向所述主節(jié)點發(fā)送負載信息,以使所述主節(jié)點根據(jù)所述負載信息重新分配所述邏輯任務(wù),所述負載信息用于指示所述工作節(jié)點的資源占用情況,包括接收的所述邏輯任務(wù)數(shù)量、CPU占用程度、帶寬占用程度和IO接口占用程度中的至少一個。
7.一種基于分布式的數(shù)據(jù)流處理方法,其特征在于,包括: 主節(jié)點根據(jù)接收到的數(shù)據(jù)流向各個工作節(jié)點分配邏輯任務(wù),以使所述工作節(jié)點根據(jù)接收的各個邏輯任務(wù)中用于指示進行所述指定操作的目標邏輯任務(wù)的接收速率,以及所述目標邏輯任務(wù)的處理速率,確定所述指定操作對應(yīng)的并行度;所述工作節(jié)點根據(jù)所述并行度,對所述目標邏輯任務(wù)進行整合獲得至少一個物理任務(wù),所述物理任務(wù)的數(shù)量與所述并行度相同;所述工作節(jié)點并行執(zhí)行所述至少一個物理任務(wù);所述并行度為并行執(zhí)行所述指定操作的線程數(shù)量;所述邏輯任務(wù)用于指示各個工作節(jié)點待處理的數(shù)據(jù)流以及所述待處理的數(shù)據(jù)流所需進行的操作。
8.根據(jù)權(quán)利要求7所述的基于分布式的數(shù)據(jù)流處理方法,其特征在于,所述基于分布式的數(shù)據(jù)流處理方法還包括: 獲取各個所述工作節(jié)點的負載信息,所述負載信息用于指示所述工作節(jié)點的資源占用情況,包括接收的所述邏輯任務(wù)的數(shù)量、CPU占用程度、帶寬占用程度和IO接口占用程度中的至少一個; 根據(jù)所述負載信息重新分配所述邏輯任務(wù)。
9.根據(jù)權(quán)利要求8所述的基于分布式的數(shù)據(jù)流處理方法,其特征在于,所述根據(jù)所述負載信息重新分配各個所述邏輯任務(wù),包括: 若存在所述 負載信息未超過閾值的工作節(jié)點和所述負載信息超過所述閾值的工作節(jié)點,將向所述負載信息最高的至少一個工作節(jié)點分配的各個所述邏輯任務(wù)調(diào)整為向所述負載信息未超過所述閾值的至少一個工作節(jié)點分配; 若各個所述工作節(jié)點的所述負載信息均超過所述閾值,則增加所述工作節(jié)點,將向所述負載信息最高的至少一個工作節(jié)點分配的各個所述邏輯任務(wù)調(diào)整為向增加的所述工作節(jié)點分配; 若所述各個所述工作節(jié)點的所述負載信息均未超過所述閾值,則在除分配的所述邏輯任務(wù)的數(shù)量最少的所述工作節(jié)點以外的各個所述工作節(jié)點中確定待接收工作節(jié)點,將向所述包含所述邏輯任務(wù)的數(shù)量最少的工作節(jié)點分配的各個所述邏輯任務(wù)調(diào)整為向所述待接收工作節(jié)點分配。
10.一種基于分布式的數(shù)據(jù)流處理系統(tǒng),其特征在于,包括:一個主節(jié)點和至少兩個工作節(jié)點; 所述主節(jié)點,用于根據(jù)接收到的數(shù)據(jù)流向各個所述工作節(jié)點分配邏輯任務(wù);所述邏輯任務(wù)用于指示各個工作節(jié)點待處理的數(shù)據(jù)流以及所述待處理的數(shù)據(jù)流所需進行的操作; 所述工作節(jié)點,用于從至少一個操作中確定指定操作;根據(jù)接收的各個邏輯任務(wù)中用于指示進行所述指定操作的目標邏輯任務(wù)的接收速率,以及所述目標邏輯任務(wù)的處理速率,確定所述指定操作對應(yīng)的并行度,所述并行度為并行執(zhí)行所述指定操作的線程數(shù)量;根據(jù)所述并行度,對所述目標邏輯任務(wù)進行整合獲得至少一個物理任務(wù),所述物理任務(wù)的數(shù)量與所述并行度相同;所述工作節(jié)點并行執(zhí)行所述至少一個物理任務(wù);所述主節(jié)點,還用于獲取各個所述工作節(jié)點的負載信息;根據(jù)所述負載信息重新分配所述邏輯任務(wù),所述負載信息用于指示所述工作節(jié)點的資源占用情況,包括接收的所述邏輯任務(wù)的數(shù) 量、CPU占用程度、帶寬占用程度和輸入輸出IO接口占用程度中的至少一個。
【文檔編號】G06F17/30GK103595651SQ201310482045
【公開日】2014年2月19日 申請日期:2013年10月15日 優(yōu)先權(quán)日:2013年10月15日
【發(fā)明者】林學練, 于晨暉, 崔曉龍, 葉玥, 王成章 申請人:北京航空航天大學