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

一種基于zookeeper的信息配置方法及裝置制造方法

文檔序號:7773273閱讀:195來源:國知局
一種基于zookeeper的信息配置方法及裝置制造方法
【專利摘要】本發(fā)明提供一種基于zookeeper的信息配置方法及裝置,所述方法通過啟動一個進程占有進程間的鎖,并建立所述進程與zookeeper服務器之間的長連接,通過所述進程監(jiān)控本地磁盤中所有的配置信息,以使待讀取配置信息的進程只需從本地磁盤中查找自身對應的配置信息,若沒有查找到,所述待讀取配置信息的進程建立與zookeeper服務器之間的短連接,從所述zookeeper服務器中獲取自身對應的配置信息并儲存在本地磁盤。可見本發(fā)明能夠降低zookeeper服務器的負載。
【專利說明】—種基于zookeeper的信息配置方法及裝置
【技術領域】
[0001]本發(fā)明涉及計算機【技術領域】,具體涉及ー種基于ZOOk^per的信息配置方法及裝置。
【背景技術】
[0002]隨著計算機技術的不斷發(fā)展,在網(wǎng)絡應用中通常采用分布式系統(tǒng),利用多臺服務器一起提供服務,每個服務器都有上百個進程,這些服務器的進程配置通常都是ー樣的,當某一個進程配置需要修改吋,必須對所有的服務器中該進程配置都進行修改。[0003]目前常利用zookeeper對多臺服務器中的所有進程配置信息進行集中管理。zookeeper顧名思義動物園管理員,在計算機【技術領域】中zookeeper是ー個針對大型分布式系統(tǒng)的可靠協(xié)調(diào)系統(tǒng),提供的功能包括:配置維護、名字服務、分布式同歩、組服務等?,F(xiàn)有的基于zookeeper的信息配置方案是:姆個服務器中姆個進程都要建立與zookeeper服務器之間的長連接,每個進程通過調(diào)用zooke^er服務器的接ロ監(jiān)控自身進程的配置信息,當某一個進程的配置信息需要修改吋,操作人員只需要修改zookeeper服務器上相應的配置信息,一旦發(fā)現(xiàn)zooke^er服務器的配置信息發(fā)生變動,對應的服務器進程及時更新自身進程的配置信息。
[0004]由于在實際應用中常常是上百臺服務器共同服務,每個服務器通常至少運行上百個進程,比如:若有100個服務器一起提供服務,每個服務器上運行200個進程吋,每個服務器中的每個進程都與zookeeper服務器建立一個長連接,共需要建立20000個連接,可見這種配置方式給zookeeper服務器帶來較大的負載,嚴重影響zookeeper服務器的處理性能。

【發(fā)明內(nèi)容】

