專利名稱:一種并發(fā)控制方法、控制節(jié)點(diǎn)及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信領(lǐng)域,尤其涉及一種并發(fā)控制方法、控制節(jié)點(diǎn)及系統(tǒng)。
背景技術(shù):
高并發(fā)技術(shù)是指對(duì)大量的事件在同一時(shí)刻進(jìn)行處理的技術(shù),例如當(dāng)網(wǎng)絡(luò)服務(wù)器同時(shí)被多個(gè)客戶端訪問(wèn)時(shí),就需要網(wǎng)絡(luò)服務(wù)器可以同時(shí)響應(yīng)每個(gè)客戶端的請(qǐng)求;在分布式集群系統(tǒng)中,每個(gè)集群內(nèi)存在大量的節(jié)點(diǎn),大量節(jié)點(diǎn)同時(shí)變化會(huì)造成系統(tǒng)負(fù)荷瞬間增大,因此分布式集群系統(tǒng)的可靠性可以通過(guò)在同一時(shí)刻模擬觸發(fā)大量節(jié)點(diǎn)發(fā)生狀態(tài)變化來(lái)得到;在工業(yè)控制等其他領(lǐng)域也存在被控制節(jié)點(diǎn)需要在同一時(shí)刻執(zhí)行某種動(dòng)作的場(chǎng)景?,F(xiàn)有高并發(fā)的控制大多采用輪詢或多線程的方式來(lái)實(shí)現(xiàn),具體的輪詢方式是控制端依次向被控制端發(fā)送控制消息,假設(shè)被控制端的個(gè)數(shù)為M,控制端向被控制端發(fā)送控制消息的時(shí)間間隔為t,那么控制端向第一被控制端和最后一個(gè)被控制端發(fā)送控制消息的時(shí)延為(M-1) Xt ;多線程方式是創(chuàng)建X個(gè)線程,在每個(gè)線程中向被控制端發(fā)送控制消息,直到所有的被控制端接收到控制消息,其中,由于系統(tǒng)支持的線程個(gè)數(shù)有限,不能保證一次性創(chuàng)建的線程個(gè)數(shù)和被控制端個(gè)數(shù)一樣,因此當(dāng)利用X(X < Μ)個(gè)線程向M個(gè)被控制端的其中X個(gè)被控制端發(fā)送控制消息之后,需要銷毀當(dāng)前線程,并重新創(chuàng)建線程來(lái)向其他被控制端進(jìn)行發(fā)送控制消息,假設(shè)控制端通過(guò)創(chuàng)建的線程向被控制端發(fā)送控制消息的時(shí)間為t,那么控制端向第一被控制端和最后一個(gè)被控制端發(fā)送控制消息的時(shí)延為(x-1) Xt,其中,X為需要?jiǎng)?chuàng)建線程的次數(shù)。在實(shí)現(xiàn)上述請(qǐng)求處理的過(guò)程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)中至少存在如下問(wèn)題:若采用輪詢或多線程的方式,控制端向第一個(gè)被控制端和最后一個(gè)被控制端發(fā)送控制消息會(huì)存在時(shí)延,并會(huì)隨著被控制端個(gè)數(shù)的增加時(shí)延呈線性增長(zhǎng),并且在使用多線程的方式時(shí),由于單個(gè)控制端支持的線程個(gè)數(shù)有限,難以實(shí)現(xiàn)同時(shí)對(duì)數(shù)千個(gè)被控制端進(jìn)行控制,因此在要求同時(shí)對(duì)多個(gè)被控制端進(jìn)行控制的場(chǎng)景中,現(xiàn)有技術(shù)存在時(shí)延高,并發(fā)個(gè)數(shù)低的問(wèn)題。
發(fā)明內(nèi)容
本發(fā)明的實(shí)施例提供一種并發(fā)控制方法、控制節(jié)點(diǎn)及系統(tǒng),減少了對(duì)多個(gè)被控制端進(jìn)行并發(fā)控制的場(chǎng)景下的時(shí)延,同時(shí)保障了并發(fā)個(gè)數(shù)。本發(fā)明的第一方面,提供一種并發(fā)控制方法,所述方法包括:第一控制節(jié)點(diǎn)接收上一級(jí)控制節(jié)點(diǎn)發(fā)送的控制消息;其中,所述控制消息由最高一級(jí)的控制節(jié)點(diǎn)生成,用于控制被控制節(jié)點(diǎn)執(zhí)行所述控制消息指定的操作;將所述控制消息發(fā)送至與所述第一控制節(jié)點(diǎn)連接的全部下一級(jí)控制節(jié)點(diǎn),以便所述下一級(jí)控制節(jié)點(diǎn)繼續(xù)將所述控制消息向下發(fā)送,直至到達(dá)所述被控制節(jié)點(diǎn);或?qū)⑺隹刂葡l(fā)送至與所述第一控制節(jié)點(diǎn)連接的全部所述被控制節(jié)點(diǎn)。結(jié)合第一方面,在一種可能的實(shí)現(xiàn)方式中,在所述第一控制節(jié)點(diǎn)接收上一級(jí)節(jié)點(diǎn)發(fā)送的控制消息之前,還包括:
創(chuàng)建線程資源池;從所述線程資源池中獲取至少一個(gè)空閑線程;所述將所述控制消息發(fā)送至與所述第一控制節(jié)點(diǎn)連接的全部下一級(jí)控制節(jié)點(diǎn),包括:通過(guò)獲取的所述至少一個(gè)空閑線程將所述控制消息發(fā)送至所述與所述第一控制節(jié)點(diǎn)連接的全部下一級(jí)控制節(jié)點(diǎn);所述將所述控制消息發(fā)送至與所述第一控制節(jié)點(diǎn)連接的全部被控制節(jié)點(diǎn),包括:通過(guò)獲取的所述至少一個(gè)空閑線程將所述控制消息發(fā)送至所述與所述第一控制節(jié)點(diǎn)連接的全部被控制節(jié)點(diǎn)。結(jié)合第一方面和上述可能的實(shí)現(xiàn)方式,在另一種可能的實(shí)現(xiàn)方式中,在所述將所述控制消息發(fā)送至與所述第一控制節(jié)點(diǎn)連接的全部下一級(jí)控制節(jié)點(diǎn)或?qū)⑺隹刂葡l(fā)送至與所述第一控制節(jié)點(diǎn)連接的全部被控制節(jié)點(diǎn)之前,還包括:按照變長(zhǎng)壓縮技術(shù)對(duì)所述控制消息進(jìn)行壓縮;所述將所述控制消息發(fā)送至與所述第一控制節(jié)點(diǎn)連接的全部下一級(jí)控制節(jié)點(diǎn),包括:將所述壓縮后的控制消息發(fā)送至所述與所述第一控制節(jié)點(diǎn)連接的全部下一級(jí)控制節(jié)
占.
所述將所述控制消息發(fā)送至與所述第一控制節(jié)點(diǎn)連接的全部被控制節(jié)點(diǎn),包括:將所述壓縮后的控制消息發(fā)送至所述與所述第一控制節(jié)點(diǎn)連接的全部被控制節(jié)點(diǎn)。結(jié)合第一方面和上述可能的實(shí)現(xiàn)方式,在另一種可能的實(shí)現(xiàn)方式中,所述控制消息包含標(biāo)識(shí)信息,其中,所述標(biāo)識(shí)信息為所述下一級(jí)控制節(jié)點(diǎn)或所述被控制節(jié)點(diǎn)的進(jìn)程的標(biāo)識(shí)信息;所述將所述控制消息發(fā)送至與所述第一控制節(jié)點(diǎn)連接的全部下一級(jí)控制節(jié)點(diǎn)或?qū)⑺隹刂葡l(fā)送至與所述第一控制節(jié)點(diǎn)連接的全部被控制節(jié)點(diǎn),包括:根據(jù)所述標(biāo)識(shí)信息,按照預(yù)定算法查找所述標(biāo)識(shí)信息對(duì)應(yīng)的進(jìn)程的線程描述符;根據(jù)預(yù)設(shè)策略查找目標(biāo)文件描述符;其中,所述目標(biāo)文件描述符為所述第一控制節(jié)點(diǎn)發(fā)送所述控制消息至所述標(biāo)識(shí)信息對(duì)應(yīng)的進(jìn)程所需的文件描述符;根據(jù)所述線程描述符和所述目標(biāo)文件描述符將所述控制消息發(fā)送至與所述第一控制節(jié)點(diǎn)連接的全部所述下一級(jí)控制節(jié)點(diǎn)的進(jìn)程或?qū)⑺隹刂葡l(fā)送至與所述第一控制節(jié)點(diǎn)連接的全部所述被控制節(jié)點(diǎn)的進(jìn)程。結(jié)合第一方面和上述可能的實(shí)現(xiàn)方式,在另一種可能的實(shí)現(xiàn)方式中,所述根據(jù)預(yù)設(shè)策略查找目標(biāo)文件描述符,包括:從所述第一控制節(jié)點(diǎn)中存儲(chǔ)的所有文件描述符中選取的活躍文件描述符;根據(jù)二叉平衡樹(shù)算法對(duì)所述活躍文件描述符進(jìn)行排序,生成文件描述符序列;在所述文件描述符序列中查找所述目標(biāo)文件描述符。結(jié)合第一方面和上述可能的實(shí)現(xiàn)方式,在另一種可能的實(shí)現(xiàn)方式中,所述預(yù)定算法包括哈希算法。本發(fā)明的第二方面,提供一種控制節(jié)點(diǎn),包括:接收單元,用于接收上一級(jí)控制節(jié)點(diǎn)發(fā)送的控制消息;其中,所述控制消息由最高一級(jí)的控制節(jié)點(diǎn)生成,用于控制被控制節(jié)點(diǎn)執(zhí)行所述控制消息指定的操作;發(fā)送單元,用于將所述接收單元接收到的所述控制消息發(fā)送至與所述控制節(jié)點(diǎn)連接的全部下一級(jí)控制節(jié)點(diǎn),以便所述下一級(jí)控制節(jié)點(diǎn)繼續(xù)將所述控制消息向下發(fā)送,直至到達(dá)所述被控制節(jié)點(diǎn);或?qū)⑺鼋邮諉卧邮盏降乃隹刂葡l(fā)送至與所述控制節(jié)點(diǎn)連接的全部所述被控制節(jié)點(diǎn)。結(jié)合第二方面,在一種可能的實(shí)現(xiàn)方式中,還包括:創(chuàng)建單元,用于在所述接收單元接收上一級(jí)節(jié)點(diǎn)發(fā)送的控制消息之前,創(chuàng)建線程資源池;獲取單元,用于從所述創(chuàng)建單元?jiǎng)?chuàng)建的線程資源池中獲取至少一個(gè)空閑線程;所述發(fā)送單元,具體用于通過(guò)所述獲取單元獲取到的所述至少一個(gè)空閑線程將所述控制消息發(fā)送至所述與所述控制節(jié)點(diǎn)連接的全部下一級(jí)控制節(jié)點(diǎn)或通過(guò)所述獲取單元獲取到的所述至少一個(gè)空閑線程將所述控制消息發(fā)送至所述與所述控制節(jié)點(diǎn)連接的全部被控制節(jié)點(diǎn)。結(jié)合第二方面和上述可能的實(shí)現(xiàn)方式,在另一種可能的實(shí)現(xiàn)方式中,還包括:壓縮單元,用于在所述發(fā)送單元將所述控制消息發(fā)送至與所述控制節(jié)點(diǎn)連接的全部下一級(jí)控制節(jié)點(diǎn)或?qū)⑺隹刂葡l(fā)送至與所述控制節(jié)點(diǎn)連接的全部被控制節(jié)點(diǎn)之前,按照變長(zhǎng)壓縮技術(shù)對(duì)所述控制消息進(jìn)行壓縮;所述發(fā)送單元,具體用于將所述壓縮單元壓縮后的控制消息發(fā)送至所述與所述控制節(jié)點(diǎn)連接的全部下一級(jí)控制節(jié)點(diǎn)或?qū)⑺鰤嚎s單元壓縮后的控制消息發(fā)送至所述與所述控制節(jié)點(diǎn)連接的全部被控制節(jié)點(diǎn)。結(jié)合第二方面和上述可能的實(shí)現(xiàn)方式,在另一種可能的實(shí)現(xiàn)方式中,所述控制消息包含標(biāo)識(shí)信息,其中,所述標(biāo)識(shí)信息為所述下一級(jí)控制節(jié)點(diǎn)或所述被控制節(jié)點(diǎn)的進(jìn)程的標(biāo)識(shí)信息;所述發(fā)送單元,包括:第一查找模塊,用于根據(jù)所述標(biāo)識(shí)信息,按照預(yù)定算法查找所述標(biāo)識(shí)信息對(duì)應(yīng)的進(jìn)程的線程描述符;第二查找模塊,用于根據(jù)預(yù)設(shè)策略查找目標(biāo)文件描述符;其中,所述目標(biāo)文件描述符為所述控制節(jié)點(diǎn)發(fā)送所述控制消息至所述標(biāo)識(shí)信息對(duì)應(yīng)的進(jìn)程所需的文件描述符;發(fā)送模塊,用于根據(jù)所述第一查找模塊查找到的所述線程描述符和所述第二查找模塊查找到的所述目標(biāo)文件描述符將所述控制消息發(fā)送至與所述控制節(jié)點(diǎn)連接的全部所述下一級(jí)控制節(jié)點(diǎn)的進(jìn)程或?qū)⑺隹刂葡l(fā)送至與所述控制節(jié)點(diǎn)連接的全部所述被控制節(jié)點(diǎn)的進(jìn)程。結(jié)合第二方面和上述可能的實(shí)現(xiàn)方式,在另一種可能的實(shí)現(xiàn)方式中,所第二查找模塊,包括:選取子模塊,用于從所述控制節(jié)點(diǎn)中存儲(chǔ)的所有文件描述符中選取的活躍文件描述符;生成子模塊,用于根據(jù)二叉平衡樹(shù)算法對(duì)所述選取子模塊選取的所述活躍文件描述符進(jìn)行排序,生成文件描述符序列;查找子模塊,用于在所述生成子模塊生成的所述文件描述符序列中查找所述目標(biāo)文件描述符。結(jié)合第二方面和上述可能的實(shí)現(xiàn)方式,在另一種可能的實(shí)現(xiàn)方式中,所述預(yù)定算法包括哈希算法。 本發(fā)明的第三方面,提供一種并發(fā)控制系統(tǒng),包含M個(gè)被控制節(jié)點(diǎn)和N個(gè)控制節(jié)點(diǎn),N彡3,所述N個(gè)控制節(jié)點(diǎn)分K層部署,每個(gè)控制節(jié)點(diǎn)最多并行發(fā)送X個(gè)控制消息;第一層的控制節(jié)點(diǎn)最多與X個(gè)第二層的控制節(jié)點(diǎn)連接,所述第一層的控制節(jié)點(diǎn),用于生成所述控制信息;第m-Ι層的每個(gè)控制節(jié)點(diǎn)最多與X個(gè)第m層的控制節(jié)點(diǎn)連接;其中,I < m ^ K ;第K層的每個(gè)控制節(jié)點(diǎn)最多與X個(gè)被控制節(jié)點(diǎn)連接,以便所述M個(gè)被控制節(jié)點(diǎn)同時(shí)接收所述控制信息;其中第K層共Y個(gè)控制節(jié)點(diǎn),且XX Y ^ M ;其中,所述第一層的控制節(jié)點(diǎn),還用于將所述控制信息發(fā)送至與所述第一層的控制節(jié)點(diǎn)連接的全部第二層的控制節(jié)點(diǎn);所述第m-Ι層 的控制節(jié)點(diǎn),用于接收第m-2層的控制節(jié)點(diǎn)發(fā)送的所述控制信息,并將所述控制信息發(fā)送至與自身連接的所有第m層的控制節(jié)點(diǎn);所述第K層的控制節(jié)點(diǎn),用于接收第K-1層的控制節(jié)點(diǎn)發(fā)送的所述控制信息,并將所述控制信息發(fā)送至與自身連接的全部被控制節(jié)點(diǎn);所述被控制節(jié)點(diǎn),用于接收所述第K層的控制節(jié)點(diǎn)發(fā)送的控制信息,并執(zhí)行所述控制消息指定的操作。本發(fā)明實(shí)施例提供的并發(fā)控制方法、控制節(jié)點(diǎn)及系統(tǒng),在第一控制節(jié)點(diǎn)接收到上一級(jí)控制節(jié)點(diǎn)發(fā)送的控制消息之后,將該控制消息發(fā)送至與第一控制節(jié)點(diǎn)連接的全部下一級(jí)控制節(jié)點(diǎn),以便下一級(jí)控制節(jié)點(diǎn)繼續(xù)將控制消息向下發(fā)送,直至到達(dá)被控制節(jié)點(diǎn);或?qū)⒖刂葡l(fā)送至與第一控制節(jié)點(diǎn)連接的全部被控制節(jié)點(diǎn),減少了對(duì)多個(gè)被控制節(jié)點(diǎn)進(jìn)行并發(fā)控制的場(chǎng)景下的時(shí)延,同時(shí)保障了并發(fā)個(gè)數(shù)。
為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1為本發(fā)明實(shí)施例1提供的一種并發(fā)控制方法流程示意圖;圖2為本發(fā)明實(shí)施例2提供的一種并發(fā)控制方法流程示意圖;圖3為本發(fā)明實(shí)施例2提供的一種實(shí)現(xiàn)并發(fā)控制方法的架構(gòu)組成示意圖;圖4為本發(fā)明實(shí)施例3提供的一種控制節(jié)點(diǎn)組成示意圖;圖5為本發(fā)明實(shí)施例3提供的另一種控制節(jié)點(diǎn)組成示意圖;圖6為本發(fā)明實(shí)施例4提供的一種控制節(jié)點(diǎn)組成示意圖;圖7為本發(fā)明實(shí)施例5提供的一種并發(fā)控制系統(tǒng)組成示意圖。
具體實(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ù)的范圍。實(shí)施例1本發(fā)明實(shí)施例提供一種并發(fā)控制方法,如圖1所示,該方法可以包括:101、第一控制節(jié)點(diǎn)接收上一級(jí)控制節(jié)點(diǎn)發(fā)送的控制消息。其中,為了使得被控制節(jié)點(diǎn)可以在同一時(shí)刻接收到控制節(jié)點(diǎn)發(fā)送的控制消息,本發(fā)明實(shí)施將控制節(jié)點(diǎn)分層部署,當(dāng)最高一級(jí)的控制節(jié)點(diǎn)需要發(fā)出控制請(qǐng)求時(shí),可以產(chǎn)生控制消息,并將控制消息發(fā)送出去直到到達(dá)第一控制節(jié)點(diǎn)的上一級(jí)控制節(jié)點(diǎn),第一控制節(jié)點(diǎn)的上一級(jí)控制節(jié)點(diǎn)接收到控制消息之后,繼續(xù)將控制消息向下發(fā)送至與其相連的全部控制節(jié)點(diǎn),其中包括第一控制節(jié)點(diǎn),這樣第一控制節(jié)點(diǎn)便可以接收到上一級(jí)控制節(jié)點(diǎn)發(fā)送的控制消息。其中,該控制消息用于控制被控制節(jié)點(diǎn)執(zhí)行該控制消息指定的操作。102、第一控制節(jié)點(diǎn)將控制消息發(fā)送至與第一控制節(jié)點(diǎn)連接的全部下一級(jí)控制節(jié)點(diǎn),以便下一級(jí)控制節(jié)點(diǎn)繼續(xù)將控制消息向下發(fā)送,直至到達(dá)被控制節(jié)點(diǎn),或?qū)⒖刂葡l(fā)送至與第一控制節(jié)點(diǎn)連接的全部被控制節(jié)點(diǎn)。其中,若與第一控制節(jié)點(diǎn)相連的是下一級(jí)控制節(jié)點(diǎn),那么當(dāng)?shù)谝豢刂乒?jié)點(diǎn)接收到上一級(jí)控制節(jié)點(diǎn)發(fā)送的控制消息之后,便可以將該控制消息發(fā)送至與自身相連的全部下一級(jí)控制節(jié)點(diǎn),以便下一級(jí)控制節(jié)點(diǎn)繼續(xù)將控制消息向下發(fā)送,直至將控制消息發(fā)送到被控制節(jié)點(diǎn);若與第一控制節(jié)點(diǎn)相連的是被控制節(jié)點(diǎn),那么當(dāng)?shù)谝豢刂乒?jié)點(diǎn)接收到上一級(jí)控制節(jié)點(diǎn)發(fā)送的控制消息之后,便可以將該控制消息直接發(fā)送至與自身連接的全部被控制節(jié)點(diǎn),這樣被控制端便可以在同一時(shí)刻接收到控制節(jié)點(diǎn)發(fā)送的控制消息,即被控制端中的所有的被控制節(jié)點(diǎn)便可以同一時(shí)刻接收到控制端發(fā)送的控制消息,降低了控制節(jié)點(diǎn)之間接收到控制消息的時(shí)延。其中,為了達(dá)到高并發(fā)的要求,在每一級(jí)控制節(jié)點(diǎn)向下發(fā)送控制消息的時(shí),可以在同一時(shí)刻將控制消息發(fā)送至與其相連的全部的下一級(jí)控制節(jié)點(diǎn)。并且,在本發(fā)明實(shí)施例提供的控制節(jié)點(diǎn)的分層部署結(jié)構(gòu),在分層部署控制節(jié)點(diǎn)的時(shí)候,可以根據(jù)被控制節(jié)點(diǎn)的個(gè)數(shù)確定如何分層部署控制節(jié)點(diǎn),這樣便可以實(shí)現(xiàn)在大量(數(shù)千個(gè)甚至數(shù)萬(wàn)個(gè))被控制節(jié)點(diǎn)在同一時(shí)刻接收到控制節(jié)點(diǎn)發(fā)送的控制消息,提高了并發(fā)個(gè)數(shù)。本發(fā)明實(shí)施例提供的一種并發(fā)控制方法,在第一控制節(jié)點(diǎn)接收到上一級(jí)控制節(jié)點(diǎn)發(fā)送的控制消息之后,將該控制消息發(fā)送至與第一控制節(jié)點(diǎn)連接的全部下一級(jí)控制節(jié)點(diǎn),以便下一級(jí)控制節(jié)點(diǎn)繼續(xù)將控制消息向下發(fā)送,直至到達(dá)被控制節(jié)點(diǎn);或?qū)⒖刂葡l(fā)送至與第一控制節(jié)點(diǎn)連接的全部被控制節(jié)點(diǎn),減少了對(duì)多個(gè)被控制節(jié)點(diǎn)進(jìn)行并發(fā)控制的場(chǎng)景下的時(shí)延,同時(shí)保障了并發(fā)個(gè)數(shù)。實(shí)施例2本發(fā)明實(shí)施例提供一種并發(fā)控制方法,如圖2所示,該方法可以包括:為了方便本領(lǐng)域技術(shù)人員的理解,本發(fā)明實(shí)施例以分布式集群系統(tǒng)中系統(tǒng)可靠性評(píng)估的為例??梢岳斫獾氖?,在分布式集群系統(tǒng)中,大量集群節(jié)點(diǎn)在同一時(shí)刻加入或退出集群,會(huì)使得系統(tǒng)表項(xiàng)在同一時(shí)刻進(jìn)行刷新,使得系統(tǒng)負(fù)荷瞬間增大,因此為了評(píng)估系統(tǒng)的可靠性,可以模擬多個(gè)集群節(jié)點(diǎn)在同一時(shí)刻加入集群或退出集群來(lái)使得大量系統(tǒng)表項(xiàng)在同一時(shí)刻刷新的測(cè)試,進(jìn)而檢驗(yàn)系統(tǒng)的容錯(cuò)能力,此時(shí)測(cè)試控制端需要在同一時(shí)刻向大量的(數(shù)千個(gè)甚至數(shù)萬(wàn)個(gè))被控制節(jié)點(diǎn)發(fā)送控制請(qǐng)求,觸發(fā)節(jié)點(diǎn)加入、退出集群的操作??刂贫税辽偃齻€(gè)控制節(jié)點(diǎn),且控制節(jié)點(diǎn)進(jìn)行分層部署,控制端的分層部署架構(gòu)可以參考圖3所示,具體的當(dāng)總控制節(jié)點(diǎn)需要對(duì)被控制節(jié)點(diǎn)進(jìn)行控制時(shí),總控制節(jié)點(diǎn)可以發(fā)起調(diào)用,并生成控制消息,然后可以執(zhí)行步驟201到步驟206后,將控制消息發(fā)送至與其連接的全部下一級(jí)控制節(jié)點(diǎn)或?qū)⒖刂葡l(fā)送至與其連接的全部被控制節(jié)點(diǎn)。需要說(shuō)明的是,控制端的分層部署架構(gòu)可以參考本發(fā)明實(shí)施例中的描述及示意圖,而對(duì)于具體的分層部署架構(gòu)中控制節(jié)點(diǎn)的部署層數(shù)以及每個(gè)控制節(jié)點(diǎn)連接的下一級(jí)控制節(jié)點(diǎn)的個(gè)數(shù)可以根據(jù)實(shí)際操作環(huán)境的需要進(jìn)行部署,本發(fā)明實(shí)施例在此不做作限制。為了進(jìn)一步的減小控制消息在控制節(jié)點(diǎn)之間發(fā)送的時(shí)延,本發(fā)明實(shí)施例在每一級(jí)的每個(gè)控制節(jié)點(diǎn)中采用如下技術(shù),使得控制消息的轉(zhuǎn)發(fā)的時(shí)延進(jìn)一步的減小。具體的可以是:201、創(chuàng)建線程資源池。其中,當(dāng)控制節(jié)點(diǎn)需要對(duì)被控制節(jié)點(diǎn)進(jìn)行控制時(shí),第一控制節(jié)點(diǎn)可以提前創(chuàng)建指定大小的線程資源池,這樣可以避免第一控制節(jié)點(diǎn)在接收到控制消息之后為每個(gè)任務(wù)創(chuàng)建和銷毀線程帶來(lái)的時(shí)間開(kāi)銷,也可以避免在第一控制節(jié)點(diǎn)接收到控制消息時(shí)申請(qǐng)創(chuàng)建大量線程造成的時(shí)延。202、接收上一級(jí)控制節(jié)點(diǎn)發(fā)送的控制消息。其中,當(dāng)控制端需要對(duì)被控制端進(jìn)行控制時(shí),總的控制節(jié)點(diǎn)產(chǎn)生控制消息,并將控制消息向下發(fā)送,當(dāng)?shù)谝豢刂乒?jié)點(diǎn)的上一級(jí)控制節(jié)點(diǎn)接收到控制消息時(shí),將控制消息發(fā)送至第一控制節(jié)點(diǎn),此時(shí)第一控制節(jié)點(diǎn)便可以接收到與其相連的上一級(jí)控制節(jié)點(diǎn)發(fā)送的控制消息。203、按照變長(zhǎng)壓縮技術(shù)對(duì)控制消息進(jìn)行壓縮。其中,當(dāng)?shù)谝豢刂乒?jié)點(diǎn)接收到上一級(jí)控制節(jié)點(diǎn)發(fā)送的控制消息之后,可以使用變長(zhǎng)壓縮技術(shù)對(duì)接收到的控制消息進(jìn)行壓縮,以便壓縮第一控制節(jié)點(diǎn)的傳輸數(shù)據(jù)量,這樣可以進(jìn)一步的降低控制端向被控制端發(fā)送控制消息的時(shí)延。具體的變長(zhǎng)壓縮技術(shù)的規(guī)則如下:變長(zhǎng)編碼的整數(shù)可能包含多個(gè)字節(jié)(byte),對(duì)于每個(gè)byte的8位,其中后7位表示數(shù)值,最高的一位表示是否還有另一個(gè)byte,O表示沒(méi)有,I表示有,并且越前面的byte表示數(shù)值的低位,越后面的byte表示數(shù)值的高位。例如300的2進(jìn)制編碼為:0000 0000 0000
00000000 0001 0010 1100,根據(jù)變長(zhǎng)壓縮技術(shù)的規(guī)則,截取最后的7為放在第一個(gè)byte,則第一 byte為1010 1100,其中最高位I表示,后續(xù)還有byte ;接著剩下的內(nèi)容放到第二個(gè)byte,為0000 0010,其中最高位O表示,后續(xù)無(wú)byte,這個(gè)數(shù)到這里截止了,因此300經(jīng)過(guò)變長(zhǎng)壓縮后,變?yōu)?字節(jié),值為:1010 1100 0000 0010。由此可以看出對(duì)數(shù)據(jù)按照變長(zhǎng)壓縮技術(shù)進(jìn)行壓縮之后,傳輸?shù)臄?shù)據(jù)量有了明顯的減少,進(jìn)而也就降低了控制端向被控制端發(fā)送控制消息的時(shí)延。204、根據(jù)標(biāo)識(shí)信息,按照預(yù)定算法查找標(biāo)識(shí)信息對(duì)應(yīng)的進(jìn)程的線程描述符。其中,控制消息中包含標(biāo)識(shí)信息,該標(biāo)識(shí)信息為下一級(jí)控制節(jié)點(diǎn)或被控制節(jié)點(diǎn)的進(jìn)程的標(biāo)識(shí)信息;第一控制節(jié)點(diǎn)在接收到控制消息,并對(duì)其進(jìn)行變成編碼之后,可以將壓縮后的控制消息繼續(xù)向下轉(zhuǎn)發(fā),由于第一控制節(jié)點(diǎn)向下轉(zhuǎn)發(fā)控制消息,其實(shí)是將該控制消息發(fā)送給下一級(jí)控制節(jié)點(diǎn)或者是被控制節(jié)點(diǎn)的進(jìn)程(IP地址+端口號(hào)標(biāo)示),因此第一控制節(jié)點(diǎn)可以根據(jù)控制消息中包含的標(biāo)識(shí)信息查找與標(biāo)識(shí)信息對(duì)應(yīng)的進(jìn)程的線程描述符,為了盡快超找到進(jìn)程的線程描述符,可以使用復(fù)雜度為0(1)的字符串哈希算法,在線性時(shí)間內(nèi)查找的進(jìn)程相應(yīng)的線程描述符。其中0(1)為一種通用的算法復(fù)雜度表示方式,表示在N個(gè)元素中查找指定的一個(gè)元素,平均時(shí)間是I。205、根據(jù)預(yù)設(shè)策略查找目標(biāo)文件描述符。其中,當(dāng)?shù)谝豢刂贫瞬檎业竭M(jìn)程對(duì)應(yīng)的線程描述符之后,接下來(lái)就需要將控制消息通過(guò)操作系統(tǒng)向下轉(zhuǎn)發(fā),此時(shí)便需要在內(nèi)核態(tài)查找發(fā)送控制消息到指定進(jìn)程所需的目標(biāo)文件描述符,以便控制消息能夠正確的從指定的硬件發(fā)送出去。在文件描述符的查找中使用活躍數(shù)相關(guān)的底層異步接口,以便達(dá)到高速查找的目的。具體的查找過(guò)程可以包括以下步驟205a、步驟205b及步驟205c。205a、從第一控制節(jié)點(diǎn)中存儲(chǔ)的所有文件描述符中選取的活躍文件描述符。其中,為了避免在進(jìn)行文件描述符查找時(shí),掃描非活躍文件描述符導(dǎo)致的時(shí)延增大的問(wèn)題,可以首先從第一控制節(jié)點(diǎn)中存儲(chǔ)的所有的文件描述符中選取活躍文件描述符。其中,活躍文件描述符為最近被使用過(guò)或使用頻率比較高的文件描述符,非活躍文件描述符為最近未被使用或使用頻率比較低的文件描述符。205b、根據(jù)二叉平衡樹(shù)算法對(duì)活躍文件描述符進(jìn)行排序,生成文件描述符序列。其中,當(dāng)選取到活躍文件描述符之后,可以根據(jù)二叉平衡樹(shù)算法對(duì)查找的所有的活躍文件描述符進(jìn)行排序生成文件描述符序列。205c、在文件描述符序列中查找目標(biāo)文件描述符。其中,當(dāng)生成文件描述符序列之后,便可以在文件描述符序列中查找目標(biāo)文件描述符,這樣便可以使查找算法復(fù)雜度降低到O (Log (η))。。其中O(X)是算法復(fù)雜度的一種表示方式,0(1)表示線性,O (Log (η))表示查找η個(gè)元素,花費(fèi)的平均時(shí)間是Log(n),所述目標(biāo)文件描述符為發(fā)送控制消息所需的文件描述符。206、從線程資源池中獲取至少一個(gè)空閑線程,并將至少一個(gè)空閑線程分配控制消
肩、O其中,當(dāng)?shù)谝豢刂乒?jié)點(diǎn)需要向下發(fā)送控制消息時(shí),從預(yù)先創(chuàng)建的線程資源池中獲取至少一個(gè)空閑線程,并將該至少一個(gè)空閑線程分配給控制消息。需要說(shuō)明的是,本發(fā)明實(shí)施例中步驟203到步驟206執(zhí)行順序沒(méi)有先后關(guān)系,本發(fā)明實(shí)施例對(duì)步驟203到步驟206的執(zhí)行順序不做限制。207、根據(jù)線程描述符和目標(biāo)文件描述符將控制消息發(fā)送至與第一控制節(jié)點(diǎn)連接的全部下一級(jí)控制節(jié)點(diǎn)的進(jìn)程或?qū)⒖刂葡l(fā)送至與第一控制節(jié)點(diǎn)連接的全部被控制節(jié)點(diǎn)的進(jìn)程。其中,當(dāng)將控制消息進(jìn)行以上步驟203到步驟206的處理之后,便可以根據(jù)獲取到的線程描述符和目標(biāo)文件描述符將控制消息通過(guò)空閑線程發(fā)送至與第一控制節(jié)點(diǎn)連接的全部下一級(jí)控制節(jié)點(diǎn)的進(jìn)程或?qū)⒖刂葡l(fā)送至與第一控制節(jié)點(diǎn)連接的全部被控制節(jié)點(diǎn)的進(jìn)程,其中該控制消息為壓縮后的控制消息。其中,為了達(dá)到高并發(fā)的要求,在每一級(jí)控制節(jié)點(diǎn)向下發(fā)送控制消息的時(shí),可以在同一時(shí)刻將控制消息發(fā)送至與其相連的全部的下一級(jí)控制節(jié)點(diǎn)。需要說(shuō)明的是,本發(fā)明實(shí)施例主要可以用于控制大量節(jié)點(diǎn)在同一時(shí)刻進(jìn)行某種操作的場(chǎng)景中,還可以用于需要進(jìn)行大規(guī)模并發(fā)控制的場(chǎng)景中。本發(fā)明實(shí)施例提供的一種并發(fā)控制方法,在第一控制節(jié)點(diǎn)接收到上一級(jí)控制節(jié)點(diǎn)發(fā)送的控制消息之后,將該控制消息發(fā)送至與第一控制節(jié)點(diǎn)連接的全部下一級(jí)控制節(jié)點(diǎn),以便下一級(jí)控制節(jié)點(diǎn)繼續(xù)將控制消息向下發(fā)送,直至到達(dá)被控制節(jié)點(diǎn);或?qū)⒖刂葡l(fā)送至與第一控制節(jié)點(diǎn)連接的全部被控制節(jié)點(diǎn),減少了對(duì)多個(gè)被控制節(jié)點(diǎn)進(jìn)行并發(fā)控制的場(chǎng)景下的時(shí)延,同時(shí)保障了并發(fā)個(gè)數(shù)。并且,通過(guò)在每個(gè)控制節(jié)點(diǎn)采用線程池,避免了多線程切換帶來(lái)的時(shí)延抖動(dòng),并在將控制消息向下發(fā)送前將控制消息采用變長(zhǎng)壓縮技術(shù)進(jìn)行壓縮,減小了網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù),在將控制消息進(jìn)行轉(zhuǎn)發(fā)是采用哈希算法查找線程描述符,并采用基于活躍隊(duì)列的底層異步技術(shù),使得控制消息從控制端到達(dá)被控制端的時(shí)延進(jìn)一步的減小。實(shí)施例3本發(fā)明實(shí)施例提供一種控制節(jié)點(diǎn),如圖4所示,包括:接收單元31、發(fā)送單元32。接收單元31,用于接收上一級(jí)控制節(jié)點(diǎn)發(fā)送的控制消息;其中,所述控制消息由最高一級(jí)的控制節(jié)點(diǎn)生成,用于控制被控制節(jié)點(diǎn)執(zhí)行所述控制消息指定的操作。發(fā)送單元32,用于將所述接收單元31接收到的所述控制消息發(fā)送至與所述控制節(jié)點(diǎn)連接的全部下一級(jí)控制節(jié)點(diǎn),以便所述下一級(jí)控制節(jié)點(diǎn)繼續(xù)將所述控制消息向下發(fā)送,直至到達(dá)所述被控制節(jié)點(diǎn);或?qū)⑺鼋邮諉卧?1接收到的所述控制消息發(fā)送至與所述控制節(jié)點(diǎn)連接的全部所述被控制節(jié)點(diǎn)。進(jìn)一步的,如圖5所示,該控制節(jié)點(diǎn)還可以包括:創(chuàng)建單元33、獲取單元34。創(chuàng)建單元33,用于在所述接收單元31接收上一級(jí)節(jié)點(diǎn)發(fā)送的控制消息之前,創(chuàng)建線程資源池。獲取單元34,用于從所述創(chuàng)建單元33創(chuàng)建的線程資源池中獲取至少一個(gè)空閑線程。所述發(fā)送單元32,具體用于通過(guò)所述獲取單元34獲取到的所述至少一個(gè)空閑線程將所述控制消息發(fā)送至所述與所述控制節(jié)點(diǎn)連接的全部下一級(jí)控制節(jié)點(diǎn)或通過(guò)所述獲取單元34獲取到的所述至少一個(gè)空閑線程將所述控制消息發(fā)送至所述與所述控制節(jié)點(diǎn)連接的全部被控制節(jié)點(diǎn)。進(jìn)一步的,該控制節(jié)點(diǎn)還可以包括:壓縮單元35。壓縮單元35,用于在所述發(fā)送單元32將所述控制消息發(fā)送至與所述控制節(jié)點(diǎn)連接的全部下一級(jí)控制節(jié)點(diǎn)或?qū)⑺隹刂葡l(fā)送至與所述控制節(jié)點(diǎn)連接的全部被控制節(jié)點(diǎn)之前,按照變長(zhǎng)壓縮技術(shù)對(duì)所述控制消息進(jìn)行壓縮。所述發(fā)送單元32,具體用于將所述壓縮單元35壓縮后的控制消息發(fā)送至所述與所述控制節(jié)點(diǎn)連接的全部下一級(jí)控制節(jié)點(diǎn)或?qū)⑺鰤嚎s單元35壓縮后的控制消息發(fā)送至所述與所述控制節(jié)點(diǎn)連接的全部被控制節(jié)點(diǎn)。進(jìn)一步的,所述控制消息包含標(biāo)識(shí)信息,其中,所述標(biāo)識(shí)信息為所述下一級(jí)控制節(jié)點(diǎn)或所述被控制節(jié)點(diǎn)的進(jìn)程的標(biāo)識(shí)信息。所述發(fā)送單元32可以包括:第一查找模塊321、第二查找模塊322、發(fā)送模塊323。第一查找模塊321,用于根據(jù)所述標(biāo)識(shí)信息,按照預(yù)定算法查找所述標(biāo)識(shí)信息對(duì)應(yīng)的進(jìn)程的線程描述符。
第二查找模塊322,用于根據(jù)預(yù)設(shè)策略查找目標(biāo)文件描述符;其中,所述目標(biāo)文件描述符為所述控制節(jié)點(diǎn)發(fā)送所述控制消息至所述標(biāo)識(shí)信息對(duì)應(yīng)的進(jìn)程所需的文件描述符。發(fā)送模塊323,用于根據(jù)所述第一查找模塊321查找到的所述線程描述符和所述第二查找模塊322查找到的所述目標(biāo)文件描述符將所述控制消息發(fā)送至與所述控制節(jié)點(diǎn)連接的全部所述下一級(jí)控制節(jié)點(diǎn)的進(jìn)程或?qū)⑺隹刂葡l(fā)送至與所述控制節(jié)點(diǎn)連接的全部所述被控制節(jié)點(diǎn)的進(jìn)程。進(jìn)一步的,所第二查找模塊322可以包括:選取子模塊3221、生成子模塊3222、查找子模塊3223。選取子模塊3221,用于從所述控制節(jié)點(diǎn)中存儲(chǔ)的所有文件描述符中選取的活躍文件描述符。生成子模塊3222,用于根據(jù)二叉平衡樹(shù)算法對(duì)所述選取子模塊3221選取的所述活躍文件描述符進(jìn)行排序,生成文件描述符序列。查找子模塊3223,用于在所述生成子模塊3222生成的所述文件描述符序列中查找所述目標(biāo)文件描述符。進(jìn)一步的,所述預(yù)定算法包括哈希算法。本發(fā)明實(shí)施例提供的一種控制節(jié)點(diǎn),在接收到上一級(jí)控制節(jié)點(diǎn)發(fā)送的控制消息之后,將該控制消息發(fā)送至與該控制節(jié)點(diǎn)連接的全部下一級(jí)控制節(jié)點(diǎn),以便下一級(jí)控制節(jié)點(diǎn)繼續(xù)將控制消息向下發(fā)送,直至到達(dá)被控制節(jié)點(diǎn);或?qū)⒖刂葡l(fā)送至與該控制節(jié)點(diǎn)連接的全部被控制節(jié)點(diǎn),減少了對(duì)多個(gè)被控制節(jié)點(diǎn)進(jìn)行并發(fā)控制的場(chǎng)景下的時(shí)延,同時(shí)保障了并發(fā)個(gè)數(shù)。并且,通過(guò)在每個(gè)控制節(jié)點(diǎn)采用線程池,避免了多線程切換帶來(lái)的時(shí)延抖動(dòng),并在將控制消息向下發(fā)送前將控制消息采用變長(zhǎng)壓縮技術(shù)進(jìn)行壓縮,減小了網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù),在將控制消息進(jìn)行轉(zhuǎn)發(fā)是采用哈希算法查找線程描述符,并采用基于活躍隊(duì)列的底層異步技術(shù),使得控制消息從控制端到達(dá)被控制端的時(shí)延進(jìn)一步的減小。實(shí)施例4本發(fā)明實(shí)施例提供一種控制節(jié)點(diǎn),如圖6所示,包括:至少一個(gè)處理器41、存儲(chǔ)器42、通信接口 43和總線44,該至少一個(gè)處理器41、存儲(chǔ)器42和通信接口 43通過(guò)總線44連接并完成相互間的通信,其中:所述總線44可以是工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(Industry Standard Architecture,簡(jiǎn)稱為ISA)總線、外部設(shè)備互連(Peripheral Component,簡(jiǎn)稱為PCI)總線或擴(kuò)展工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(Extended Industry Standard Architecture,簡(jiǎn)稱為 EISA)總線等。該總線 44 可以分為地址總線、數(shù)據(jù)總線、控制總線等。為便于表示,圖6中僅用一條粗線表示,但并不表示僅有一根總線或一種類型的總線。其中:所述存儲(chǔ)器42用于存儲(chǔ)可執(zhí)行程序代碼,該程序代碼包括計(jì)算機(jī)操作指令。存儲(chǔ)器42可能包含高速RAM存儲(chǔ)器,也可能還包括非易失性存儲(chǔ)器(non-volatile memory),例如至少一個(gè)磁盤(pán)存儲(chǔ)器。所述處理器41可能是一個(gè)中央處理器(Central Processing Unit,簡(jiǎn)稱為CPU),或者是特定集成電路(Application Specific Integrated Circuit,簡(jiǎn)稱為ASIC),或者是被配置成實(shí)施本發(fā)明實(shí)施例的一個(gè)或多個(gè)集成電路。
所述通信接口 43,主要用于實(shí)現(xiàn)本實(shí)施例的設(shè)備之間的通信。所述處理器41,用于接收上一級(jí)控制節(jié)點(diǎn)發(fā)送的控制消息;其中,所述控制消息由最高一級(jí)的控制節(jié)點(diǎn)生成,用于控制被控制節(jié)點(diǎn)執(zhí)行所述控制消息指定的操作;將所述控制消息發(fā)送至與所述第一控制節(jié)點(diǎn)連接的全部下一級(jí)控制節(jié)點(diǎn),以便所述下一級(jí)控制節(jié)點(diǎn)繼續(xù)將所述控制消息向下發(fā)送,直至到所述達(dá)被控制節(jié)點(diǎn);或?qū)⑺隹刂葡l(fā)送至與所述第一控制節(jié)點(diǎn)連接的全部所述被控制節(jié)點(diǎn)。進(jìn)一步的,所述處理器41,還用于在所述第一控制節(jié)點(diǎn)接收上一級(jí)節(jié)點(diǎn)發(fā)送的控制消息之前,創(chuàng)建線程資源池,并從所述線程資源池中獲取至少一個(gè)空閑線程,并通過(guò)獲取的所述至少一個(gè)空閑線程將所述控制消息發(fā)送至所述與所述第一控制節(jié)點(diǎn)連接的全部下一級(jí)控制節(jié)點(diǎn)或通過(guò)獲取的所述至少一個(gè)空閑線程將所述控制消息發(fā)送至所述與所述第一控制節(jié)點(diǎn)連接的全部被控制節(jié)點(diǎn)。進(jìn)一步的,所述處理器41,還用于在所述將所述控制消息發(fā)送至與所述第一控制節(jié)點(diǎn)連接的全部下一級(jí)控制節(jié)點(diǎn)或?qū)⑺隹刂葡l(fā)送至與所述第一控制節(jié)點(diǎn)連接的全部被控制節(jié)點(diǎn)之前,按照變長(zhǎng)壓縮技術(shù)對(duì)所述控制消息進(jìn)行壓縮,并將所述壓縮后的控制消息發(fā)送至所述與所述第一控制節(jié)點(diǎn)連接的全部下一級(jí)控制節(jié)點(diǎn)或?qū)⑺鰤嚎s后的控制消息發(fā)送至所述與所述第一控制節(jié)點(diǎn)連接的全部被控制節(jié)點(diǎn)。進(jìn)一步的,所述控制消息包含標(biāo)識(shí)信息,其中,所述標(biāo)識(shí)信息為所述下一級(jí)控制節(jié)點(diǎn)或所述被控制節(jié)點(diǎn)的進(jìn)程的標(biāo)識(shí)信息。進(jìn)一步的,所述處理器41,還用于根據(jù)所述標(biāo)識(shí)信息,按照預(yù)定算法查找所述標(biāo)識(shí)信息對(duì)應(yīng)的進(jìn)程的線程描述符;根據(jù)預(yù)設(shè)策略查找目標(biāo)文件描述符;其中,所述目標(biāo)文件描述符為所述第一控制節(jié)點(diǎn)發(fā)送所述控制消息至所述標(biāo)識(shí)信息對(duì)應(yīng)的進(jìn)程所需的文件描述符;根據(jù)所述線程描述符和所述目標(biāo)文件描述符將所述控制消息發(fā)送至與所述第一控制節(jié)點(diǎn)連接的全部所述下一級(jí)控制節(jié)點(diǎn)的進(jìn)程或?qū)⑺隹刂葡l(fā)送至與所述第一控制節(jié)點(diǎn)連接的全部所述被控制節(jié)點(diǎn)的進(jìn)程。進(jìn)一步的,所述處理器41,還用于從所述第一控制節(jié)點(diǎn)中存儲(chǔ)的所有文件描述符中選取的活躍文件描述符;根據(jù)二叉平衡樹(shù)算法對(duì)所述活躍文件描述符進(jìn)行排序,生成文件描述符序列;在所述文件描述符序列中查找所述目標(biāo)文件描述符。進(jìn)一步的,所述預(yù)定算法包括哈希算法。本發(fā)明實(shí)施例提供的一種控制節(jié)點(diǎn),在接收到上一級(jí)控制節(jié)點(diǎn)發(fā)送的控制消息之后,將該控制消息發(fā)送至與該控制節(jié)點(diǎn)連接的全部下一級(jí)控制節(jié)點(diǎn),以便下一級(jí)控制節(jié)點(diǎn)繼續(xù)將控制消息向下發(fā)送,直至到達(dá)被控制節(jié)點(diǎn);或?qū)⒖刂葡l(fā)送至與該控制節(jié)點(diǎn)連接的全部被控制節(jié)點(diǎn),減少了對(duì)多個(gè)被控制節(jié)點(diǎn)進(jìn)行并發(fā)控制的場(chǎng)景下的時(shí)延,同時(shí)保障了并發(fā)個(gè)數(shù)。并且,通過(guò)在每個(gè)控制節(jié)點(diǎn)采用線程池,避免了多線程切換帶來(lái)的時(shí)延抖動(dòng),并在將控制消息向下發(fā)送前將控制消息采用變長(zhǎng)壓縮技術(shù)進(jìn)行壓縮,減小了網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù),在將控制消息進(jìn)行轉(zhuǎn)發(fā)是采用哈希算法查找線程描述符,并采用基于活躍隊(duì)列的底層異步技術(shù),使得控制消息從控制端到達(dá)被控制端的時(shí)延進(jìn)一步的減小。實(shí)施例5本發(fā)明實(shí)施例提供一種并發(fā)控制系統(tǒng),如圖7所示,包含M個(gè)被控制節(jié)點(diǎn)51和N個(gè)控制節(jié)點(diǎn)52,N彡3。所述N個(gè)控制節(jié)點(diǎn)52分K層部署,每個(gè)控制節(jié)點(diǎn)52最多并行發(fā)送X個(gè)控制消息。第一層的控制節(jié)點(diǎn)52最多與X個(gè)第二層的控制節(jié)點(diǎn)52連接,所述第一層的控制節(jié)點(diǎn)52,用于生成所述控制信息。第m-Ι層的每個(gè)控制節(jié)點(diǎn)52最多與X個(gè)第m層的控制節(jié)點(diǎn)52連接;其中,I< m ^ K0第K層的每個(gè)控制節(jié)點(diǎn)52最多與X個(gè)被控制節(jié)點(diǎn)51連接,以便所述M個(gè)被控制節(jié)點(diǎn)51同時(shí)接收所述控制信息;其中第K層共Y個(gè)控制節(jié)點(diǎn)52,且XXY SM。其中,所述第一層的控制節(jié)點(diǎn)52,還用于將所述控制信息發(fā)送至與所述第一層的控制節(jié)點(diǎn)52連接的全部第二層的控制節(jié)點(diǎn)52。所述第m-Ι層的控制節(jié)點(diǎn)52,用于接收第m_2層的控制節(jié)點(diǎn)52發(fā)送的所述控制信息,并將所述控制信息發(fā)送至與自身連接的所有第m層的控制節(jié)點(diǎn)52。所述第K層的控制節(jié)點(diǎn)52,用于接收第K-1層的控制節(jié)點(diǎn)52發(fā)送的所述控制信息,并將所述控制信息發(fā)送至與自身連接的全部被控制節(jié)點(diǎn)51。所述被控制節(jié)點(diǎn)51,用于接收所述第K層的控制節(jié)點(diǎn)52發(fā)送的控制信息,并執(zhí)行所述控制消息指定的操作。本發(fā)明實(shí)施例提供的一種并發(fā)控制系統(tǒng),在接收到上一級(jí)控制節(jié)點(diǎn)發(fā)送的控制消息之后,將該控制消息發(fā)送至與該控制節(jié)點(diǎn)連接的全部下一級(jí)控制節(jié)點(diǎn),以便下一級(jí)控制節(jié)點(diǎn)繼續(xù)將控制消息向下發(fā)送,直至到達(dá)被控制節(jié)點(diǎn);或?qū)⒖刂葡l(fā)送至與該控制節(jié)點(diǎn)連接的全部被控制節(jié)點(diǎn),減少了對(duì)多個(gè)被控制節(jié)點(diǎn)進(jìn)行并發(fā)控制的場(chǎng)景下的時(shí)延,同時(shí)保障了并發(fā)個(gè)數(shù)。并且,通過(guò)在每個(gè)控制節(jié)點(diǎn)采用線程池,避免了多線程切換帶來(lái)的時(shí)延抖動(dòng),并在將控制消息向下發(fā)送前將控制消息采用變長(zhǎng)壓縮技術(shù)進(jìn)行壓縮,減小了網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù),在將控制消息進(jìn)行轉(zhuǎn)發(fā)是采用哈希算法查找線程描述符,并采用基于活躍隊(duì)列的底層異步技術(shù),使得控制消息從控制端到達(dá)被控制端的時(shí)延進(jìn)一步的減小。通過(guò)以上的實(shí)施方式的描述,所屬領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明可借助軟件加必需的通用硬件的方式來(lái)實(shí)現(xiàn),當(dāng)然也可以通過(guò)硬件,但很多情況下前者是更佳的實(shí)施方式?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在可讀取的存儲(chǔ)介質(zhì)中,如計(jì)算機(jī)的軟盤(pán),硬盤(pán)或光盤(pán)等,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述的方法。以上所述,僅為本發(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)。
權(quán)利要求
1.一種并發(fā)控制方法,其特征在于,所述方法包括: 第一控制節(jié)點(diǎn)接收上一級(jí)控制節(jié)點(diǎn)發(fā)送的控制消息;其中,所述控制消息由最高一級(jí)的控制節(jié)點(diǎn)生成,用于控制被控制節(jié)點(diǎn)執(zhí)行所述控制消息指定的操作; 將所述控制消息發(fā)送至與所述第一控制節(jié)點(diǎn)連接的全部下一級(jí)控制節(jié)點(diǎn),以便所述下一級(jí)控制節(jié)點(diǎn)繼續(xù)將所述控制消息向下發(fā)送,直至到達(dá)所述被控制節(jié)點(diǎn);或?qū)⑺隹刂葡l(fā)送至與所述第一控制節(jié)點(diǎn)連接的全部所述被控制節(jié)點(diǎn)。
2.根據(jù)權(quán)利要求1所述的并發(fā)控制方法,其特征在于, 在所述第一控制節(jié)點(diǎn)接收上一級(jí)節(jié)點(diǎn)發(fā)送的控制消息之前,還包括: 創(chuàng)建線程資源池; 從所述線程資源池中獲取至少一個(gè)空閑線程; 所述將所述控制消息發(fā)送至與所述第一控制節(jié)點(diǎn)連接的全部下一級(jí)控制節(jié)點(diǎn),包括:通過(guò)獲取的所述至少一個(gè)空閑線程將所述控制消息發(fā)送至所述與所述第一控制節(jié)點(diǎn)連接的全部下一級(jí)控制節(jié)點(diǎn); 所述將所述控制消息發(fā)送至與所述第一控制節(jié)點(diǎn)連接的全部被控制節(jié)點(diǎn),包括:通過(guò)獲取的所述至少一個(gè)空閑線程將所述控制消息發(fā)送至所述與所述第一控制節(jié)點(diǎn)連接的全部被控制節(jié)點(diǎn)。
3.根據(jù)權(quán)利要求1所述 的并發(fā)控制方法,其特征在于, 在所述將所述控制消息發(fā)送至與所述第一控制節(jié)點(diǎn)連接的全部下一級(jí)控制節(jié)點(diǎn)或?qū)⑺隹刂葡l(fā)送至與所述第一控制節(jié)點(diǎn)連接的全部被控制節(jié)點(diǎn)之前,還包括: 按照變長(zhǎng)壓縮技術(shù)對(duì)所述控制消息進(jìn)行壓縮; 所述將所述控制消息發(fā)送至與所述第一控制節(jié)點(diǎn)連接的全部下一級(jí)控制節(jié)點(diǎn),包括:將所述壓縮后的控制消息發(fā)送至所述與所述第一控制節(jié)點(diǎn)連接的全部下一級(jí)控制節(jié)點(diǎn); 所述將所述控制消息發(fā)送至與所述第一控制節(jié)點(diǎn)連接的全部被控制節(jié)點(diǎn),包括:將所述壓縮后的控制消息發(fā)送至所述與所述第一控制節(jié)點(diǎn)連接的全部被控制節(jié)點(diǎn)。
4.根據(jù)權(quán)利要求1所述的并發(fā)控制方法,其特征在于,所述控制消息包含標(biāo)識(shí)信息,其中,所述標(biāo)識(shí)信息為所述下一級(jí)控制節(jié)點(diǎn)或所述被控制節(jié)點(diǎn)的進(jìn)程的標(biāo)識(shí)信息; 所述將所述控制消息發(fā)送至與所述第一控制節(jié)點(diǎn)連接的全部下一級(jí)控制節(jié)點(diǎn)或?qū)⑺隹刂葡l(fā)送至與所述第一控制節(jié)點(diǎn)連接的全部被控制節(jié)點(diǎn),包括: 根據(jù)所述標(biāo)識(shí)信息,按照預(yù)定算法查找所述標(biāo)識(shí)信息對(duì)應(yīng)的進(jìn)程的線程描述符; 根據(jù)預(yù)設(shè)策略查找目標(biāo)文件描述符;其中,所述目標(biāo)文件描述符為所述第一控制節(jié)點(diǎn)發(fā)送所述控制消息至所述標(biāo)識(shí)信息對(duì)應(yīng)的進(jìn)程所需的文件描述符; 根據(jù)所述線程描述符和所述目標(biāo)文件描述符將所述控制消息發(fā)送至與所述第一控制節(jié)點(diǎn)連接的全部所述下一級(jí)控制節(jié)點(diǎn)的進(jìn)程或?qū)⑺隹刂葡l(fā)送至與所述第一控制節(jié)點(diǎn)連接的全部所述被控制節(jié)點(diǎn)的進(jìn)程。
5.根據(jù)權(quán)利要求4所述的并發(fā)控制方法,其特征在于,所述根據(jù)預(yù)設(shè)策略查找目標(biāo)文件描述符,包括: 從所述第一控制節(jié)點(diǎn)中存儲(chǔ)的所有文件描述符中選取的活躍文件描述符; 根據(jù)二叉平衡樹(shù)算法對(duì)所述活躍文件描述符進(jìn)行排序,生成文件描述符序列; 在所述文件描述符序列中查找所述目標(biāo)文件描述符。
6.根據(jù)權(quán)利要求4或5所述的并發(fā)控制方法,其特征在于,所述預(yù)定算法包括哈希算法。
7.—種控制節(jié)點(diǎn),其特征在于,包括: 接收單元,用于接收上一級(jí)控制節(jié)點(diǎn)發(fā)送的控制消息;其中,所述控制消息由最高一級(jí)的控制節(jié)點(diǎn)生成,用于控制被控制節(jié)點(diǎn)執(zhí)行所述控制消息指定的操作; 發(fā)送單元,用于將所述接收單元接收到的所述控制消息發(fā)送至與所述控制節(jié)點(diǎn)連接的全部下一級(jí)控制節(jié)點(diǎn),以便所述下一級(jí)控制節(jié)點(diǎn)繼續(xù)將所述控制消息向下發(fā)送,直至到達(dá)所述被控制節(jié)點(diǎn);或?qū)⑺鼋邮諉卧邮盏降乃隹刂葡l(fā)送至與所述控制節(jié)點(diǎn)連接的全部所述被控制節(jié)點(diǎn)。
8.根據(jù)權(quán)利要求7所述的控制節(jié)點(diǎn),其特征在于,還包括: 創(chuàng)建單元,用于在所述接收單元接收上一級(jí)節(jié)點(diǎn)發(fā)送的控制消息之前,創(chuàng)建線程資源池; 獲取單元,用于從所述創(chuàng)建單元?jiǎng)?chuàng)建的線程資源池中獲取至少一個(gè)空閑線程; 所述發(fā)送單元,具體用于通過(guò)所述獲取單元獲取到的所述至少一個(gè)空閑線程將所述控制消息發(fā)送至所述與所述控制節(jié)點(diǎn)連接的全部下一級(jí)控制節(jié)點(diǎn)或通過(guò)所述獲取單元獲取到的所述至少一個(gè)空閑線程將所述控制消息發(fā)送至所述與所述控制節(jié)點(diǎn)連接的全部被控制節(jié)點(diǎn)。
9.根據(jù)權(quán)利要求7所述的控制節(jié)點(diǎn),其特征在于,還包括: 壓縮單元,用于在所述發(fā)送單元將所述控制消息發(fā)送至與所述控制節(jié)點(diǎn)連接的全部下一級(jí)控制節(jié)點(diǎn)或?qū)⑺隹刂葡l(fā)送至與所述控制節(jié)點(diǎn)連接的全部被控制節(jié)點(diǎn)之前,按照變長(zhǎng)壓縮技術(shù)對(duì)所述控制消息進(jìn)行壓縮; 所述發(fā)送單元,具體用于將所述壓縮單元壓縮后的控制消息發(fā)送至所述與所述控制節(jié)點(diǎn)連接的全部下一級(jí)控制節(jié)點(diǎn)或?qū)⑺鰤嚎s單元壓縮后的控制消息發(fā)送至所述與所述控制節(jié)點(diǎn)連接的全部被控制節(jié)點(diǎn)。
10.根據(jù)權(quán)利要求7所述的控制節(jié)點(diǎn),其特征在于,所述控制消息包含標(biāo)識(shí)信息,其中,所述標(biāo)識(shí)信息為所述下一級(jí)控制節(jié)點(diǎn)或所述被控制節(jié)點(diǎn)的進(jìn)程的標(biāo)識(shí)信息; 所述發(fā)送單元,包括: 第一查找模塊,用于根據(jù)所述標(biāo)識(shí)信息,按照預(yù)定算法查找所述標(biāo)識(shí)信息對(duì)應(yīng)的進(jìn)程的線程描述符; 第二查找模塊,用于根據(jù)預(yù)設(shè)策略查找目標(biāo)文件描述符;其中,所述目標(biāo)文件描述符為所述控制節(jié)點(diǎn)發(fā)送所述控制消息至所述標(biāo)識(shí)信息對(duì)應(yīng)的進(jìn)程所需的文件描述符; 發(fā)送模塊,用于根據(jù)所述第一查找模塊查找到的所述線程描述符和所述第二查找模塊查找到的所述目標(biāo)文件描述符將所述控制消息發(fā)送至與所述控制節(jié)點(diǎn)連接的全部所述下一級(jí)控制節(jié)點(diǎn)的進(jìn)程或?qū)⑺隹刂葡l(fā)送至與所述控制節(jié)點(diǎn)連接的全部所述被控制節(jié)點(diǎn)的進(jìn)程。
11.根據(jù)權(quán)利要求10所述的控制節(jié)點(diǎn),其特征在于,所第二查找模塊,包括: 選取子模塊,用于從所述控制節(jié)點(diǎn)中存儲(chǔ)的所有文件描述符中選取的活躍文件描述符; 生成子模塊,用于根據(jù)二叉平衡樹(shù)算法對(duì)所述選取子模塊選取的所述活躍文件描述符進(jìn)行排序,生成文件描述符序列; 查找子模塊,用于在所述生成子模塊生成的所述文件描述符序列中查找所述目標(biāo)文件描述符。
12.根據(jù)權(quán)利要求10或11所述的控制節(jié)點(diǎn),其特征在于,所述預(yù)定算法包括哈希算法。
13.一種并發(fā)控制系統(tǒng),包含M個(gè)被控制節(jié)點(diǎn)和N個(gè)控制節(jié)點(diǎn),NS 3,其特征在于, 所述N個(gè)控制節(jié)點(diǎn)分K層部署,每個(gè)控制節(jié)點(diǎn)最多并行發(fā)送X個(gè)控制消息; 第一層的控制節(jié)點(diǎn)最多與X個(gè)第二層的控制節(jié)點(diǎn)連接,所述第一層的控制節(jié)點(diǎn),用于生成所述控制信息; 第m-Ι層的每個(gè)控制節(jié)點(diǎn)最多與X 個(gè)第m層的控制節(jié)點(diǎn)連接;其中,I < m彡K ; 第K層的每個(gè)控制節(jié)點(diǎn)最多與X個(gè)被控制節(jié)點(diǎn)連接,以便所述M個(gè)被控制節(jié)點(diǎn)同時(shí)接收所述控制信息;其中第K層共Y個(gè)控制節(jié)點(diǎn),且XX Y > M ; 其中,所述第一層的控制節(jié)點(diǎn),還用于將所述控制信息發(fā)送至與所述第一層的控制節(jié)點(diǎn)連接的全部第二層的控制節(jié)點(diǎn); 所述第m-Ι層的控制節(jié)點(diǎn),用于接收第m-2層的控制節(jié)點(diǎn)發(fā)送的所述控制信息,并將所述控制信息發(fā)送至與自身連接的所有第m層的控制節(jié)點(diǎn); 所述第K層的控制節(jié)點(diǎn),用于接收第K-1層的控制節(jié)點(diǎn)發(fā)送的所述控制信息,并將所述控制信息發(fā)送至與自身連接的全部被控制節(jié)點(diǎn); 所述被控制節(jié)點(diǎn),用于接收所述第K層的控制節(jié)點(diǎn)發(fā)送的控制信息,并執(zhí)行所述控制消息指定的操作。
全文摘要
本發(fā)明實(shí)施例公開(kāi)了一種并發(fā)控制方法、控制節(jié)點(diǎn)及系統(tǒng),涉及通信領(lǐng)域,減少了對(duì)多個(gè)被控制端進(jìn)行并發(fā)控制的場(chǎng)景下的時(shí)延,同時(shí)保障了并發(fā)個(gè)數(shù)。具體方案為第一控制節(jié)點(diǎn)接收上一級(jí)控制節(jié)點(diǎn)發(fā)送的控制消息;其中,控制消息由最高一級(jí)的控制節(jié)點(diǎn)生成,用于控制被控制節(jié)點(diǎn)執(zhí)行控制消息指定的操作;將控制消息發(fā)送至與第一控制節(jié)點(diǎn)連接的全部下一級(jí)控制節(jié)點(diǎn),以便下一級(jí)控制節(jié)點(diǎn)繼續(xù)將控制消息向下發(fā)送,直至到達(dá)被控制節(jié)點(diǎn);或?qū)⒖刂葡l(fā)送至與第一控制節(jié)點(diǎn)連接的全部被控制節(jié)點(diǎn)。本發(fā)明用于并發(fā)控制過(guò)程中。
文檔編號(hào)G06F9/38GK103197920SQ20131009762
公開(kāi)日2013年7月10日 申請(qǐng)日期2013年3月25日 優(yōu)先權(quán)日2013年3月25日
發(fā)明者洪波 申請(qǐng)人:華為技術(shù)有限公司