国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種信息分發(fā)方法及裝置與流程

      文檔序號:12789640閱讀:231來源:國知局
      一種信息分發(fā)方法及裝置與流程

      本發(fā)明涉及信息技術(shù)領(lǐng)域,尤其涉及一種信息分發(fā)方法及裝置。



      背景技術(shù):

      隨著互聯(lián)網(wǎng)上的應(yīng)用使用普及,應(yīng)用的用戶數(shù)量也大大增加,單臺服務(wù)器遠(yuǎn)不足為大規(guī)模的用戶提供服務(wù),因此,對于互聯(lián)網(wǎng)上的任一應(yīng)用,通??梢圆捎梅植际较到y(tǒng),利用多個服務(wù)器一起提供服務(wù)。每個服務(wù)器上都可以有多個提供服務(wù)的進(jìn)程,各個服務(wù)器的進(jìn)程在運(yùn)行過程中都需要獲取一些特定信息,特定信息可以是包括可執(zhí)行指令信息、配置信息、任務(wù)調(diào)度信息、服務(wù)資源信息等,特定信息可以是固定不變的,也可以是動態(tài)變化的。

      在現(xiàn)有技術(shù)中,通常利用zookeeper對特定信息進(jìn)行統(tǒng)一管理和分發(fā),zookeeper是一個針對大型分布式系統(tǒng)的可靠協(xié)調(diào)系統(tǒng),提供的功能包括:信息分發(fā)、配置維護(hù)、名字服務(wù)、分布式同步、組服務(wù)等。每個服務(wù)器中每個進(jìn)程向zookeeper請求建立一個通信連接,通信連接建立后,zookeeper則可以將自身上保存的特定信息(稱為待分發(fā)信息)分發(fā)給各個服務(wù)器的各個進(jìn)程。

      但是,由于在實(shí)際應(yīng)用中通常是上百個服務(wù)器共同服務(wù),每個服務(wù)器通常運(yùn)行上百個提供服務(wù)的進(jìn)程,比如:若有100個服務(wù)器一起提供服務(wù),每個服務(wù)器上運(yùn)行128個進(jìn)程時,每個服務(wù)器中的每個進(jìn)程都與zookeeper建立一個通信連接,共需要建立12800個通信連接,以用于zookeeper向各進(jìn)程分發(fā)待分發(fā)信息。由此可見,這種信息分發(fā)的方式給zookeeper帶來較大的負(fù)載,嚴(yán)重影響zookeeper的處理性能。



      技術(shù)實(shí)現(xiàn)要素:

      鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決上述問題的信息分發(fā)方法及裝置。

      根據(jù)本發(fā)明的一個方面,提出一種信息分發(fā)方法,服務(wù)器與zookeeper相互連接,所述服務(wù)器上有多個提供服務(wù)的進(jìn)程,所述zookeeper上有待分發(fā)信息,所述方法包括:

      所述zookeeper接收各所述進(jìn)程發(fā)送的通信連接建立請求;

      所述zookeeper根據(jù)接收的通信連接建立請求,與各所述進(jìn)程中預(yù)定數(shù)量的進(jìn)程建立通信連接,所述預(yù)定數(shù)量少于所述服務(wù)器上提供服務(wù)的進(jìn)程總數(shù)量;

      所述zookeeper建立所述服務(wù)器上提供服務(wù)的各進(jìn)程中所述預(yù)定數(shù)量的進(jìn)程以外的進(jìn)程與所述預(yù)定數(shù)量的進(jìn)程之間的關(guān)聯(lián)關(guān)系;

      所述zookeeper通過建立的通信連接,將所述待分發(fā)信息和建立的關(guān)聯(lián)關(guān)系分發(fā)給所述預(yù)定數(shù)量的進(jìn)程,以使所述預(yù)定數(shù)量的進(jìn)程根據(jù)所述關(guān)聯(lián)關(guān)系,向所述預(yù)定數(shù)量的進(jìn)程關(guān)聯(lián)的進(jìn)程分發(fā)所述待分發(fā)信息。

      可選地,所述zookeeper根據(jù)接收的通信連接建立請求,與各所述進(jìn)程中預(yù)定數(shù)量的進(jìn)程建立通信連接后,所述方法還包括:

      所述zookeeper拒絕與所述服務(wù)器上提供服務(wù)的各進(jìn)程中所述預(yù)定數(shù)量的進(jìn)程以外的進(jìn)程建立通信連接。

      可選地,所述zookeeper建立所述服務(wù)器上提供服務(wù)的各進(jìn)程中所述預(yù)定數(shù)量的進(jìn)程以外的進(jìn)程與所述預(yù)定數(shù)量的進(jìn)程之間的關(guān)聯(lián)關(guān)系,具體包括:

      所述zookeeper根據(jù)接收的通信連接建立請求和建立的通信連接,確定所述服務(wù)器上提供服務(wù)的各進(jìn)程中所述預(yù)定數(shù)量的進(jìn)程以外的進(jìn)程;

      所述zookeeper針對確定的每個進(jìn)程,執(zhí)行:按照預(yù)定選擇規(guī)則,從所述預(yù)定數(shù)量的進(jìn)程中選擇至少一個進(jìn)程,作為與確定的這個進(jìn)程關(guān)聯(lián)的進(jìn)程,并建立關(guān)聯(lián)關(guān)系。

      可選地,所述zookeeper通過建立的通信連接,將所述待分發(fā)信息和建立 的關(guān)聯(lián)關(guān)系分發(fā)給所述預(yù)定數(shù)量的進(jìn)程,以使所述預(yù)定數(shù)量的進(jìn)程根據(jù)所述關(guān)聯(lián)關(guān)系,向所述預(yù)定數(shù)量的進(jìn)程關(guān)聯(lián)的進(jìn)程分發(fā)所述待分發(fā)信息,具體包括:

      所述zookeeper針對所述預(yù)定數(shù)量的進(jìn)程中的每個進(jìn)程,執(zhí)行:在建立的關(guān)聯(lián)關(guān)系中,確定包含這個進(jìn)程的關(guān)聯(lián)關(guān)系,通過與這個進(jìn)程之間建立的通信連接,將確定的關(guān)聯(lián)關(guān)系和所述待分發(fā)信息發(fā)送給這個進(jìn)程,以使這個進(jìn)程根據(jù)所述確定的關(guān)聯(lián)關(guān)系,向這個進(jìn)程關(guān)聯(lián)的進(jìn)程分發(fā)所述待分發(fā)信息。

      可選地,所述通信連接為長連接。

      根據(jù)本發(fā)明的另一個方面,提出一種信息分發(fā)裝置,服務(wù)器與zookeeper相互連接,所述服務(wù)器上有多個提供服務(wù)的進(jìn)程,所述zookeeper上有待分發(fā)信息,所述裝置位于所述zookeeper上,所述裝置包括:

      接收模塊,用于接收各所述進(jìn)程發(fā)送的通信連接建立請求;

      連接模塊,用于根據(jù)接收的通信連接建立請求,與各所述進(jìn)程中預(yù)定數(shù)量的進(jìn)程建立通信連接,所述預(yù)定數(shù)量少于所述服務(wù)器上提供服務(wù)的進(jìn)程總數(shù)量;

      關(guān)聯(lián)模塊,用于建立所述服務(wù)器上提供服務(wù)的各進(jìn)程中所述預(yù)定數(shù)量的進(jìn)程以外的進(jìn)程與所述預(yù)定數(shù)量的進(jìn)程之間的關(guān)聯(lián)關(guān)系;

      分發(fā)模塊,用于通過建立的通信連接,將所述待分發(fā)信息和建立的關(guān)聯(lián)關(guān)系分發(fā)給所述預(yù)定數(shù)量的進(jìn)程,以使所述預(yù)定數(shù)量的進(jìn)程根據(jù)所述關(guān)聯(lián)關(guān)系,向所述預(yù)定數(shù)量的進(jìn)程關(guān)聯(lián)的進(jìn)程分發(fā)所述待分發(fā)信息。

      可選地,所述連接模塊還用于:

      在根據(jù)接收的通信連接建立請求,與各所述進(jìn)程中預(yù)定數(shù)量的進(jìn)程建立通信連接后,拒絕與所述服務(wù)器上提供服務(wù)的各進(jìn)程中所述預(yù)定數(shù)量的進(jìn)程以外的進(jìn)程建立通信連接。

      可選地,所述關(guān)聯(lián)模塊具體用于:

      根據(jù)接收的通信連接建立請求和建立的通信連接,確定所述服務(wù)器上提供服務(wù)的各進(jìn)程中所述預(yù)定數(shù)量的進(jìn)程以外的進(jìn)程;針對確定的每個進(jìn)程,執(zhí)行: 按照預(yù)定選擇規(guī)則,從所述預(yù)定數(shù)量的進(jìn)程中選擇至少一個進(jìn)程,作為與確定的這個進(jìn)程關(guān)聯(lián)的進(jìn)程,并建立關(guān)聯(lián)關(guān)系。

      可選地,所述分發(fā)模塊具體用于:

      針對所述預(yù)定數(shù)量的進(jìn)程中的每個進(jìn)程,執(zhí)行:在建立的關(guān)聯(lián)關(guān)系中,確定包含這個進(jìn)程的關(guān)聯(lián)關(guān)系,通過與這個進(jìn)程之間建立的通信連接,將確定的關(guān)聯(lián)關(guān)系和所述待分發(fā)信息發(fā)送給這個進(jìn)程,以使這個進(jìn)程根據(jù)所述確定的關(guān)聯(lián)關(guān)系,向這個進(jìn)程關(guān)聯(lián)的進(jìn)程分發(fā)所述待分發(fā)信息。

      可選地,所述通信連接為長連接。

      根據(jù)本發(fā)明的方案,zookeeper接收服務(wù)器上提供服務(wù)的各進(jìn)程發(fā)送的通信連接建立請求;所述zookeeper根據(jù)接收的通信連接建立請求,與各所述進(jìn)程中預(yù)定數(shù)量的進(jìn)程建立通信連接,所述預(yù)定數(shù)量少于所述服務(wù)器上提供服務(wù)的進(jìn)程總數(shù)量;所述zookeeper建立所述服務(wù)器上提供服務(wù)的各進(jìn)程中所述預(yù)定數(shù)量的進(jìn)程以外的進(jìn)程與所述預(yù)定數(shù)量的進(jìn)程之間的關(guān)聯(lián)關(guān)系;所述zookeeper通過建立的通信連接,將所述待分發(fā)信息和建立的關(guān)聯(lián)關(guān)系分發(fā)給所述預(yù)定數(shù)量的進(jìn)程,以使所述預(yù)定數(shù)量的進(jìn)程根據(jù)所述關(guān)聯(lián)關(guān)系,向所述預(yù)定數(shù)量的進(jìn)程關(guān)聯(lián)的進(jìn)程分發(fā)所述待分發(fā)信息。zookeeper可以只允許服務(wù)器上的提供服務(wù)的一部分進(jìn)程分別與zookeeper建立通信連接,并由建立通信連接的這部分進(jìn)程接收到zookeeper分發(fā)的待分發(fā)信息后,再幫助zookeeper向其他進(jìn)程分發(fā)待分發(fā)信息,而不是像現(xiàn)有技術(shù)中服務(wù)器上的提供服務(wù)的全部進(jìn)程分別與zookeeper建立通信連接。因此,可以有效地減輕zookeeper的負(fù)載,以及減少對zookeeper的處理性能的影響。

      附圖說明

      通過閱讀下文優(yōu)選實(shí)施方式的詳細(xì)描述,各種其他的優(yōu)點(diǎn)和益處對于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實(shí)施方式的目的,而并不認(rèn)為是對本發(fā)明的限制。而且在整個附圖中,用相同的參考符號表示相同的 部件。在附圖中:

      圖1為依據(jù)本發(fā)明一個實(shí)施例的信息分發(fā)方法的過程;

      圖2為基于一種實(shí)際應(yīng)用場景,現(xiàn)有技術(shù)中zookeeper向各fpm進(jìn)程分發(fā)信息時建立的通信連接示意圖;

      圖3為基于一種實(shí)際應(yīng)用場景,本發(fā)明的方案中zookeeper向各fpm進(jìn)程分發(fā)信息時建立的通信連接示意圖;

      圖4為依據(jù)本發(fā)明一個實(shí)施例的信息分發(fā)裝置結(jié)構(gòu)示意圖。

      具體實(shí)施方式

      下面將參照附圖更詳細(xì)地描述本發(fā)明公開的示例性實(shí)施例。雖然附圖中顯示了本發(fā)明公開的示例性實(shí)施例,然而應(yīng)當(dāng)理解,可以以各種形式實(shí)現(xiàn)本發(fā)明而不應(yīng)被這里闡述的實(shí)施例所限制。相反,提供這些實(shí)施例是為了能夠更透徹地理解本發(fā)明,并且能夠?qū)⒈景l(fā)明公開的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。

      以下結(jié)合附圖,詳細(xì)說明本發(fā)明各實(shí)施例提供的技術(shù)方案。

      圖1為依據(jù)本發(fā)明實(shí)施例的信息分發(fā)方法的過程,該過程的執(zhí)行主體可以是zookeeper,zookeeper可以與一個或多個服務(wù)器相互連接(此處的連接指物理連接)。所述服務(wù)器可以是Web服務(wù)器、應(yīng)用服務(wù)器等,服務(wù)器上有多個提供服務(wù)的進(jìn)程,以Web服務(wù)器為例,其提供服務(wù)的進(jìn)程可以是快速頁模式(fast page mode,fpm)進(jìn)程等。本發(fā)明對服務(wù)器的類型并不做限定。

      zookeeper上可以有待向服務(wù)器上提供服務(wù)的各進(jìn)程分發(fā)的特定信息(稱為:待分發(fā)信息),其中,所述待分發(fā)信息可以動態(tài)變化,這種變化可以指增量變化,也可以是在直接對已有信息進(jìn)行的變更。需要說明的是,由于與zookeeper相互連接的服務(wù)器可以不止一個,因此,zookeeper可以分別針對每個服務(wù)器執(zhí)行圖1中的過程。下面對圖1中的過程具體說明。

      圖1中的過程可以包括以下步驟:

      S101:所述zookeeper接收各所述進(jìn)程發(fā)送的通信連接建立請求。

      在本發(fā)明實(shí)施例中,zookeeper上的待分發(fā)信息需要基于服務(wù)器與zookeeper之間的通信連接分發(fā),這些通信連接可以是由服務(wù)器上提供服務(wù)的各進(jìn)程通過向zookeeper發(fā)送通信連接建立請求,請求建立的。

      S102:所述zookeeper根據(jù)接收的通信連接建立請求,與各所述進(jìn)程中預(yù)定數(shù)量的進(jìn)程建立通信連接,所述預(yù)定數(shù)量少于所述服務(wù)器上提供服務(wù)的進(jìn)程總數(shù)量。

      在本發(fā)明實(shí)施例中,為了減輕zookeeper的負(fù)擔(dān),zookeeper在接收到各進(jìn)程發(fā)送的通信連接建立請求后,響應(yīng)于這些通信連接建立請求,zookeeper可以有選擇地與一部分進(jìn)程(也即,步驟S102中所述的預(yù)定數(shù)量的進(jìn)程)分別建立通信連接,而不是與全部進(jìn)程分別建立通信連接。

      在本發(fā)明實(shí)施例中,對確定預(yù)定數(shù)量的進(jìn)程的方式并不做限定,以下舉例對幾種可行的方式進(jìn)行說明。

      zookeeper可以在接收到的各通信連接建立請求中,隨機(jī)地選擇預(yù)定數(shù)量的通信連接建立請求,進(jìn)而與選擇出的通信連接建立請求對應(yīng)的進(jìn)程建立通信連接;或者,zookeeper也可以按照對各通信連接建立請求的接收時間,確定出啟動時間靠前的預(yù)定數(shù)量的通信連接建立請求,進(jìn)而與確定出的通信連接建立請求對應(yīng)的進(jìn)程建立通信連接;zookeeper可以預(yù)先設(shè)定與服務(wù)器之間的通信連接的最大數(shù)量,該最大數(shù)量即為上述的預(yù)定數(shù)量,進(jìn)而,在任意時刻,服務(wù)器上最多可以有預(yù)定數(shù)量的進(jìn)程與zookeeper之間建立有通信連接,而超出預(yù)定數(shù)量的進(jìn)程向zookeeper請求建立通信連接時,zookeeper可以拒絕該請求。

      在本發(fā)明實(shí)施例中,預(yù)定數(shù)量最小值為1,最大值為服務(wù)器提供服務(wù)的各進(jìn)程的總數(shù)量減1。預(yù)定數(shù)量越少時,與zookeeper建立通信連接的進(jìn)程越少,有益效果是越能夠減輕zookeeper的負(fù)擔(dān),預(yù)定數(shù)量越多時,與zookeeper建立通信連接的進(jìn)程越多,有益效果是信息分發(fā)的實(shí)時性越好。因此,可以根據(jù)對這兩類益處效果的實(shí)際需求,確定預(yù)定數(shù)量。

      S103:所述zookeeper建立所述服務(wù)器上提供服務(wù)的各進(jìn)程中所述預(yù)定數(shù)量的進(jìn)程以外的進(jìn)程與所述預(yù)定數(shù)量的進(jìn)程之間的關(guān)聯(lián)關(guān)系。

      在本發(fā)明實(shí)時例中,zookeeper并未與服務(wù)器上提供服務(wù)的全部進(jìn)程建立通信連接,對于建立了通信連接的進(jìn)程與未建立通信連接的進(jìn)程這兩類進(jìn)程,zookeeper可以采取不同的方式向進(jìn)程分發(fā)待分發(fā)信息。其中,建立了通信連接的進(jìn)程為:服務(wù)器上提供服務(wù)的各進(jìn)程中預(yù)定數(shù)量的進(jìn)程;未建立通信連接的進(jìn)程為:服務(wù)器上提供服務(wù)的各進(jìn)程中預(yù)定數(shù)量的進(jìn)程以外的進(jìn)程。

      對于建立了通信連接的進(jìn)程,zookeeper可以通過通信連接,直接地分發(fā)待分發(fā)信息。

      對于未建立通信連接的進(jìn)程,zookeeper可以借助建立了通信連接的進(jìn)程,間接地分發(fā)待分發(fā)信息。在這種情況下,zookeeper可以指定建立了通信連接的進(jìn)程向一個或多個未建立通信連接的進(jìn)程分發(fā)待分發(fā)信息,進(jìn)而,建立了通信連接的進(jìn)程在獲得分發(fā)給自己的待分發(fā)信息后,還可以將待分發(fā)信息分發(fā)給未建立通信連接的進(jìn)程。具體的,可以利用步驟S103中建立的關(guān)聯(lián)關(guān)系,實(shí)現(xiàn)這種間接的分發(fā)過程。

      在本發(fā)明實(shí)施例中,zookeeper可以為每個未建立通信連接的進(jìn)程關(guān)聯(lián)至少一個建立了通信連接的進(jìn)程,從而可以確保每個未建立通信連接的進(jìn)程后續(xù)都會被分發(fā)得到待分發(fā)信息;zookeeper可以為每個建立了通信連接的進(jìn)程關(guān)聯(lián)一個或多個未建立通信連接的進(jìn)程,或者,對于某些建立了通信連接的進(jìn)程,zookeeper也可以不為其關(guān)聯(lián)未建立通信連接的進(jìn)程。

      S104:所述zookeeper通過建立的通信連接,將所述待分發(fā)信息和建立的關(guān)聯(lián)關(guān)系分發(fā)給所述預(yù)定數(shù)量的進(jìn)程,以使所述預(yù)定數(shù)量的進(jìn)程根據(jù)所述關(guān)聯(lián)關(guān)系,向所述預(yù)定數(shù)量的進(jìn)程關(guān)聯(lián)的進(jìn)程分發(fā)所述待分發(fā)信息。

      通過上述方法,由于zookeeper只允許服務(wù)器上的提供服務(wù)的一部分進(jìn)程分別與zookeeper建立通信連接,并由建立通信連接的這部分進(jìn)程接收到zookeeper分發(fā)的待分發(fā)信息后,再幫助zookeeper向其他進(jìn)程分發(fā)待分發(fā)信息, 而不是像現(xiàn)有技術(shù)中服務(wù)器上的提供服務(wù)的全部進(jìn)程分別與zookeeper建立通信連接。因此,可以有效地減輕zookeeper的負(fù)載,以及減少對zookeeper的處理性能的影響。

      為了便于理解,下面對圖1中的步驟進(jìn)一步地說明。

      依據(jù)本發(fā)明的一個實(shí)施例,對于步驟S102,所述zookeeper根據(jù)接收的通信連接建立請求,與各所述進(jìn)程中預(yù)定數(shù)量的進(jìn)程建立通信連接后,還可以執(zhí)行以下步驟:所述zookeeper拒絕與所述服務(wù)器上提供服務(wù)的各進(jìn)程中所述預(yù)定數(shù)量的進(jìn)程以外的進(jìn)程建立通信連接。該步驟執(zhí)行后,被拒絕的各進(jìn)程可以等待建立了通信連接的進(jìn)程分發(fā)待分發(fā)信息,而不是周期性地向zookeeper重發(fā)通信連接建立請求,從而,可以防止增加zookeeper處理通信連接建立請求的負(fù)擔(dān)。

      依據(jù)本發(fā)明的一個實(shí)施例,對于步驟S103,所述zookeeper建立所述服務(wù)器上提供服務(wù)的各進(jìn)程中所述預(yù)定數(shù)量的進(jìn)程以外的進(jìn)程與所述預(yù)定數(shù)量的進(jìn)程之間的關(guān)聯(lián)關(guān)系,具體可以包括:所述zookeeper根據(jù)接收的通信連接建立請求和建立的通信連接,確定所述服務(wù)器上提供服務(wù)的各進(jìn)程中所述預(yù)定數(shù)量的進(jìn)程以外的進(jìn)程;所述zookeeper針對確定的每個進(jìn)程,執(zhí)行:按照預(yù)定選擇規(guī)則,從所述預(yù)定數(shù)量的進(jìn)程中選擇至少一個進(jìn)程,作為與確定的這個進(jìn)程關(guān)聯(lián)的進(jìn)程,并建立關(guān)聯(lián)關(guān)系。

      例如,當(dāng)預(yù)定數(shù)量為進(jìn)程總數(shù)量的一半時,可以為每個建立了通信連接的進(jìn)程分別關(guān)聯(lián)一個未建立通信連接的進(jìn)程,也即,使服務(wù)器上提供服務(wù)的各進(jìn)程中預(yù)定數(shù)量的進(jìn)程以外的進(jìn)程與預(yù)定數(shù)量的進(jìn)程一一對應(yīng)地關(guān)聯(lián)。

      又例如,當(dāng)預(yù)定數(shù)量為進(jìn)程總數(shù)量的三分之一時,可以為每個建立了通信連接的進(jìn)程分別關(guān)聯(lián)兩個未建立通信連接的進(jìn)程,也即,使服務(wù)器上提供服務(wù)的各進(jìn)程中預(yù)定數(shù)量的進(jìn)程以外的進(jìn)程與預(yù)定數(shù)量的進(jìn)程一一對應(yīng)。

      可以看到,在上面兩個例子中的每個例子中,為每個建立了通信連接的進(jìn)程關(guān)聯(lián)的未建立通信連接的進(jìn)程的數(shù)量是相同的,這樣的話,后續(xù)建立了通信 連接的進(jìn)程向與其關(guān)聯(lián)的未建立通信連接的進(jìn)程分發(fā)待分發(fā)信息時,每個建立了通信連接的進(jìn)程的負(fù)擔(dān)都是比較均衡的,有利于提高未建立通信連接的各進(jìn)程獲取待分發(fā)信息的速度。

      依據(jù)本發(fā)明的一個實(shí)施例,對于步驟S104,所述zookeeper通過建立的通信連接,將所述待分發(fā)信息和建立的關(guān)聯(lián)關(guān)系分發(fā)給所述預(yù)定數(shù)量的進(jìn)程,以使所述預(yù)定數(shù)量的進(jìn)程根據(jù)所述關(guān)聯(lián)關(guān)系,向所述預(yù)定數(shù)量的進(jìn)程關(guān)聯(lián)的進(jìn)程分發(fā)所述待分發(fā)信息,具體可以包括:所述zookeeper針對所述預(yù)定數(shù)量的進(jìn)程中的每個進(jìn)程,執(zhí)行:在建立的關(guān)聯(lián)關(guān)系中,確定包含這個進(jìn)程的關(guān)聯(lián)關(guān)系,通過與這個進(jìn)程之間建立的通信連接,將確定的關(guān)聯(lián)關(guān)系和所述待分發(fā)信息發(fā)送給這個進(jìn)程,以使這個進(jìn)程根據(jù)所述確定的關(guān)聯(lián)關(guān)系,向這個進(jìn)程關(guān)聯(lián)的進(jìn)程分發(fā)所述待分發(fā)信息。

      進(jìn)一步地,建立了通信連接的進(jìn)程可以基于進(jìn)程間通信的方式,向其關(guān)聯(lián)的未建立通信連接的進(jìn)程分發(fā)待分發(fā)信息。

      進(jìn)程間通信的方式具體可以是管道、消息隊列、信號量、套接字。不同的進(jìn)程間通信的方式可以適用于不同應(yīng)用場景。下面分別進(jìn)行說明。

      對于管道,可以分為匿名管道(Anonymous Pipe)和命名管道(Named Pipe)兩類。匿名管道是一種半雙工的通訊方式,數(shù)據(jù)在匿名管道中只能單向流動,而且,匿名管道只能在具有親緣關(guān)系的進(jìn)程(如父進(jìn)程和子進(jìn)程、或同一個父進(jìn)程的兩個子進(jìn)程)間使用;命名管道也是半雙工的通訊方式,但是命名管道可以在無親緣關(guān)系的進(jìn)程間使用。由于服務(wù)器提供服務(wù)的各進(jìn)程大部分都是相互獨(dú)立的,并不具有親緣關(guān)系,因此,相比于匿名管道,命名管道更適用于本發(fā)明的方案。

      對于消息隊列,消息隊列是由消息構(gòu)成的鏈表,存放在內(nèi)核中并有消息隊列標(biāo)識符進(jìn)行標(biāo)識,消息隊列可以動態(tài)地擴(kuò)充,優(yōu)點(diǎn)是信息承載量大,而且可以完全保留承載的信息的原有格式。兩方進(jìn)程在基于消息隊列進(jìn)行進(jìn)程間通信時,可以由一方進(jìn)程在消息隊列中寫入信息,相應(yīng)地,另一方進(jìn)程可以從消息 隊列中讀取對方進(jìn)程寫入的信息。

      對于信號量,信號量是一個計數(shù)器,其可以用來控制多個進(jìn)程對共享資源的訪問,共享資源可以是多個進(jìn)程共享的、本地磁盤或共享內(nèi)存中的資源。信號量可以作為一種鎖機(jī)制,通過控制多個進(jìn)程操作(包括讀取和/或?qū)懭氩僮?共享資源實(shí)現(xiàn)進(jìn)程間的通信,在同一時間只允許一個進(jìn)程操作共享資源。

      對于套接字,套接字是基于因特網(wǎng)協(xié)議(Internet Protocol)地址和應(yīng)用層端口號的一種通訊方式。套接字既可以適用于同一個服務(wù)器上的不同進(jìn)程之間的通信,也適用于不同服務(wù)器上的不同進(jìn)程之間的通信。套接字的優(yōu)點(diǎn)是在進(jìn)程之間可傳輸?shù)男畔⒘看?,而且可以為信息傳輸過程提供完整性和保密性的機(jī)制。

      上面列舉了若干種適用于本發(fā)明的方案的進(jìn)程間通信的方式。信號量的方式一般需要基于本地磁盤或共享內(nèi)存實(shí)現(xiàn),套接字的方式對服務(wù)器的要求較高,而管道和消息隊列則沒有這些限制,因此,從實(shí)施成本的角度考慮,可以優(yōu)先采用管道或消息隊列實(shí)施本發(fā)明的方案。

      依據(jù)本發(fā)明的一個實(shí)施例,服務(wù)器上提供服務(wù)的各進(jìn)程在信息分發(fā)完畢后,可以根據(jù)分發(fā)的信息的類型,執(zhí)行相應(yīng)的操作。比如,對于分發(fā)的可執(zhí)行指令信息(如批處理腳本等),各進(jìn)程可以執(zhí)行可執(zhí)行指令信息中包含的指令;對于配置信息,各進(jìn)程可以加載該配置信息并根據(jù)加載的配置信息運(yùn)行;等等。

      在本發(fā)明的方案,所述的通信連接既可以為長連接,也可以為短連接。

      對于通信連接為長連接的場景,zookeeper在執(zhí)行完步驟S101和S102后,在長連接持續(xù)時間(長連接需要連接建立者主動關(guān)閉,一般可以持續(xù)較長時間)內(nèi),每當(dāng)zookeeper上的待分發(fā)內(nèi)容有更新時,可以執(zhí)行一次步驟S103和S104,而不用重新再執(zhí)行步驟S101和S102。

      對于通信連接為短連接的場景,每當(dāng)待分發(fā)內(nèi)容有更新時,zookeeper都需要重新執(zhí)行一次步驟S101~S104,因?yàn)槎踢B接只在一次分發(fā)過程中有效,該次分發(fā)過程結(jié)束時,短連接自動關(guān)閉。

      由此可見,當(dāng)zookeeper上的待分發(fā)內(nèi)容更新頻次較高時,長連接比短連接更適用于本發(fā)明的方案,當(dāng)待分發(fā)內(nèi)容更新頻次較高較低時,短連接比長連接更適用于本發(fā)明的方案。在實(shí)際應(yīng)用中,可以根據(jù)具體場景,決定在步驟S102中建立長連接還是短連接。

      上面對圖1進(jìn)行了詳細(xì)說明。為了便于理解,本發(fā)明還基于一種實(shí)際應(yīng)用場景,對本發(fā)明的方案與現(xiàn)有技術(shù)的方案進(jìn)行了對比,如圖2、圖3所示。

      首先對該實(shí)際應(yīng)用場景進(jìn)行說明。在該實(shí)際應(yīng)用場景,Web服務(wù)器(可以有一個或多個,在該例中示出了其中一個)與zookeeper相互連接,Web服務(wù)器上有多個fpm進(jìn)程,zookeeper上有需要分發(fā)給fpm進(jìn)程的待分發(fā)信息。

      圖2為現(xiàn)有技術(shù)中zookeeper向各fpm進(jìn)程分發(fā)信息時建立的通信連接示意圖。

      在圖2中可以看到,zookeeper分別與Web服務(wù)器上的每個fpm進(jìn)程建立了一個通信連接用于分發(fā)信息。因此,zookeeper服務(wù)器與每個Web服務(wù)器之間都要長期維持大量通信連接,負(fù)擔(dān)較重,影響處理性能。

      圖3為本發(fā)明的方案中zookeeper向各fpm進(jìn)程分發(fā)信息時建立的通信連接示意圖。假定建立通信連接的fpm進(jìn)程與未建立通信連接的fpm進(jìn)程的數(shù)量相同,且建立通信連接的各fpm進(jìn)程與未建立通信連接的各fpm進(jìn)程一一對應(yīng)地關(guān)聯(lián)。

      相比于圖2,在圖3中,zookeeper只與Web服務(wù)器上一半數(shù)量的fpm進(jìn)程(即為本發(fā)明中所述的預(yù)定數(shù)量的進(jìn)程)建立了通信連接。在通信連接的存續(xù)時間內(nèi)中,可以一直由這些fpm進(jìn)程負(fù)責(zé)從zookeeper獲取待分發(fā)信息,并將獲取的待分發(fā)信息通過進(jìn)程間通信的方式,分發(fā)給關(guān)聯(lián)的未建立通信連接的fpm進(jìn)程,zookeeper可以完成對服務(wù)器上提供服務(wù)的各進(jìn)程的信息分發(fā)過程。由此可見,相比于圖2中的現(xiàn)有技術(shù),圖3中本發(fā)明的方案有效地減輕了zookeeper的負(fù)擔(dān),減小了對zookeeper的處理性能的影響。

      以上為本發(fā)明實(shí)施例提供的一種信息分發(fā)方法,基于同樣的發(fā)明思路,本 發(fā)明實(shí)施例還提供一種信息分發(fā)裝置,如圖4所示。

      圖4為依據(jù)本發(fā)明一個實(shí)施例的信息分發(fā)裝置結(jié)構(gòu)示意圖,服務(wù)器與zookeeper相互連接,所述服務(wù)器上有多個提供服務(wù)的進(jìn)程,所述zookeeper上有待分發(fā)信息,所述裝置位于所述zookeeper上,所述裝置包括:

      接收模塊401,用于接收各所述進(jìn)程發(fā)送的通信連接建立請求;

      連接模塊402,用于根據(jù)接收的通信連接建立請求,與各所述進(jìn)程中預(yù)定數(shù)量的進(jìn)程建立通信連接,所述預(yù)定數(shù)量少于所述服務(wù)器上提供服務(wù)的進(jìn)程總數(shù)量;

      關(guān)聯(lián)模塊403,用于建立所述服務(wù)器上提供服務(wù)的各進(jìn)程中所述預(yù)定數(shù)量的進(jìn)程以外的進(jìn)程與所述預(yù)定數(shù)量的進(jìn)程之間的關(guān)聯(lián)關(guān)系;

      分發(fā)模塊404,用于通過建立的通信連接,將所述待分發(fā)信息和建立的關(guān)聯(lián)關(guān)系分發(fā)給所述預(yù)定數(shù)量的進(jìn)程,以使所述預(yù)定數(shù)量的進(jìn)程根據(jù)所述關(guān)聯(lián)關(guān)系,向所述預(yù)定數(shù)量的進(jìn)程關(guān)聯(lián)的進(jìn)程分發(fā)所述待分發(fā)信息。

      可選地,所述連接模塊402還用于:

      在根據(jù)接收的通信連接建立請求,與各所述進(jìn)程中預(yù)定數(shù)量的進(jìn)程建立通信連接后,拒絕與所述服務(wù)器上提供服務(wù)的各進(jìn)程中所述預(yù)定數(shù)量的進(jìn)程以外的進(jìn)程建立通信連接。

      可選地,所述關(guān)聯(lián)模塊403具體用于:

      根據(jù)接收的通信連接建立請求和建立的通信連接,確定所述服務(wù)器上提供服務(wù)的各進(jìn)程中所述預(yù)定數(shù)量的進(jìn)程以外的進(jìn)程;針對確定的每個進(jìn)程,執(zhí)行:按照預(yù)定選擇規(guī)則,從所述預(yù)定數(shù)量的進(jìn)程中選擇至少一個進(jìn)程,作為與確定的這個進(jìn)程關(guān)聯(lián)的進(jìn)程,并建立關(guān)聯(lián)關(guān)系。

      可選地,所述分發(fā)模塊具體用于:

      針對所述預(yù)定數(shù)量的進(jìn)程中的每個進(jìn)程,執(zhí)行:在建立的關(guān)聯(lián)關(guān)系中,確定包含這個進(jìn)程的關(guān)聯(lián)關(guān)系,通過與這個進(jìn)程之間建立的通信連接,將確定的關(guān)聯(lián)關(guān)系和所述待分發(fā)信息發(fā)送給這個進(jìn)程,以使這個進(jìn)程根據(jù)所述確定的關(guān) 聯(lián)關(guān)系,向這個進(jìn)程關(guān)聯(lián)的進(jìn)程分發(fā)所述待分發(fā)信息。

      可選地,所述通信連接為長連接。

      通過上述裝置,zookeeper可以只允許服務(wù)器上的提供服務(wù)的一部分進(jìn)程分別與zookeeper建立通信連接,并由建立通信連接的這部分進(jìn)程接收到zookeeper分發(fā)的待分發(fā)信息后,再幫助zookeeper向其他進(jìn)程分發(fā)待分發(fā)信息,而不是像現(xiàn)有技術(shù)中服務(wù)器上的提供服務(wù)的全部進(jìn)程分別與zookeeper建立通信連接。因此,可以有效地減輕zookeeper的負(fù)載,以及減少對zookeeper的處理性能的影響。

      在此提供的算法和顯示不與任何特定計算機(jī)、虛擬系統(tǒng)或者其它設(shè)備固有相關(guān)。各種通用系統(tǒng)也可以與基于在此的示教一起使用。根據(jù)上面的描述,構(gòu)造這類系統(tǒng)所要求的結(jié)構(gòu)是顯而易見的。此外,本發(fā)明也不針對任何特定編程語言。應(yīng)當(dāng)明白,可以利用各種編程語言實(shí)現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對特定語言所做的描述是為了披露本發(fā)明的最佳實(shí)施方式。

      在此處所提供的說明書中,說明了大量具體細(xì)節(jié)。然而,能夠理解,本發(fā)明的實(shí)施例可以在沒有這些具體細(xì)節(jié)的情況下實(shí)踐。在一些實(shí)例中,并未詳細(xì)示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對本說明書的理解。

      類似地,應(yīng)當(dāng)理解,為了精簡本公開并幫助理解各個發(fā)明方面中的一個或多個,在上面對本發(fā)明的示例性實(shí)施例的描述中,本發(fā)明的各個特征有時被一起分組到單個實(shí)施例、圖、或者對其的描述中。然而,并不應(yīng)將該公開的方法解釋成反映如下意圖:即所要求保護(hù)的本發(fā)明要求比在每個權(quán)利要求中所明確記載的特征更多的特征。更確切地說,如下面的權(quán)利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個實(shí)施例的所有特征。因此,遵循具體實(shí)施方式的權(quán)利要求書由此明確地并入該具體實(shí)施方式,其中每個權(quán)利要求本身都作為本發(fā)明的單獨(dú)實(shí)施例。

      本領(lǐng)域那些技術(shù)人員可以理解,可以對實(shí)施例中的設(shè)備中的模塊進(jìn)行自適應(yīng)性地改變并且把它們設(shè)置在與該實(shí)施例不同的一個或多個設(shè)備中。可以把實(shí) 施例中的模塊或單元或組件組合成一個模塊或單元或組件,以及此外可以把它們分成多個子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設(shè)備的所有過程或單元進(jìn)行組合。除非另外明確陳述,本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的每個特征可以由提供相同、等同或相似目的的替代特征來代替。

      此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實(shí)施例包括其它實(shí)施例中所包括的某些特征而不是其它特征,但是不同實(shí)施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實(shí)施例。例如,在下面的權(quán)利要求書中,所要求保護(hù)的實(shí)施例的任意之一都可以以任意的組合方式來使用。

      本發(fā)明的各個部件實(shí)施例可以以硬件實(shí)現(xiàn),或者以在一個或者多個處理器上運(yùn)行的軟件模塊實(shí)現(xiàn),或者以它們的組合實(shí)現(xiàn)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,可以在實(shí)踐中使用微處理器或者數(shù)字信號處理器(DSP)來實(shí)現(xiàn)根據(jù)本發(fā)明實(shí)施例的攔截應(yīng)用程序中的植入信息的設(shè)備中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實(shí)現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設(shè)備或者裝置程序(例如,計算機(jī)程序和計算機(jī)程序產(chǎn)品)。這樣的實(shí)現(xiàn)本發(fā)明的程序可以存儲在計算機(jī)可讀介質(zhì)上,或者可以具有一個或者多個信號的形式。這樣的信號可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。

      應(yīng)該注意的是上述實(shí)施例對本發(fā)明進(jìn)行說明而不是對本發(fā)明進(jìn)行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計出替換實(shí)施例。在權(quán)利要求中,不應(yīng)將位于括號之間的任何參考符號構(gòu)造成對權(quán)利要求的限制。單詞“包含”或“包括”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個”不排除存在多個這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當(dāng)編程的計算機(jī)來實(shí)現(xiàn)。在 列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個可以是通過同一個硬件項(xiàng)來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序。可將這些單詞解釋為名稱。

      本申請可以應(yīng)用于計算機(jī)系統(tǒng)/服務(wù)器,其可與眾多其它通用或?qū)S糜嬎阆到y(tǒng)環(huán)境或配置一起操作。適于與計算機(jī)系統(tǒng)/服務(wù)器一起使用的眾所周知的計算系統(tǒng)、環(huán)境和/或配置的例子包括但不限于:個人計算機(jī)系統(tǒng)、服務(wù)器計算機(jī)系統(tǒng)、瘦客戶機(jī)、厚客戶機(jī)、手持或膝上設(shè)備、基于微處理器的系統(tǒng)、機(jī)頂盒、可編程消費(fèi)電子產(chǎn)品、網(wǎng)絡(luò)個人電腦、小型計算機(jī)系統(tǒng)﹑大型計算機(jī)系統(tǒng)和包括上述任何系統(tǒng)的分布式云計算技術(shù)環(huán)境,等等。

      計算機(jī)系統(tǒng)/服務(wù)器可以在由計算機(jī)系統(tǒng)執(zhí)行的計算機(jī)系統(tǒng)可執(zhí)行指令(諸如程序模塊)的一般語境下描述。通常,程序模塊可以包括例程、程序、目標(biāo)程序、組件、邏輯、數(shù)據(jù)結(jié)構(gòu)等等,它們執(zhí)行特定的任務(wù)或者實(shí)現(xiàn)特定的抽象數(shù)據(jù)類型。計算機(jī)系統(tǒng)/服務(wù)器可以在分布式云計算環(huán)境中實(shí)施,分布式云計算環(huán)境中,任務(wù)是由通過通信網(wǎng)絡(luò)鏈接的遠(yuǎn)程處理設(shè)備執(zhí)行的。在分布式云計算環(huán)境中,程序模塊可以位于包括存儲設(shè)備的本地或遠(yuǎn)程計算系統(tǒng)存儲介質(zhì)上。

      當(dāng)前第1頁1 2 3 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
      1