欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種適用于分布式計(jì)算系統(tǒng)的節(jié)點(diǎn)及其組成的系統(tǒng)的制作方法

文檔序號(hào):11548552閱讀:345來(lái)源:國(guó)知局
本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,尤其涉及一種適用于分布式計(jì)算系統(tǒng)的節(jié)點(diǎn)及其組成的系統(tǒng)。
背景技術(shù)
::隨著信息技術(shù)的飛速發(fā)展,基于數(shù)據(jù)處理和數(shù)據(jù)分析的應(yīng)用受到了廣泛的歡迎和關(guān)注。大量信息源帶來(lái)數(shù)據(jù)規(guī)模的爆發(fā)式增長(zhǎng),對(duì)海量數(shù)據(jù)進(jìn)行復(fù)雜計(jì)算已經(jīng)遠(yuǎn)遠(yuǎn)超過(guò)單臺(tái)計(jì)算機(jī)的處理能力,由此推動(dòng)了對(duì)分布式系統(tǒng)及其關(guān)鍵技術(shù)的研究。分布式計(jì)算中把需要進(jìn)行復(fù)雜計(jì)算的海量數(shù)據(jù)切分成小塊后,分交由多臺(tái)計(jì)算機(jī)并行處理,并將局部計(jì)算結(jié)果整合得出最終結(jié)果。在復(fù)雜、海量、異構(gòu)的數(shù)據(jù)環(huán)境中,不僅包含靜態(tài)的、離線的、結(jié)構(gòu)化的數(shù)據(jù),還有實(shí)時(shí)傳輸?shù)?、持續(xù)產(chǎn)生的、非結(jié)構(gòu)化的數(shù)據(jù)。例如傳感器網(wǎng)絡(luò)實(shí)時(shí)產(chǎn)生的監(jiān)控?cái)?shù)據(jù),在線服務(wù)器產(chǎn)生的統(tǒng)計(jì)信息,路由器數(shù)據(jù)報(bào)的統(tǒng)計(jì),這些數(shù)據(jù)時(shí)時(shí)刻刻都在“運(yùn)動(dòng)”的。面對(duì)這些“無(wú)限”運(yùn)動(dòng)著的數(shù)據(jù),如果不能對(duì)其進(jìn)行高效率的實(shí)時(shí)處理,將錯(cuò)過(guò)數(shù)據(jù)流中攜帶的關(guān)鍵信息。整合來(lái)自多個(gè)異構(gòu)數(shù)據(jù)源的“運(yùn)動(dòng)”數(shù)據(jù),在其“運(yùn)動(dòng)”的過(guò)程執(zhí)行復(fù)雜的邏輯處理,包括數(shù)值計(jì)算、數(shù)據(jù)挖掘和模型預(yù)測(cè),實(shí)時(shí)地給出用戶關(guān)心的結(jié)果,這是傳統(tǒng)分布式計(jì)算模式所無(wú)法做到的。技術(shù)實(shí)現(xiàn)要素:本發(fā)明所要解決的技術(shù)問(wèn)題在于提供一種適用于分布式計(jì)算系統(tǒng)的節(jié)點(diǎn)及其組成的系統(tǒng),能夠?qū)Α盁o(wú)限”運(yùn)動(dòng)著的數(shù)據(jù)進(jìn)行高效率的實(shí)時(shí)處理。為解決上述技術(shù)問(wèn)題,本發(fā)明采用如下技術(shù)方案:本發(fā)明提供了一種適用于分布式計(jì)算系統(tǒng)的節(jié)點(diǎn),該節(jié)點(diǎn)包括:傳輸模塊,用于將接收到的來(lái)自上游節(jié)點(diǎn)的輸入數(shù)據(jù)流根據(jù)輸入數(shù)據(jù)流名切分,并通過(guò)與所述輸入數(shù)據(jù)流名一一對(duì)應(yīng)的有名管道傳送給中心調(diào)度模塊;還用于將來(lái)自所述中心調(diào)度模塊的輸出數(shù)據(jù)流傳輸給對(duì)應(yīng)的下游節(jié)點(diǎn);中心調(diào)度模塊,用于接收來(lái)自所述傳輸模塊切分好的輸入數(shù)據(jù)流,并將接收到的輸入數(shù)據(jù)流放入以待處理任務(wù)名稱命名的鏈表中,基于各待處理任務(wù)的優(yōu)先級(jí)開(kāi)啟待處理任務(wù),并將待處理任務(wù)發(fā)送給業(yè)務(wù)模塊;還用于接收來(lái)自所述業(yè)務(wù)模塊的輸出數(shù)據(jù)流,并轉(zhuǎn)發(fā)給所述傳輸模塊;業(yè)務(wù)模塊,用于基于開(kāi)啟的待處理任務(wù),對(duì)來(lái)自所述中心調(diào)度模塊的輸入數(shù)據(jù)流進(jìn)行計(jì)算處理,并向所述中心調(diào)度模塊輸出處理之后的數(shù)據(jù)流。優(yōu)選的,該節(jié)點(diǎn)還包括:數(shù)據(jù)持久化模塊,用于接收來(lái)自所述中心調(diào)度模塊的輸出數(shù)據(jù)流和對(duì)應(yīng)的輸出數(shù)據(jù)流名,并進(jìn)行數(shù)據(jù)持久化存儲(chǔ)。優(yōu)選的,所述數(shù)據(jù)持久化模塊用于接收到來(lái)自所述中心調(diào)度模塊的輸出數(shù)據(jù)流名時(shí),從對(duì)應(yīng)的有名管道持續(xù)讀取來(lái)自所述中心調(diào)度模塊的輸出數(shù)據(jù)流,并進(jìn)行存儲(chǔ)。優(yōu)選的,所述數(shù)據(jù)持久化模塊還用于將已經(jīng)進(jìn)行存儲(chǔ)的輸出數(shù)據(jù)流名和對(duì)應(yīng)的輸出數(shù)據(jù)流發(fā)送到以下游節(jié)點(diǎn)命名的共享內(nèi)存隊(duì)列中,并將所述下游節(jié)點(diǎn)名封裝為任務(wù),放入任務(wù)隊(duì)列中。優(yōu)選的,所述傳輸模塊用于取出所述任務(wù)隊(duì)列中的下游節(jié)點(diǎn)名,從所述共享內(nèi)存隊(duì)列中獲取對(duì)應(yīng)的輸出數(shù)據(jù)流和輸出數(shù)據(jù)流名,并發(fā)送給對(duì)應(yīng)的下游節(jié)點(diǎn)。優(yōu)選的,所述中心調(diào)度模塊還用于基于所述節(jié)點(diǎn)的負(fù)載決定啟動(dòng)的待處理任務(wù)的數(shù)量,并根據(jù)各所述待處理任務(wù)的優(yōu)先級(jí)開(kāi)啟待處理任務(wù)。優(yōu)選的,所述待處理任務(wù)的數(shù)量基于所述節(jié)點(diǎn)的處理器的個(gè)數(shù)和密集計(jì)算所占的時(shí)間比重確定。優(yōu)選的,所述傳輸模塊、所述中心調(diào)度模塊、所述業(yè)務(wù)模塊和所述數(shù)據(jù)持久化模塊之間通過(guò)進(jìn)程間通信方式通信。本發(fā)明實(shí)施例提供了一種適用于分布式計(jì)算系統(tǒng)的節(jié)點(diǎn),該節(jié)點(diǎn)能夠有效地對(duì)“無(wú)限”運(yùn)動(dòng)著的數(shù)據(jù)進(jìn)行高效率的實(shí)時(shí)處理。本發(fā)明另一方面提供了一種分布式計(jì)算系統(tǒng),該分布式計(jì)算系統(tǒng)包括多個(gè)節(jié)點(diǎn)。附圖說(shuō)明為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1為本發(fā)明實(shí)施例提供的適用于分布式計(jì)算系統(tǒng)的節(jié)點(diǎn)的結(jié)構(gòu)示意圖。具體實(shí)施方式下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。本發(fā)明實(shí)施例提供了一種分布式計(jì)算系統(tǒng),該分布式計(jì)算系統(tǒng)包括多個(gè)節(jié)點(diǎn)。如圖1所示,任一節(jié)點(diǎn)包括:傳輸模塊,用于將接收到的來(lái)自上游節(jié)點(diǎn)的輸入數(shù)據(jù)流根據(jù)輸入數(shù)據(jù)流名切分,并通過(guò)與輸入數(shù)據(jù)流名一一對(duì)應(yīng)的有名管道傳送給中心調(diào)度模塊;還用于將來(lái)自中心調(diào)度模塊的輸出數(shù)據(jù)流傳輸給對(duì)應(yīng)的下游節(jié)點(diǎn);中心調(diào)度模塊,用于接收來(lái)自傳輸模塊切分好的輸入數(shù)據(jù)流,并將接收到的輸入數(shù)據(jù)流放入以待處理任務(wù)名稱命名的鏈表中,基于各待處理任務(wù)的優(yōu)先級(jí)開(kāi)啟待處理任務(wù),并將待處理任務(wù)發(fā)送給業(yè)務(wù)模塊;還用于接收來(lái)自業(yè)務(wù)模塊的輸出數(shù)據(jù)流,并轉(zhuǎn)發(fā)給傳輸模塊;業(yè)務(wù)模塊,用于基于開(kāi)啟的待處理任務(wù),對(duì)來(lái)自中心調(diào)度模塊的輸入數(shù)據(jù)流進(jìn)行計(jì)算處理,并向中心調(diào)度模塊輸出處理之后的數(shù)據(jù)流。其中,傳輸模塊負(fù)責(zé)節(jié)點(diǎn)與外界節(jié)點(diǎn)之間的數(shù)據(jù)轉(zhuǎn)發(fā),包括上游節(jié)點(diǎn)推送的數(shù)據(jù)和推向下游節(jié)點(diǎn)的數(shù)據(jù)。傳輸模塊使節(jié)點(diǎn)的數(shù)據(jù)傳輸和內(nèi)部的邏輯計(jì)算剝離開(kāi)來(lái),包括該節(jié)點(diǎn)的分布式計(jì)算系統(tǒng)的用戶可以僅僅關(guān)注于業(yè)務(wù)邏輯的開(kāi)發(fā),而不用了解數(shù)據(jù)的底層通信機(jī)制,提高了用戶的使用體驗(yàn)。具體的,在傳輸模塊中會(huì)將上游節(jié)點(diǎn)推送的輸入數(shù)據(jù)按輸入數(shù)據(jù)流名切分,并通過(guò)有名管道將輸入數(shù)據(jù)流傳送給中心調(diào)度模塊。中心調(diào)度模塊是節(jié)點(diǎn)的樞紐,它負(fù)責(zé)接收傳輸模塊傳送的多條輸入數(shù)據(jù)流。中心調(diào)度模塊根據(jù)輸入數(shù)據(jù)流和本節(jié)點(diǎn)的待處理任務(wù)的訂閱關(guān)系,維護(hù)一個(gè)針對(duì)所有處于就緒狀態(tài)的待處理任務(wù)的優(yōu)先級(jí)隊(duì)列。中心調(diào)度模塊會(huì)根據(jù)節(jié)點(diǎn)的負(fù)載確定啟動(dòng)多少個(gè)任務(wù),并從優(yōu)先級(jí)隊(duì)列中選擇相應(yīng)個(gè)數(shù)的、優(yōu)先級(jí)較高的待處理任務(wù)啟動(dòng)。此外,中心調(diào)度模塊還負(fù)責(zé)將輸入數(shù)據(jù)流傳送給執(zhí)行待處理任務(wù)的業(yè)務(wù)模塊,并接收經(jīng)過(guò)業(yè)務(wù)模塊處理后的輸出數(shù)據(jù)流。和傳統(tǒng)關(guān)系型數(shù)據(jù)處理將數(shù)據(jù)保存在磁盤(pán)上并在內(nèi)存中維護(hù)磁盤(pán)數(shù)據(jù)的索引的方式不同,在包括該節(jié)點(diǎn)的分布式計(jì)算系統(tǒng)中,對(duì)輸入或輸出數(shù)據(jù)流的切割、融合和處理都在內(nèi)存中完成,保證了極快的處理速度和響應(yīng)速度。但是這也帶來(lái)了弊端,即相對(duì)于磁盤(pán)上“落地”的長(zhǎng)期數(shù)據(jù),內(nèi)存數(shù)據(jù)是一種非穩(wěn)定的數(shù)據(jù),當(dāng)節(jié)點(diǎn)因故障重新啟動(dòng)或直接宕機(jī)時(shí),內(nèi)存中的數(shù)據(jù)將全部消失,在該分布式計(jì)算系統(tǒng)中引起事故擴(kuò)散,影響系統(tǒng)計(jì)算結(jié)果的準(zhǔn)確性。為此,本發(fā)明實(shí)施例提供的節(jié)點(diǎn)還包括數(shù)據(jù)持久化模塊。當(dāng)中心調(diào)度節(jié)點(diǎn)收到業(yè)務(wù)模塊處理、計(jì)算完畢的輸出數(shù)據(jù)流時(shí),通過(guò)對(duì)應(yīng)的有名管道發(fā)送給數(shù)據(jù)持久化模塊,數(shù)據(jù)持久化模塊按輸出數(shù)據(jù)流名將輸出數(shù)據(jù)流保存在磁盤(pán)上做持久化備份后,按照輸出數(shù)據(jù)流和下游節(jié)點(diǎn)的訂閱關(guān)系,將輸出數(shù)據(jù)流發(fā)送到以下游節(jié)點(diǎn)命名的共享內(nèi)存隊(duì)列上,由傳輸模塊統(tǒng)一發(fā)送。進(jìn)一步的,中心調(diào)度模塊還負(fù)責(zé)在指定端口上監(jiān)聽(tīng)上游海量節(jié)點(diǎn)的請(qǐng)求,建立連接,并將連接派發(fā)給合適的業(yè)務(wù)模塊執(zhí)行。由于在本分布式計(jì)算系統(tǒng)中,每個(gè)節(jié)點(diǎn)管理上游節(jié)點(diǎn)的多個(gè)連接請(qǐng)求,可以利用多路復(fù)用技術(shù)epoll。節(jié)點(diǎn)中包括的傳輸模塊、中心調(diào)度模塊和數(shù)據(jù)持久化模塊都是通過(guò)epoll管理多個(gè)事件源,并通過(guò)管道或是生產(chǎn)者-消費(fèi)者模型的中間隊(duì)列方式耦合。在本分布式計(jì)算系統(tǒng)中,所有的節(jié)點(diǎn)既是客戶端,又是服務(wù)器,將高性能網(wǎng)絡(luò)服務(wù)器處理高并發(fā)的網(wǎng)絡(luò)模式移植到節(jié)點(diǎn)中,是其支持高連接數(shù)、高吞吐量和高時(shí)效性的關(guān)鍵。本分布式計(jì)算系統(tǒng)的節(jié)點(diǎn)的核心模塊都是采取這種模式,傳輸模塊通過(guò)epoll管理輸入數(shù)據(jù)流的接收和輸出數(shù)據(jù)流的發(fā)送,中心調(diào)度模塊和數(shù)據(jù)持久化模塊通過(guò)epoll管理用于模塊之間數(shù)據(jù)傳輸?shù)墓艿蓝丝?。所有模塊并行處理并異步執(zhí)行邏輯,通過(guò)各種進(jìn)程間通信方式藕合。這樣的結(jié)構(gòu)使得本分布式計(jì)算系統(tǒng)可以最大化利用中央處理器(centralprocessingunit,簡(jiǎn)稱cpu)資源和輸入輸出(i/o)資源,擁有極大的吞吐量和數(shù)據(jù)處理能力。中心調(diào)度模塊還負(fù)責(zé)在節(jié)點(diǎn)啟動(dòng)時(shí)的初始化和監(jiān)聽(tīng)工作。中心調(diào)度模塊負(fù)責(zé)監(jiān)聽(tīng)指定端口并接收來(lái)自外部節(jié)點(diǎn)的連接請(qǐng)求并初始化業(yè)務(wù)模塊的線程。中心調(diào)度模塊根據(jù)每個(gè)業(yè)務(wù)模塊的線程的負(fù)載情況決定將包裝成“任務(wù)”的連接分配給哪一個(gè)線程執(zhí)行。這里體現(xiàn)了單線程非阻塞模式的優(yōu)化,在單線程非阻塞模式中,只有一個(gè)線程,它負(fù)責(zé)處理所有的連接,不僅對(duì)連接的處理無(wú)法分派到多核上進(jìn)行,限制了對(duì)稱多處理(symmetricalmulti-processing,簡(jiǎn)稱smp)的優(yōu)勢(shì),也會(huì)使任務(wù)隊(duì)列堆積過(guò)長(zhǎng)導(dǎo)致排在尾端的任務(wù)長(zhǎng)時(shí)間得不到響應(yīng)。本分布式處理系統(tǒng)采用的多線程服務(wù)器模型(oneloopperthread)能夠很好地解決了這一問(wèn)題。本分布式處理系統(tǒng)采用了自適應(yīng)負(fù)載均衡的策略決定中心調(diào)度模塊啟動(dòng)多少個(gè)線程,以及接收到的新“任務(wù)”放入哪一個(gè)線程執(zhí)行。具體的,中心調(diào)度模塊會(huì)實(shí)時(shí)監(jiān)控節(jié)點(diǎn)的負(fù)載,當(dāng)cpu占用率和內(nèi)存占用率過(guò)高時(shí),說(shuō)明此時(shí)并發(fā)的線程太多,中心調(diào)度模塊將隨機(jī)選擇線程,在其任務(wù)處理結(jié)束之后關(guān)閉它們以減少節(jié)點(diǎn)服務(wù)器的任務(wù)并發(fā)量;反之,當(dāng)cpu占用率低于過(guò)低時(shí),中心調(diào)度模塊會(huì)初始化新的線程處理連接。中心調(diào)度模塊通過(guò)最小連接調(diào)度算法將連接分派到具有最少連接的線程上去,分派的方式是將連接包裝成任務(wù)投遞到的任務(wù)隊(duì)列中。常用的負(fù)載均衡算法有輪詢調(diào)度法、帶權(quán)值的輪詢調(diào)度法、最小連接調(diào)度法、散列調(diào)度法等,在這里任務(wù)連接數(shù)可以近似表示線程的“工作量”。傳輸模塊負(fù)責(zé)對(duì)等節(jié)點(diǎn)的數(shù)據(jù)傳輸,包括接收來(lái)自上游節(jié)點(diǎn)的輸入數(shù)據(jù)流和向下游節(jié)點(diǎn)推送的輸出數(shù)據(jù)流,傳輸模塊相當(dāng)于分布式處理系統(tǒng)的路由器,傳輸模塊使節(jié)點(diǎn)的數(shù)據(jù)傳輸和上層應(yīng)用邏輯完全分離,對(duì)上層屏蔽了數(shù)據(jù)傳輸?shù)募?xì)節(jié),而路由則完全根據(jù)zookeeper服務(wù)器的mode結(jié)構(gòu)目錄。同樣的,為了管理多個(gè)i/o數(shù)據(jù)源,傳輸模塊使用了單線程非阻塞的多路復(fù)用模型。一個(gè)節(jié)點(diǎn)在整個(gè)框架中時(shí)而扮演客戶端的角色,時(shí)而扮演服務(wù)器端的角色,但其讀寫(xiě)都是通過(guò)epoll事件循環(huán)統(tǒng)一調(diào)度的,這是傳輸控制的核心所在。很多流式計(jì)算系統(tǒng)不支持?jǐn)帱c(diǎn)續(xù)傳的功能,因?yàn)榧僭O(shè)了數(shù)據(jù)流一次性通過(guò)系統(tǒng),當(dāng)節(jié)點(diǎn)故障或者計(jì)算邏輯出錯(cuò)時(shí),只能讓原始的數(shù)據(jù)流重新通過(guò)系統(tǒng)再執(zhí)行一次計(jì)算,不僅浪費(fèi)了資源,特別是在數(shù)據(jù)流有唯一性且不可重現(xiàn)時(shí),最后的輸出結(jié)果將不包含這部分?jǐn)?shù)據(jù)流,系統(tǒng)的準(zhǔn)確性大大降低。本分布式計(jì)算系統(tǒng)針對(duì)這一弊端在框架節(jié)點(diǎn)中加入持久化模塊用以支持?jǐn)帱c(diǎn)續(xù)傳、差錯(cuò)重傳的功能。這就要求參與數(shù)據(jù)傳送的雙方在正式傳送數(shù)據(jù)流前進(jìn)行一次協(xié)議,下游節(jié)點(diǎn)通知上游節(jié)點(diǎn)前一次數(shù)據(jù)流傳送終止的位置。數(shù)據(jù)傳輸模塊根據(jù)epoll異步讀寫(xiě)的特點(diǎn),實(shí)現(xiàn)一個(gè)狀態(tài)機(jī),一個(gè)簡(jiǎn)單的類(lèi)似tcp/ip的數(shù)據(jù)傳輸協(xié)議,為數(shù)據(jù)的斷點(diǎn)續(xù)傳提供支持,保證數(shù)據(jù)的準(zhǔn)確性和真實(shí)性。在一般意義上的c/s模式中,由客戶端向服務(wù)器端發(fā)起資源請(qǐng)求,服務(wù)器端響應(yīng)建立tcp連接而后開(kāi)始向客戶端傳輸數(shù)據(jù);但在實(shí)時(shí)流計(jì)算框架中,上游數(shù)據(jù)流的傳送并不是由下游節(jié)點(diǎn)的請(qǐng)求來(lái)驅(qū)動(dòng),因?yàn)閿?shù)據(jù)流是不間斷、流速波動(dòng)的數(shù)據(jù)集,下游節(jié)點(diǎn)無(wú)法預(yù)知上游數(shù)據(jù)流到來(lái)的時(shí)間點(diǎn),不僅如此,還會(huì)因?yàn)閷?duì)下游節(jié)點(diǎn)請(qǐng)求的確認(rèn)和解析增加系統(tǒng)延時(shí),所以本分布式處理系統(tǒng)數(shù)據(jù)傳輸?shù)姆绞绞巧嫌蜗蛳掠巍巴扑汀倍皇窍掠蜗蛏嫌巍袄瓌?dòng)”,即客戶端(上游節(jié)點(diǎn))向服務(wù)器(下游節(jié)點(diǎn))請(qǐng)求發(fā)送數(shù)據(jù),雙方通過(guò)自定義的協(xié)議確定數(shù)據(jù)的內(nèi)容后,由客戶端主動(dòng)推送數(shù)據(jù),最大程度地減小了延時(shí)。具體的,每個(gè)線程在初始化時(shí)啟動(dòng)數(shù)據(jù)傳輸模塊,當(dāng)線程的任務(wù)隊(duì)列中有中心調(diào)度模塊投遞的任務(wù)時(shí),傳輸模塊取出任務(wù)中的連接端口,加入到自己的epoll事件循環(huán)中。傳輸模塊從連接中讀取輸入數(shù)據(jù)流并按輸入數(shù)據(jù)流的名稱切分,當(dāng)屬于某個(gè)輸入數(shù)據(jù)流的數(shù)據(jù)項(xiàng)第一次被傳輸模塊接收時(shí),傳輸模塊會(huì)建立以輸入數(shù)據(jù)流名命名的有名(fifo)管道,以“寫(xiě)”標(biāo)志打開(kāi)該管道(為了向管道中寫(xiě)數(shù)據(jù))并傳送輸入數(shù)據(jù)流;同時(shí)將輸入數(shù)據(jù)流名通過(guò)套接字(socket)發(fā)送給中心調(diào)度模塊,中心調(diào)度模塊收到輸入數(shù)據(jù)流名后,以“讀”標(biāo)志打開(kāi)以該輸入數(shù)據(jù)流名命名的fifo管道,接收傳輸模塊發(fā)送的切分完畢的輸入數(shù)據(jù)流。中心調(diào)度模塊是框架節(jié)點(diǎn)的樞紐,負(fù)責(zé)將輸入流送入業(yè)務(wù)模塊,計(jì)算后再以輸出數(shù)據(jù)流的形式回到中心調(diào)度模塊。中心調(diào)度模塊會(huì)根據(jù)節(jié)點(diǎn)負(fù)載決定啟動(dòng)的任務(wù)算子的數(shù)量,啟動(dòng)次序是依據(jù)任務(wù)優(yōu)先級(jí)計(jì)算的,優(yōu)先級(jí)的影響因子包括該業(yè)務(wù)在整個(gè)任務(wù)中的“重要程度”、節(jié)點(diǎn)的運(yùn)行狀況、任務(wù)算子的類(lèi)型等等。中心調(diào)度模塊會(huì)通過(guò)zookeeper服務(wù)器實(shí)時(shí)獲取數(shù)據(jù)流和外部處理任務(wù)的訂閱關(guān)系(一個(gè)任務(wù)實(shí)例可能會(huì)依賴于多個(gè)輸入數(shù)據(jù)流),將接收到的數(shù)據(jù)流放入以任務(wù)名命名的鏈表中。當(dāng)用很小的流量使cpu滿負(fù)荷或者用很小的cpu占用率使流量占滿網(wǎng)卡時(shí),多線程并不能帶來(lái)系統(tǒng)性能的提升,反而會(huì)帶來(lái)線程間切換、cpu爭(zhēng)用的性能損耗。但當(dāng)i/o操作和cpu計(jì)算在時(shí)間上“重疊”時(shí),多線程可以有效地降低系統(tǒng)延時(shí)。如果僅靠單線程既要負(fù)責(zé)從傳輸模塊接收輸入數(shù)據(jù)流,又要負(fù)責(zé)邏輯計(jì)算,必然會(huì)因?yàn)楹臅r(shí)的i/o操作使處理任務(wù)等待,cpu閑置,增加響應(yīng)延遲。因此本分布式處理系統(tǒng)用內(nèi)部線程池中的多工作線程執(zhí)行任務(wù)算子。中心調(diào)度模塊針對(duì)所有處于就緒狀態(tài)的任務(wù)算子維護(hù)一個(gè)優(yōu)先級(jí)隊(duì)列,每當(dāng)優(yōu)先級(jí)重排后,根據(jù)線程池的容量取出相應(yīng)數(shù)量的任務(wù)算子執(zhí)行。為了保證節(jié)點(diǎn)的負(fù)載穩(wěn)定,線程池中工作線程的數(shù)量根據(jù)需要根據(jù)節(jié)點(diǎn)負(fù)載自適應(yīng)調(diào)整,即:如果線程池中的線程在執(zhí)行任務(wù)時(shí),密集計(jì)算所占的時(shí)間比重為p(0<p<=1),而系統(tǒng)一共有c個(gè)cpu,為了讓這c個(gè)cpu均參與執(zhí)行而又不過(guò)載,線程池大小的經(jīng)驗(yàn)公式t=[c/p]。對(duì)這一策略進(jìn)行邊界條件驗(yàn)證:假設(shè)c=8,p=1.0,線程池的任務(wù)完全是密集計(jì)算,則t=8。因?yàn)?個(gè)活動(dòng)線程就能讓8個(gè)cpu飽和,cpu資源己經(jīng)用盡,更多的線程數(shù)量并不能提高效率。假設(shè)c=8,p=0.5,線程池的任務(wù)一半是cpu密集型,一半是i/o密集型,則t=16??紤]操作系統(tǒng)能靈活合理地調(diào)度睡眠(sleeping)/寫(xiě)磁盤(pán)(writing)/執(zhí)行(running)線程,那么大概16個(gè)“50%繁忙的線程”能讓8個(gè)cpu滿負(fù)荷運(yùn)轉(zhuǎn),啟動(dòng)更多的線程并不能提高吞吐量,反而因?yàn)樵黾由舷挛那袚Q的開(kāi)銷(xiāo)而降低性能。t可以取一個(gè)固定值,比如5*c。為了增加框架的健壯性,在節(jié)點(diǎn)中添加了數(shù)據(jù)持久化模塊,該模塊充當(dāng)磁盤(pán)隊(duì)列的角色,它遵循隊(duì)列先進(jìn)先出(fifo)的語(yǔ)義。該模塊把處理完畢的輸出數(shù)據(jù)流保存在磁盤(pán)上。為了避免磁盤(pán)容量膨脹,持久化模塊賦給每條數(shù)據(jù)項(xiàng)一定的過(guò)期時(shí)間并定期將它們從磁盤(pán)上刪除。提供數(shù)據(jù)化服務(wù)使本分布式處理系統(tǒng)有別于其他流式計(jì)算系統(tǒng):首先,解決了上下游節(jié)點(diǎn)處理數(shù)據(jù)流速度不匹配的問(wèn)題。特別是當(dāng)上游節(jié)點(diǎn)的發(fā)送速度遠(yuǎn)大于下游節(jié)點(diǎn)的處理速度時(shí),會(huì)有大量的數(shù)據(jù)包在上游節(jié)點(diǎn)內(nèi)核的socket緩沖區(qū)中堆積而無(wú)法發(fā)送,導(dǎo)致內(nèi)存占用膨脹而使系統(tǒng)運(yùn)行緩慢。數(shù)據(jù)持久化模塊在上下游節(jié)點(diǎn)中間做了一層緩沖,由于上游節(jié)點(diǎn)發(fā)送的數(shù)據(jù)總是從持久化模塊中取得,所以在該模塊中引入流量控制機(jī)制可以解決這一問(wèn)題。其次,提供了斷點(diǎn)續(xù)傳和差錯(cuò)重傳的功能。在已有的數(shù)據(jù)流計(jì)算系統(tǒng)中,數(shù)據(jù)流一次性經(jīng)過(guò)系統(tǒng)內(nèi)存,數(shù)據(jù)無(wú)法恢復(fù)和重現(xiàn),所以系統(tǒng)對(duì)故障非常敏感,容錯(cuò)性較差。本分布式處理系統(tǒng)節(jié)點(diǎn)在傳輸模塊中實(shí)現(xiàn)了定位傳輸協(xié)議用以定位數(shù)據(jù)流曾經(jīng)的傳輸位置,并從持久化模塊中取出相應(yīng)位置的數(shù)據(jù)實(shí)現(xiàn)數(shù)據(jù)流的恢復(fù)。類(lèi)似于傳輸模塊與中心調(diào)度模塊協(xié)作完成輸入數(shù)據(jù)流傳輸?shù)姆绞?,?shù)據(jù)持久化模塊長(zhǎng)期監(jiān)聽(tīng)一個(gè)指定的端口并加入到epoll句柄中,當(dāng)接收到中心調(diào)度模塊發(fā)送的輸出數(shù)據(jù)流名時(shí),以“讀”標(biāo)志打開(kāi)fifo管道并將管道文件描述符加入到epoll循環(huán)中。數(shù)據(jù)持久化模塊從管道中持續(xù)讀取處理完畢的輸出數(shù)據(jù)流,存入以輸出數(shù)據(jù)流名命名的磁盤(pán)隊(duì)列中。磁盤(pán)隊(duì)列中的數(shù)據(jù)項(xiàng)以key-value形式儲(chǔ)存,key值是數(shù)據(jù)項(xiàng)的時(shí)間戳。這樣方便差錯(cuò)重傳時(shí)從硬盤(pán)隊(duì)列中快速定位數(shù)據(jù)項(xiàng)。數(shù)據(jù)持久化模塊通過(guò)開(kāi)源軟件tokyocabinet實(shí)現(xiàn)了高效的磁盤(pán)隊(duì)列。tokyocabinet(簡(jiǎn)稱tc)是一個(gè)用c語(yǔ)言編寫(xiě)的數(shù)據(jù)存儲(chǔ)引擎,以key-value的方式存儲(chǔ)數(shù)據(jù),支持hash,b+tree,hashtable等多種數(shù)據(jù)結(jié)構(gòu)且讀寫(xiě)速度極快。最后,數(shù)據(jù)持久化模塊通過(guò)查詢zookeeper服務(wù)器上輸出數(shù)據(jù)流與下游節(jié)點(diǎn)的訂閱關(guān)系,將已經(jīng)在磁盤(pán)隊(duì)列中備份好的數(shù)據(jù)發(fā)送到以下游節(jié)點(diǎn)(node)命名的共享內(nèi)存隊(duì)列中,為了讓傳輸模塊在接收和發(fā)送數(shù)據(jù)時(shí)呈現(xiàn)一致的行為,數(shù)據(jù)持久化模塊將下游節(jié)點(diǎn)名封裝成任務(wù)放到任務(wù)隊(duì)列中,傳輸模塊通過(guò)解析任務(wù)類(lèi)型為“內(nèi)部”(從上游節(jié)點(diǎn)接收數(shù)據(jù)為“外部”任務(wù),從共享隊(duì)列取數(shù)據(jù)是“內(nèi)部”任務(wù)),取出任務(wù)中的下游節(jié)點(diǎn)名,從相應(yīng)的共享內(nèi)存隊(duì)列中取出數(shù)據(jù),并根據(jù)zookeeper中該下游節(jié)點(diǎn)的配置(ip)發(fā)送數(shù)據(jù)。共享消息隊(duì)列也是類(lèi)unix系統(tǒng)中進(jìn)程間通信(ipc)的一種方式,多個(gè)進(jìn)程可以讀取或添加隊(duì)列中的消息。共享消息隊(duì)列是隨內(nèi)核持續(xù)的消息鏈表,其中的消息具有規(guī)定的格式、特定的類(lèi)型和相應(yīng)的優(yōu)先級(jí)。本發(fā)明實(shí)施例中,上述這四個(gè)模塊之間通過(guò)顯式的進(jìn)程間通信方法(inter-processcommunication,簡(jiǎn)稱ipc)進(jìn)行信息的共享和復(fù)用,通過(guò)相互協(xié)作共同構(gòu)成了分布式計(jì)算系統(tǒng)的節(jié)點(diǎn)。以上所述,僅為本發(fā)明的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本
技術(shù)領(lǐng)域
:的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)以所述權(quán)利要求的保護(hù)范圍為準(zhǔn)。當(dāng)前第1頁(yè)12當(dāng)前第1頁(yè)12
當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
大洼县| 连云港市| 仙游县| 益阳市| 遵化市| 玉门市| 黑山县| 罗江县| 江源县| 扎鲁特旗| 永年县| 株洲县| 吴堡县| 额济纳旗| 华安县| 古浪县| 宣武区| 洛扎县| 牙克石市| 达拉特旗| 五台县| 土默特左旗| 延安市| 监利县| 垣曲县| 大余县| 息烽县| 历史| 临海市| 临泽县| 扶风县| 乐清市| 汉源县| 台南市| 阿瓦提县| 伊宁市| 平果县| 通许县| 霍邱县| 左权县| 湛江市|