[0005]本發(fā)明的一種基于zook^per的信息配置方法及裝置,用以保證服務器中所有進程配置信息得到監(jiān)控的同時有效地降低zooke^er服務器的負載。
[0006]為此,本發(fā)明提供如下技術方案:
[0007]第一方面,本發(fā)明提供了一種基于zook^per的信息配置方法,其包括:
[0008]啟動ー個進程占有進程間的鎖,并建立所述進程與zookeeper服務器之間的長連接,通過所述進程監(jiān)控本地磁盤中所有配置信息,以使所述zookeeper服務器在配置信息發(fā)生變動時,向所述進程發(fā)送更新配置信息通知;
[0009]所述進程根據(jù)接收到的更新配置信息通知,從所述zookeeper服務器中獲取對應的配置信息并更新到本地磁盤中,以使待讀取配置信息的進程從本地磁盤中查找自身對應的配置信息,若查找到對應的配置信息,所述待讀取配置信息的進程從本地磁盤中讀取自身對應的配置信息;若沒有查找到對應的配置信息,所述待讀取配置信息的進程建立與zookeeper服務器之間的短連接,并從所述zookeeper服務器中獲取自身對應的配置信息并儲存在本地磁盤。
[0010]在第一方面的第一種可能的實現(xiàn)方式中,在更新到本地磁盤中之后,還包括:[0011]更新到共享內(nèi)存中,以使所述待讀取配置信息的進程從所述共享內(nèi)存中查找自身對應的配置信息;
[0012]則所述從所述zookeeper服務器中獲取自身對應的配置信息并儲存在本地磁盤是:
[0013]從所述zookeeper服務器中獲取自身對應的配置信息并儲存在本地磁盤和共享內(nèi)存中。
[0014]結合第一方面以及第一方面的第一種可能的實現(xiàn)方式,在二種可能的實現(xiàn)方式中,所述建立一個進程與zookeeper服務器之間的長連接,并通過所述進程監(jiān)控本地磁盤中所有的配置信息,包括:
[0015]啟動ー個專用于監(jiān)控進程配置信息的進程占有進程間的鎖;
[0016]建立所述專用于監(jiān)控進程配置信息的進程與zook^per服務器之間的長連接,通過所述專用監(jiān)控配置信息的進程監(jiān)控本地磁盤中所有的配置信息。
[0017]結合第一方面以及第一方面的第一種可能的實現(xiàn)方式,在三種可能的實現(xiàn)方式中,所述建立一個進程與zook^per服務器之間的長連接,并通過所述進程監(jiān)控本地磁盤中所有的配置信息,包括:
[0018]啟動待讀取配置信息的進程占有進程間的鎖;
[0019]在所述待讀取配置信息的進程中啟動ー個線程或者ー個進程,建立所述線程或者所述進程與zookeeper服務器之間的長連接,通過所述線程或者所述進程監(jiān)控本地磁盤中所有的配置信息。
[0020]結合第一方面以及第一方面的第一種可能的實現(xiàn)方式中第三種可能的實現(xiàn)方式,在第四種可能實現(xiàn)的方式中,在所述待讀取配置信息的進程中啟動的ー個線程為異步線程。
[0021]第二方面,本發(fā)明提供了一種基于zook^per的信息配置裝置,所述裝置包括:
[0022]監(jiān)控單元,用于啟動ー個進程占有進程間的鎖,并建立所述進程與zookeeper服務器之間的長連接,并通過所述進程監(jiān)控本地磁盤中所有的配置信息,以使所述zook^per服務器在配置信息發(fā)生變動時,向所述進程發(fā)送更新配置信息通知;
[0023]更新単元,用于通過所述進程根據(jù)所述更新配置信息通知從所述zookeeper服務器中獲取對應的配置信息并更新到本地磁盤中,以使待讀取配置信息的進程從本地磁盤中查找自身對應的配置信息,若查找到對應的配置信息,所述待讀取配置信息的進程從本地磁盤中讀取自身對應的配置信息;若沒有查找到對應的配置信息,所述待讀取配置信息的進程建立與zookeeper服務器之間的短連接,并從所述zookeeper服務器中獲取自身對應的配置信息并儲存在本地磁盤。
[0024]在第二方面中第一種可能的實現(xiàn)方式中,所述裝置還包括:
[0025]儲存單元,用于將配置信息更新或者儲存至本地磁盤時,并更新或者儲存至共享內(nèi)存,以使所述待讀取配置信息的進程從所述共享內(nèi)存中查找自身對應的配置信息。
[0026]結合第二方面以及第二方面中第一種可能的實現(xiàn)方式,在第二種可能實現(xiàn)的方式中,所述監(jiān)控單元,包括:
[0027]第一占有子単元,用于啟動ー個專用于監(jiān)控進程配置信息的進程占有進程間的鎖;[0028]第一監(jiān)控子単元,用于建立所述專用于監(jiān)控進程配置信息的進程與zook^per服務器之間的長連接,通過所述專用監(jiān)控配置信息的進程監(jiān)控本地磁盤中所有的配置信息。
[0029]結合第二方面以及第二方面中第一種可能的實現(xiàn)方式,在第三種可能實現(xiàn)的方式中,所述監(jiān)控單元,包括:
[0030]第二占有子単元,用于啟動待讀取配置信息的進程占有進程間的鎖;
[0031]第二監(jiān)控子単元,用于在所述待讀取配置信息的進程中啟動ー個線程或者ー個進程,建立所述線程或者所述進程與zookeeper服務器之間的長連接,通過所述線程或者所述進程監(jiān)控本地磁盤中所有的配置信息。
[0032]結合第二方面以及第二方面中第一種可能的實現(xiàn)方式中第二種可能實現(xiàn)的方式,在第三種可能的實現(xiàn)方式中,所述第二監(jiān)控子単元,用于在所述待讀取配置信息的進程中啟動ー個異步線程,建立所述異步進程與zookeeper服務器之間的ー個長連接,通過所述異步線程監(jiān)控所述進程間通信中所有進程的配置信息。
[0033]由上述實施例可以看出,與現(xiàn)有技術相比,本發(fā)明的有益效果在于:
[0034]通過啟動一個進程占用進程間的鎖,使得該進程對共享數(shù)據(jù)的修改的時間段內(nèi)其他進程無法對該共享數(shù)據(jù)進行任何操作,且該進程對共享數(shù)據(jù)的操作其他進程都能夠立刻知道,建立該進程與zookeeper服務器之間的長連接,通過該進程監(jiān)控本地磁盤中所有的配置信息。
[0035]根據(jù)接收到zooke印er服務器發(fā)出的更新配置信息的通知,所述進程從所述zookeeper服務器中獲取對應的配置信息并更新到本地磁盤中,任意ー個進程運行需要獲取配置信息時,只需要去本地磁盤查找自身對應的配置信息,而無需再與zookeeper服務器之間建立長連接;若本地磁盤中沒有對應的配置信息,說明該進程的相關配置信息還沒有被監(jiān)控,這種情況下只需與zookeeper服務器之間的建立一個短連接,從所述zookeeper服務器中獲取自身配置信息并儲存在本地磁盤,以使該進程的配置信息也得到監(jiān)控,由于已經(jīng)與zook^per服務器之間建立了長連接的用于監(jiān)控本地磁盤中所有配置信息的進程會實時或者定期掃描本地磁盤,當掃描到本地磁盤中存在該進程的配置信息,將對該進程的配置信息也進行監(jiān)控,以保證實時更新該進程的配置信息。由此可見:利用本發(fā)明的方法每個服務器不需要建立每個進程與zookeeper服務器之間的長連接,而是通過利用ー個進程占有進程間的鎖和本地磁盤的共享,只建立一個進程與zook^per服務器之間的長連接和最初時的短連接的方式即可保證所有進程的配置信息都得到監(jiān)控,同時降低zook^per服務器的負載。
【專利附圖】

【附圖說明】
[0036]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術中的技術方案,下面將對實施例或現(xiàn)有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請中記載的ー些實施例,對于本領域普通技術人員來講,還可以根據(jù)這些附圖獲得其他的附圖。
[0037]圖1是本發(fā)明實施例一種基于zookeeper的信息配置方法實施例1的流程圖;
[0038]圖2是本發(fā)明實施例一種基于zookeeper的信息配置方法實施例2的流程圖;
[0039]圖3是本發(fā)明實施例一種基于zookeeper的信息配置框架圖;[0040]圖4是現(xiàn)有技術的基于zookeeper的信息配置框架圖;
[0041]圖5是本發(fā)明實施例一種基于zookeeper的信息配置裝置實施例1的不意圖;
[0042]圖6是本發(fā)明實施例一種基于zookeeper的信息配置裝置實施例2的示意圖。
【具體實施方式】
[0043]為了使本【技術領域】的人員更好地理解本發(fā)明方案,下面結合附圖和實施方式對本發(fā)明實施例作進ー步的詳細說明。
[0044]參見圖1,不出了圖1是本發(fā)明實施例一種基于zookeeper的信息配置方法實施例1的流程圖,所述方法包括:
[0045]步驟101,啟動ー個進程占有進程間的鎖,并建立所述進程與zookeeper服務器之間的長連接,通過所述進程監(jiān)控本地磁盤中所有配置信息,以使所述zooke^er服務器在配置信息發(fā)生變動時,向所述進程發(fā)送更新配置信息通知。
[0046]進程是操作系統(tǒng)結構的基礎,是ー個正在執(zhí)行的程序,服務器中任意ー個進程啟動運行時,都需要先讀取配置信息,然后按照配置進行程序流程處理。
[0047]本發(fā)明實施例中啟動ー個進程占有進程間的鎖是為了實現(xiàn)服務器中多個進程之間共享資源,一個進程對共享數(shù)據(jù)的修改的時候,其他進程無法在同一時間對共享數(shù)據(jù)進行操作,任何一個進程對共享數(shù)據(jù)進行操作,其他進程能夠立刻看到。為了實現(xiàn)這個目的,需要服務器系統(tǒng)內(nèi)核提供鎖,這種鎖的具體實現(xiàn)方式是:文件鎖(記錄鎖)、SyStem V信號量鎖(信號燈)、互斥鎖、條件變量、讀寫鎖等。文件鎖、信號量鎖一般用于進程間的同步,互斥鎖、條件變量、讀寫鎖一 般用于線程間的同步,具體根據(jù)實際的情況決定,在此并不做具體限定。
[0048]本步驟中啟動ー個進程占用進程間的鎖,并建立所述進程與zookeeper服務器之間的長連接,通過所述進程監(jiān)控本地磁盤中所有的配置信息,具體有兩種實現(xiàn)方式,下面分別對這兩種實現(xiàn)方式進行解釋說明。
[0049]第一種實現(xiàn)方式,可以包括:
[0050]啟動ー個專用于監(jiān)控進程配置信息的進程占有進程間的鎖;
[0051 ] 建立所述專用于監(jiān)控進程配置信息的進程與zook^per服務器之間的長連接,通過所述專用于監(jiān)控進程配置信息的進程監(jiān)控本地磁盤中所有的配置信息。
[0052]服務器啟動ー個專用于監(jiān)控進程配置信息的進程,該進程只用于監(jiān)控服務器中所有進程的配置信息。該進程占有進程間的鎖就實現(xiàn)所有進程間的同步,鎖的實際功能是當專用于監(jiān)控進程配置信息的進程對本地磁盤中數(shù)據(jù)進行寫入操作時,其他進程不能對該本地磁盤的數(shù)據(jù)進行任何操作,同樣,當其他進程從本地磁盤中讀取數(shù)據(jù)時,專用于監(jiān)控進程配置信息的進程也不能對本地磁盤進行任何操作,因此通過占有進程間的鎖來保證所有進程對本地磁盤操作的互不干擾。
[0053]第二種實現(xiàn)方式,可以包括:
[0054]啟動所述待讀取配置信息的進程占有進程間的鎖;
[0055]在所述待讀取配置信息的進程中啟動ー個線程或者ー個進程,建立所述線程或者所述進程與zookeeper服務器之間的長連接,通過所述線程或者所述進程監(jiān)控本地磁盤中所有的配置信息。[0056]當服務器中一個進程需要讀取配置信息時,利用這個待讀取配置信息的進程占有進程間的鎖,這個鎖的具體作用和上面的功能一祥,在此不再贅述。[0057]所述待讀取配置信息的進程可以啟動一個線程與zooke^er服務器之間的長連接,并通過該線程監(jiān)控本地磁盤中所有的配置信息;也可以是,所述待讀取配置信息的進程啟動ー個進程與zookeeper服務器之間的長連接,并通過該進程監(jiān)控本地磁盤中所有的配置信息。
[0058]為了不影響進程的主流程執(zhí)行速率,不浪費系統(tǒng)資源,本發(fā)明實施例還提供了一種任選方案。
[0059]作為本發(fā)明實施例一種任選方案,所述待讀取配置信息的進程啟動的ー個線程可以為異步線程。
[0060]由于進程與zooke^er服務器之間保持著長連接,當操作人員需要修改配置吋,只需要修改zookeeper服務器上的對應的配置信息即可,當zookeeper服務器中監(jiān)控的配置信息發(fā)生變動時,就會立刻向所述進程發(fā)出更新配置信息通知。
[0061]步驟102,所述進程根據(jù)接收到的更新配置信息通知,從所述zookeeper服務器中獲取對應的配置信息并更新到本地磁盤中,以使待讀取配置信息的進程從本地磁盤中查找自身對應的配置信息,若查找到對應的配置信息,所述待讀取配置信息的進程從本地磁盤中讀取自身對應的配置信息;若沒有查找到對應的配置信息,所述待讀取配置信息的進程建立與zookeeper服務器之間的短連接,并從所述zookeeper服務器中獲取自身對應的配置信息并儲存在本地磁盤。
[0062]根據(jù)所述更新配置信息通知從zooke^er服務器中獲取配置信息并更新到本地磁盤中,保證本地磁盤中儲存的是最新的配置信息,以使任意一個進程從所述本地磁盤讀取對應的配置信息都是最新的配置信息,確保配置信息的實時更新,以保證服務器中各個進程正確執(zhí)行。
[0063]當服務器中有進程需要運行,必須先讀取自身配置信息,只需要從本地磁盤中查找自身對應的配置信息。
[0064]當沒有查找到對應的配置信息時,說明當前待讀取配置信息的進程的配置信息還沒有被監(jiān)控,因此,需要當前待讀取配置信息的進程建立與zookeeper服務器之間的短連接,從所述zookeeper服務器中獲取自身對應的配置信息,并儲存在本地磁盤中。
[0065]所謂短連接是與長連接相対的兩種連接方式,短連接的操作步驟是:建立連接---數(shù)據(jù)傳輸一關閉連接。短連接的方式是在建立連接傳輸數(shù)據(jù)后立刻斷開連接。長連接的操作步驟是:建立連接一數(shù)據(jù)傳輸一(一直保持連接)-ー數(shù)據(jù)傳輸一一關閉連接。長連接的方式在建立連接傳輸數(shù)據(jù)后并不斷開,這種通信連接關系一直存在。相比之下短連接方式能夠節(jié)約服務器系統(tǒng)資源。
[0066]與zookeeper服務器建立長連接的進程會掃描本地磁盤,當發(fā)現(xiàn)本地磁盤中有新的進程的配置信息時(也就是本地磁盤中存在還未被監(jiān)控的配置信息吋),將該配置信息加入監(jiān)控內(nèi)容中,保證本地磁盤中所有進程的配置信息都能夠及時得到監(jiān)控,以實現(xiàn)實時更新所有進程的配置信息。
[0067]由上述實施例可以看出,與現(xiàn)有技術相比,本發(fā)明的有益效果在于:
[0068]通過啟動一個進程占用進程間的鎖,使得該進程對共享數(shù)據(jù)的修改的時間段內(nèi)其他進程無法對該共享數(shù)據(jù)進行任何操作,且該進程對共享數(shù)據(jù)的操作其他進程都能夠立刻知道,建立該進程與zookeeper服務器之間的長連接,該進程掃描本地磁盤,以監(jiān)控本地磁盤中所有的配置信息。
[0069]根據(jù)接收到的通知從所述zookeeper服務器中獲取對應的配置信息,并更新到本地磁盤中,任意ー個進程運行需要獲取配置信息時,只需要去本地磁盤獲取對應的配置信息,而無需再與zooke^er服務器之間建立長連接;若本地磁盤中沒有對應的配置信息,說明該進程的相關配置信息還沒有被監(jiān)控,這種情況下該進程只需建立與zook^per服務器之間的短連接,從所述zookeeper服務器中獲取自身配置信息并儲存在本地磁盤,以使該配置信息也得到監(jiān)控。
[0070]由此可見:依據(jù)本發(fā)明提供的方法,每個服務器不需要建立每個進程與zookeeper服務器之間的長連接,而是利用進程間的鎖和本地磁盤的共享,只建立一個進程與zookeeper服務器之間的長連接,并利用最初時的短連接方式,就能夠保證所有進程的配置信息都得到監(jiān)控,同時降低zookeeper服務器的負載。
[0071]上述基于zook^per的信息配置方法實施例1中將配置信息儲存在本地磁盤中,由于進程查看本地磁盤并從中獲取自身對應的配置信息的處理速率低下,導致整個服務器的進程處理性能低下,因此,本發(fā)明還提供了一種任選方案。
[0072]參見圖2,示出了本發(fā)明實施例一種基于zookeeper的信息配置方法實施例2的流程圖,所述方法包括:
[0073]步驟201,啟動ー個進程占有進程間的鎖,并建立所述進程與zookeeper服務器之間的長連接,通過所述進程監(jiān)控共享內(nèi)存中所有配置信息,以使所述zook^per服務器在配置信息發(fā)生變動時,向所述進程發(fā)送更新配置信息通知;
[0074]步驟202,所述進程根據(jù)接收到的更新配置信息通知,從所述zooke印er服務器中獲取對應的配置信息并更新到本地磁盤和共享內(nèi)存中,以使待讀取配置信息的進程從共享內(nèi)存和本地磁盤中查找自身對應的配置信息,若查找到對應的配置信息,所述待讀取配置信息的進程從共享內(nèi)存中讀取自身對應的配置信息;若沒有查找到對應的配置信息,所述待讀取配置信息的進程建立與zookeeper服務器之間的短連接,并從所述zookeeper服務器中獲取自身對應的配置信息并儲存在共享內(nèi)存和本地磁盤中。
[0075]當服務器中的任意一個進程需要運行時需要先獲取自身配置信息,首先查看共享內(nèi)存中是否保存對應的配置信息,若沒有,再查看本地磁盤中是否保存對應的配置信息,步驟202中可知任意一個進程的配置信息當保存在共享內(nèi)存的同時都會保存在本地磁盤中,因此,本地磁盤和共享內(nèi)存中所保存的配置信息是一致的。只需要查看其中任意ー個即可,但是考慮到,共享內(nèi)存中的數(shù)據(jù)可能由于某些原因造成數(shù)據(jù)丟失,而本地磁盤中的數(shù)據(jù)ー般都是持久化保存的、不容易丟失。因此,將配置信息儲存在本地磁盤的方式保證了配置信息的可靠性,將配置信息儲存在共享內(nèi)存的方式保證了系統(tǒng)的運行速率,提高系統(tǒng)性能。因此,在共享內(nèi)存和本地磁盤都進行查看避免信息查看疏漏。
[0076]與實施例1所不同的是,本實施例中在將所述配置信息儲存在本地磁盤之后,還増加了將所述配置信息儲存在共享內(nèi)存,進程從共享內(nèi)存中讀取數(shù)據(jù)的速度要遠遠大于從本地磁盤中讀取數(shù)據(jù)的速度,因此通過從共享內(nèi)存中讀取對應的配置信息,以提高進程配置信息的速率。[0077]下面以web服務器為例對上述一種基于zookeeper的信息配置方法實施例2做進一歩解釋說明,具體請參與圖3,為本發(fā)明實施例提供的一種基于zookeeper的信息配置框架圖。
[0078]ー個web服務器通常運行128個快速頁模式(英文fast page mode,縮寫fpm)進程提供服務,按照上述步驟201和步驟202,啟動ー個進程占用進程間的鎖,并建立ー個進程與zook^per服務器之間的長連接,然后所述進程根據(jù)所述更新配置信息通知從所述zookeeper服務器中獲取配置信息,并更新至本地磁盤和共享內(nèi)存中,當web服務器中任意一個進程需要獲取配置信息時,直接從共享內(nèi)存中查找對應的配置信息,若查找到,直接獲取該配置信息;若沒有通過建立與zooke^er服務器之間的短連接,以獲取自身對應的配置信息,并儲存在本地磁盤和共享內(nèi)存中??梢姡麄€web服務器只需要與zook^per服務器之間建立一個長連接,和初次獲取配置信息時建立的短連接即可保證所有進程的配置信息得到監(jiān)控和及時更新。
[0079]參與圖4,示出的現(xiàn)有技術中的基于zooke印er的信息配置框架圖,web服務器中的每個進程都必須與zookeeper服務器之間建立一個長連接,相比之下本發(fā)明實施例提供的基于zookeeper的信息配置方法,能夠大幅度減少與zookeeper之間的長連接,從而在保證服務器中所有進程配置信息得到監(jiān)控的同吋,降低zookeeper服務器的負載。
[0080]由上述實施例可以看出,與現(xiàn)有技術相比,本發(fā)明的有益效果在于:[0081]通過啟動一個進程占有進程間的鎖,并建立該進程與zookeeper服務器之間的長連接,就能夠保證進程運行所使用的配置信息及時得到更新保存,降低zookeeper服務器的負載。另外,通過將配置信息儲存在共享內(nèi)存中,以使待讀取配置信息的進程通過共享內(nèi)存獲取自身對應的配置信息,提高獲取配置信息的速率,進而提高服務器的處理性能。
[0082]與基于zook^per的信息配置方法實施例1相對應,本發(fā)明實施例還提供了ー種基于zookeeper的信息配置裝置。
[0083]參見圖5,示出了本發(fā)明實施例一種基于zookeeper的信息配置裝置實施例1的示意圖,所述裝置包括:監(jiān)控單元301和更新単元302,下面結合該裝置的工作原理進ー步介紹其內(nèi)部結構以及連接關系。
[0084]監(jiān)控單元301,用于啟動一個進程占用進程間的鎖,并建立所述進程與zook^per服務器之間的長連接,通過所述進程監(jiān)控本地磁盤中所有的配置信息,以使所述zook^per服務器在配置信息發(fā)生變動時,向所述進程發(fā)送更新配置信息通知;
[0085]更新単元302,用于通過所述進程根據(jù)所述更新配置信息通知從所述zook^per服務器中獲取對應的配置信息并更新到本地磁盤中,以使待讀取配置信息的進程從本地磁盤中查找自身對應的配置信息,若查找到對應的配置信息,所述待讀取配置信息的進程從本地磁盤中讀取自身對應的配置信息;若沒有查找到對應的配置信息,所述待讀取配置信息的進程建立與zookeeper服務器之間的短連接,并從所述zookeeper服務器中獲取自身對應的配置信息并儲存在本地磁盤。
[0086]作為本發(fā)明一種任選方案,所述監(jiān)控単元,包括:
[0087]第一占有子単元,用于啟動ー個專用于監(jiān)控進程配置信息的進程占有進程間的鎖;
[0088]第一監(jiān)控子単元,用于建立所述專用于監(jiān)控進程配置信息的進程與zook^per服務器之間的長連接,通過所述專用監(jiān)控配置信息的進程監(jiān)控本地磁盤中所有的配置信息。
[0089]作為本發(fā)明一種任選方案,,所述監(jiān)控単元,包括:
[0090]第二占有子単元,用于啟動所述待讀取配置信息的進程占有進程間的鎖;
[0091]第二監(jiān)控子単元,用于在所述待讀取配置信息的進程中啟動ー個線程或者ー個進程,建立所述線程或者所述進程與zookeeper服務器之間的長連接,通過所述線程或者所述進程監(jiān)控本地磁盤中所有的配置信息。
[0092]作為本發(fā)明一種任選方案,所述第二監(jiān)控子単元,所述第二監(jiān)控子単元,具體用于在所述待讀取配置信息的進程中啟動ー個異步線程,建立所述異步進程與zookeeper服務器之間的ー個長連接,通過所述異步線程監(jiān)控所述進程間通信中所有進程的配置信息。
[0093]由上述實施例可以看出,本發(fā)明的有益效果在于:
[0094]通過啟動一個進程占用進程間的鎖,使得該進程對共享數(shù)據(jù)的修改的時間段內(nèi)其他進程無法對該共享數(shù)據(jù)進行任何操作,且該進程對共享數(shù)據(jù)的操作其他進程都能夠立刻知道,建立該進程與zookeeper服務器之間的長連接,該進程掃描本地磁盤,以監(jiān)控本地磁盤中所有的配置信息。
[0095]根據(jù)接收到的通知從所述zookeeper服務器中獲取對應的配置信息,并更新到本地磁盤中,任意ー個進程運行需要獲取配置信息時,只需要去本地磁盤獲取對應的配置信息,而無需再與zooke^er服務器之間建立長連接;若本地磁盤中沒有對應的配置信息,說明該進程的相關配置信息還沒有被監(jiān)控,這種情況下該進程只需建立與zook^per服務器之間的短連接,從所述zookeeper服務器中獲取自身配置信息并儲存在本地磁盤,以使該配置信息也得到監(jiān)控。
[0096]由此可見:依據(jù)本發(fā)明提供的裝置,每個服務器不需要建立每個進程與zookeeper服務器之間的長連接,而是利用進程間的鎖和本地磁盤的共享,只建立一個進程與zookeeper服務器之間的長連接,并利用最初時的短連接方式,就能夠保證所有進程的配置信息都得到監(jiān)控的同吋,降低zook^per服務器的負載。
[0097]與基于zook^per的信息配置方法實施例2相對應,本發(fā)明實施例還提供了ー種基于zookeeper的信息配置裝置。
[0098]參見圖6,示出了本發(fā)明實施例一種基于zookeeper的信息配置裝置實施例2的示意圖,所述裝置包括:監(jiān)控單元401、更新単元402和儲存單元403,下面結合該裝置的工作原理進ー步介紹其內(nèi)部結構以及連接關系。
[0099]監(jiān)控單元401,用于啟動一個進程占用進程間的鎖,并建立所述進程與zook^per服務器之間的長連接,通過所述進程監(jiān)控本地磁盤中所有的配置信息,以使所述zook^per服務器在配置信息發(fā)生變動時,向所述進程發(fā)送更新配置信息通知。
[0100]更新單元402,用于通過所述進程根據(jù)所述更新配置信息通知從所述zookeeper服務器中獲取對應的配置信息并更新到本地磁盤中,以使待讀取配置信息的進程從本地磁盤中查找自身對應的配置信息,若查找到對應的配置信息,所述待讀取配置信息的進程從本地磁盤中讀取自身對應的配置信息;若沒有查找到對應的配置信息,所述待讀取配置信息的進程建立與zookeeper服務器之間的短連接,并從所述zookeeper服務器中獲取自身對應的配置信息并儲存在本地磁盤。
[0101]儲存單元403,用于將配置信息更新到本地磁盤或者儲存在本地磁盤的同時,更新或者儲存至共享內(nèi)存中,以使所述待讀取配置信息的進程從所述共享內(nèi)存中讀取自身對應的配置信息。
[0102]與一種基于zooke印er的信息配置裝置實施例1所不同的是,本實施例增加了儲存單元,用于在將配置信息更新或者儲存至本地磁盤,同時還更新或者儲存至共享內(nèi)存中。這樣處理使得共享內(nèi)存中同時也保存在所有進程的配置信息,以使所述待讀取配置信息的進程從所述共享內(nèi)存中讀取自身對應的配置信息。
[0103]由上述實施例可以看出,與現(xiàn)有技術相比,本發(fā)明的有益效果在于:
[0104]通過啟動一個進程占有進程間的鎖,并建立該進程與zookeeper服務器之間的長連接,就能夠保證進程運行所使用的配置信息及時得到更新保存,降低zookeeper服務器的負載。另外,通過將配置信息儲存在共享內(nèi)存中,以使進程通過共享內(nèi)存獲取配置信息,提高獲取配置信息的速率,進而提高服務器的處理性能。
[0105]本發(fā)明方案可以在由計算機執(zhí)行的計算機可執(zhí)行指令的一般上下文中描述,例如程序単元。一般地,程序単元包括執(zhí)行特定任務或實現(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對象、組件、數(shù)據(jù)結構等等。也可以在分布式計算環(huán)境中實踐本發(fā)明方案,在這些分布式計算環(huán)境中,由通過通信網(wǎng)絡而被連接的遠程處理設備來執(zhí)行任務。在分布式計算環(huán)境中,程序単元可以位于包括存儲設備在內(nèi)的本地和遠程計算機存儲介質中。
[0106]本說明書中的各個實施例均采用遞進的方式描述,各個實施例之間相同相似的部分互相參見即可,每個實施例重點說明的都是與其他實施例的不同之處。尤其,對于裝置實施例而言,由于其基本相似于方法實施例,所以描述得比較簡單,相關之處參見方法實施例的部分說明即可。以上所描述的裝置實施例僅僅是示意性的,其中所述作為分離部件說明的単元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理単元,即可以位于ー個地方,或者也可以分布到多個網(wǎng)絡単元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部模塊來實現(xiàn)本實施例方案的目的。本領域普通技術人員在不付出創(chuàng)造性勞動的情況下,即可以理解并實施。
[0107]以上對本發(fā)明實施例進行了詳細介紹,本文中應用了【具體實施方式】對本發(fā)明進行了闡述,以上實施例的說明只是用于幫助理解本發(fā)明的方法及設備;同時,對于本領域的一般技術人員,依據(jù)本發(fā)明的思想,在【具體實施方式】及應用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不應理解為對本發(fā)明的限制。
【權利要求】
1.一種基于zookeeper的信息配置方法,其包括: 啟動ー個進程占有進程間的鎖,并建立所述進程與zookeeper服務器之間的長連接,通過所述進程監(jiān)控本地磁盤中所有配置信息,以使所述zookeeper服務器在配置信息發(fā)生變動吋,向所述進程發(fā)送更新配置信息通知; 所述進程根據(jù)接收到的更新配置信息通知,從所述zook^per服務器中獲取對應的配置信息并更新到本地磁盤中,以使待讀取配置信息的進程從本地磁盤中查找自身對應的配置信息,若查找到對應的配置信息,所述待讀取配置信息的進程從本地磁盤中讀取自身對應的配置信息,若沒有查找到對應的配置信息,所述待讀取配置信息的進程建立與zookeeper服務器之間的短連接,從所述zookeeper服務器中獲取自身對應的配置信息并儲存在本地磁盤。
2.根據(jù)權利要求1所述的方法,其中,在更新到本地磁盤中之后,還包括: 更新到共享內(nèi)存中,以使所述待讀取配置信息的進程從所述共享內(nèi)存中查找自身對應的配置信息; 則所述從所述zookeeper服務器中獲取自身對應的配置信息并儲存在本地磁盤是: 從所述zookeeper服務器中獲取自身對應的配置信息并儲存在本地磁盤和共享內(nèi)存中。
3.根據(jù)權利要求1或2所述的方法,其中,所述啟動一個進程占有進程間的鎖,并建立所述進程與zookeeper服務器之間的長連接,通過所述進程監(jiān)控本地磁盤中所有配置信息,包括: 啟動ー個專用于監(jiān)控進程配 置信息的進程占有進程間的鎖; 建立所述專用于監(jiān)控進程配置信息的進程與zooke^er服務器之間的長連接,通過所述專用監(jiān)控配置信息的進程監(jiān)控本地磁盤中所有的配置信息。
4.根據(jù)權利要求1或2所述的方法,其中,所述啟動一個進程占有進程間的鎖,并建立所述進程與zookeeper服務器之間的長連接,通過所述進程監(jiān)控本地磁盤中所有配置信息,包括: 啟動待讀取配置信息的進程占有進程間的鎖; 在所述待讀取配置信息的進程中啟動ー個線程或者ー個進程,建立所述線程或者所述進程與zookeeper服務器之間的長連接,通過所述線程或者所述進程監(jiān)控本地磁盤中所有的配置信息。
5.根據(jù)權利要求4所述的方法,其中,在所述待讀取配置信息的進程中啟動的ー個線程為異步線程。
6.一種基于zookeeper的信息配置裝置,其包括: 監(jiān)控單元,用于啟動一個進程占用進程間的鎖,并建立所述進程與zookeeper服務器之間的長連接,通過所述進程監(jiān)控本地磁盤中所有的配置信息,以使所述zookeeper服務器在配置信息發(fā)生變動時,向所述進程發(fā)送更新配置信息通知; 更新単元,用于通過所述進程根據(jù)所述更新配置信息通知從所述zooke^er服務器中獲取對應的配置信息并更新到本地磁盤中,以使待讀取配置信息的進程從本地磁盤中查找自身對應的配置信息,若查找到對應的配置信息,所述待讀取配置信息的進程從本地磁盤中讀取自身對應的配置信息;若沒有查找到對應的配置信息,所述待讀取配置信息的進程建立與zookeeper服務器之間的短連接,并從所述zookeeper服務器中獲取自身對應的配置信息并儲存在本地磁盤。
7.根據(jù)權利要求6所述的裝置,其中,所述裝置還包括: 儲存單元,用于將配置信息更新或者儲存至本地磁盤時,并更新或者儲存至共享內(nèi)存,以使所述待讀取配置信息的進程從所述共享內(nèi)存中查找自身對應的配置信息。
8.根據(jù)權利要求6或7所述的裝置,其中,所述監(jiān)控単元,包括: 第一占有子単元,用于啟動ー個專用于監(jiān)控進程配置信息的進程占有進程間的鎖; 第一監(jiān)控子単元,用于建立所述專用于監(jiān)控進程配置信息的進程與zooke^er服務器之間的長連接,通過所述專用監(jiān)控配置信息的進程監(jiān)控本地磁盤中所有的配置信息。
9.根據(jù)權利要求6或7所述的裝置,其中,所述監(jiān)控単元,包括: 第二占有子単元,用于啟動待讀取配置信息的進程占有進程間的鎖; 第二監(jiān)控子単元,用于在所述待讀取配置信息的進程中啟動ー個線程或者ー個進程,建立所述線程或者所述進程與zookeeper服務器之間的長連接,通過所述線程或者所述進程監(jiān)控本地磁盤中所有的配置信息。
10.根據(jù)權利要求9所述的裝置,其中,所述第二監(jiān)控子単元,用于在所述待讀取配置信息的進程中啟動ー個異步線程,建立所述異步進程與zookeeper服務器之間的ー個長連接,通過所述異步線程監(jiān)控所述進程間通信中所有進程的配置信息。
【文檔編號】H04L29/08GK103500111SQ201310472913
【公開日】2014年1月8日 申請日期:2013年10月11日 優(yōu)先權日:2013年10月11日
【發(fā)明者】馮所范, 王超, 朱超 申請人:北京奇虎科技有限公司, 奇智軟件(北京)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
西乌珠穆沁旗| 镇沅| 利川市| 娄烦县| 曲沃县| 曲沃县| 新蔡县| 乳山市| 通州市| 承德市| 高密市| 宝坻区| 黔东| 西乌珠穆沁旗| 申扎县| 榆树市| 柳江县| 富平县| 化隆| 镇原县| 威信县| 永昌县| 乌兰察布市| 和顺县| 台江县| 云阳县| 尚志市| 石家庄市| 新平| 巫山县| 昭苏县| 嫩江县| 莱芜市| 云南省| 桂平市| 郁南县| 崇阳县| 梁山县| 岚皋县| 东莞市| 巢湖市|