本發(fā)明涉及互聯(lián)網(wǎng)應用技術領域,特別涉及一種狀態(tài)同步方法及裝置。
背景技術:
集群是一組相互獨立的、通過高速網(wǎng)絡互聯(lián)的計算機,它們構(gòu)成了一個組,并以單一系統(tǒng)的模式加以管理。一個客戶與集群相互作用時,集群像是一個獨立的服務器。集群配置是用于提高可用性和可縮放性。集群之間如何同步自身的狀態(tài)成為亟待解決的技術問題。
技術實現(xiàn)要素:
本發(fā)明提供一種狀態(tài)同步方法及裝置,用以實現(xiàn)準確、有效地進行集群狀態(tài)同步的目的。
本發(fā)明提供一種狀態(tài)同步方法,包括:
當成員節(jié)點需要修改自身的狀態(tài)時,生成用于修改自身狀態(tài)的且包含所述成員節(jié)點的更新狀態(tài)版本號的全局配置信息;
將所述全局配置信息發(fā)送至管理節(jié)點,由所述管理節(jié)點根據(jù)所述全局配置信息修改所述成員節(jié)點的狀態(tài);
接收所述管理節(jié)點反饋的包含修改狀態(tài)版本號的全局配置信息;
將所述修改狀態(tài)版本號與所述更新狀態(tài)版本號進行比對,根據(jù)比對結(jié)果確定所述成員節(jié)點的狀態(tài)是否修改成功。
在本發(fā)明一實施例中,所述方法還包括:
當所述成員節(jié)點需要修改自身的狀態(tài)時,獲取本地的當前狀態(tài)版本號,并對所述當前狀態(tài)版本號進行更新,得到所述更新狀態(tài)版本號。
在本發(fā)明一實施例中,根據(jù)比對結(jié)果確定所述成員節(jié)點的狀態(tài)是否修改成功,包括:
若所述修改狀態(tài)版本號與所述更新狀態(tài)版本號相同,則確定所述成員節(jié)點的狀態(tài)修改成功。
在本發(fā)明一實施例中,根據(jù)比對結(jié)果確定所述成員節(jié)點的狀態(tài)是否修改成功,包括:
若所述修改狀態(tài)版本號與所述更新狀態(tài)版本號相同,則進一步判斷生成的所述全局配置信息與接收的所述全局配置信息是否相同;
若生成的所述全局配置信息與接收的所述全局配置信息相同,則確定所述成員節(jié)點的狀態(tài)修改成功。
在本發(fā)明一實施例中,所述方法還包括:
若生成的所述全局配置信息與接收的所述全局配置信息不相同,則確定所述成員節(jié)點的狀態(tài)修改不成功,并上報給所述管理節(jié)點。
本發(fā)明還提供一種狀態(tài)同步裝置,包括:
生成模塊,用于當成員節(jié)點需要修改自身的狀態(tài)時,生成用于修改自身狀態(tài)的且包含所述成員節(jié)點的更新狀態(tài)版本號的全局配置信息;
發(fā)送模塊,用于將所述全局配置信息發(fā)送至管理節(jié)點,由所述管理節(jié)點根據(jù)所述全局配置信息修改所述成員節(jié)點的狀態(tài);
接收模塊,用于接收所述管理節(jié)點反饋的包含修改狀態(tài)版本號的全局配置信息;
比對模塊,用于將所述修改狀態(tài)版本號與所述更新狀態(tài)版本號進行比對,根據(jù)比對結(jié)果確定所述成員節(jié)點的狀態(tài)是否修改成功。
在本發(fā)明一實施例中,所述裝置還包括:
更新模塊,用于當所述成員節(jié)點需要修改自身的狀態(tài)時,獲取本地的當前狀態(tài)版本號,并對所述當前狀態(tài)版本號進行更新,得到所述更新狀態(tài)版本號。
在本發(fā)明一實施例中,所述比對模塊還用于:
若所述修改狀態(tài)版本號與所述更新狀態(tài)版本號相同,則確定所述成員節(jié)點的狀態(tài)修改成功。
在本發(fā)明一實施例中,所述比對模塊還用于:
若所述修改狀態(tài)版本號與所述更新狀態(tài)版本號相同,則進一步判斷生成的所述全局配置信息與接收的所述全局配置信息是否相同;
若生成的所述全局配置信息與接收的所述全局配置信息相同,則確定所述成員節(jié)點的狀態(tài)修改成功。
在本發(fā)明一實施例中,所述比對模塊還用于:
若生成的所述全局配置信息與接收的所述全局配置信息不相同,則確定所述成員節(jié)點的狀態(tài)修改不成功,并上報給所述管理節(jié)點。
在本發(fā)明實施例中,當成員節(jié)點需要修改自身的狀態(tài)時,生成用于修改自身狀態(tài)的且包含成員節(jié)點的更新狀態(tài)版本號的全局配置信息;將全局配置信息發(fā)送至管理節(jié)點,由管理節(jié)點根據(jù)全局配置信息修改成員節(jié)點的狀態(tài);接收管理節(jié)點反饋的包含修改狀態(tài)版本號的全局配置信息;將修改狀態(tài)版本號與更新狀態(tài)版本號進行比對,根據(jù)比對結(jié)果確定成員節(jié)點的狀態(tài)是否修改成功。由此可見,本發(fā)明實施例能夠?qū)崿F(xiàn)準確、有效地進行集群狀態(tài)同步的目的。
本發(fā)明的其它特征和優(yōu)點將在隨后的說明書中闡述,并且,部分地從說明書中變得顯而易見,或者通過實施本發(fā)明而了解。本發(fā)明的目的和其他優(yōu)點可通過在所寫的說明書、權利要求書、以及附圖中所特別指出的結(jié)構(gòu)來實現(xiàn)和獲得。
下面通過附圖和實施例,對本發(fā)明的技術方案做進一步的詳細描述。
附圖說明
附圖用來提供對本發(fā)明的進一步理解,并且構(gòu)成說明書的一部分,與本發(fā)明的實施例一起用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的限制。在附圖中:
圖1所示為本發(fā)明一實施例中狀態(tài)同步方法的流程圖;
圖2所示為本發(fā)明另一實施例中狀態(tài)同步方法的流程圖;
圖3所示為本發(fā)明一實施例中狀態(tài)同步裝置的結(jié)構(gòu)示意圖;以及
圖4所示為本發(fā)明另一實施例中狀態(tài)同步裝置的結(jié)構(gòu)示意圖。
具體實施方式
以下結(jié)合附圖對本發(fā)明的優(yōu)選實施例進行說明,應當理解,此處所描述的優(yōu)選實施例僅用于說明和解釋本發(fā)明,并不用于限定本發(fā)明。
如圖1所示為本發(fā)明一實施例中狀態(tài)同步方法的流程圖,該方法可以包括以下步驟S11-S14。
步驟S11,當成員節(jié)點需要修改自身的狀態(tài)時,生成用于修改自身狀態(tài)的且包含成員節(jié)點的更新狀態(tài)版本號的全局配置信息。
在該步驟中,集群中的成員節(jié)點可以是兩個或兩個以上,當各個成員節(jié)點需要修改自身的狀態(tài)時,可以生成用于修改自身狀態(tài)的且包含成員節(jié)點的更新狀態(tài)版本號的全局配置信息。進一步地,當各個成員節(jié)點需要修改自身的狀態(tài)時,可以獲取本地的當前狀態(tài)版本號,并對當前狀態(tài)版本號進行更新,得到更新狀態(tài)版本號。例如,將當前狀態(tài)版本號加1,以對當前狀態(tài)版本號進行更新,得到更新狀態(tài)版本號,當然,此處列舉僅是示意性的,本發(fā)明對此不作限制。
步驟S12,將全局配置信息發(fā)送至管理節(jié)點,由管理節(jié)點根據(jù)全局配置信息修改成員節(jié)點的狀態(tài)。
步驟S13,接收管理節(jié)點反饋的包含修改狀態(tài)版本號的全局配置信息。
步驟S14,將修改狀態(tài)版本號與更新狀態(tài)版本號進行比對,根據(jù)比對結(jié)果確定成員節(jié)點的狀態(tài)是否修改成功。
在本發(fā)明實施例中,當成員節(jié)點需要修改自身的狀態(tài)時,生成用于修改自身狀態(tài)的且包含成員節(jié)點的更新狀態(tài)版本號的全局配置信息;將全局配置信息發(fā)送至管理節(jié)點,由管理節(jié)點根據(jù)全局配置信息修改成員節(jié)點的狀態(tài);接收管理節(jié)點反饋的包含修改狀態(tài)版本號的全局配置信息;將修改狀態(tài)版本號與更新狀態(tài)版本號進行比對,根據(jù)比對結(jié)果確定成員節(jié)點的狀態(tài)是否修改成功。由此可見,本發(fā)明實施例能夠?qū)崿F(xiàn)準確、有效地進行集群狀態(tài)同步的目的。
上文步驟S12和步驟S13中,若管理節(jié)點收到兩個成員節(jié)點上報的全局配置信息,且全局配置信息的狀態(tài)版本號相同時,管理節(jié)點選擇一個成員節(jié)點的全局配置信息進行寫入和修改,并反饋給上報的兩個成員節(jié)點。那么,其中一個成員節(jié)點會發(fā)現(xiàn)接收的狀態(tài)版本號與自己上報的狀態(tài)版本號一致,但是全局配置信息不同,則該成員節(jié)點可以確定上報失敗。進一步,如果該成員節(jié)點需要管理節(jié)點更新配置,則可以再次更新狀態(tài)版本號,再次上報。
上文步驟S14中,根據(jù)比對結(jié)果確定成員節(jié)點的狀態(tài)是否修改成功,本發(fā)明提供了多種可選的方案,下面將分別進行詳細介紹。
方案一,若修改狀態(tài)版本號與更新狀態(tài)版本號相同,則確定成員節(jié)點的狀態(tài)修改成功。反之,若修改狀態(tài)版本號與更新狀態(tài)版本號不相同,則確定成員節(jié)點的狀態(tài)修改不成功。
方案二,若修改狀態(tài)版本號與更新狀態(tài)版本號相同,則進一步判斷生成的全局配置信息與接收的全局配置信息是否相同;若生成的全局配置信息與接收的全局配置信息相同,則確定成員節(jié)點的狀態(tài)修改成功。反之,若生成的全局配置信息與接收的全局配置信息不相同,則確定成員節(jié)點的狀態(tài)修改不成功,并上報給管理節(jié)點,由管理節(jié)點重新根據(jù)全局配置信息修改該成員節(jié)點的狀態(tài),以此類推。
在本發(fā)明的可選實施例中,每個成員節(jié)點可以每指定時長(如,2秒等)向管理節(jié)點匯報一次自己的全局配置信息。
下面通過一具體實施例來詳細介紹本發(fā)明的狀態(tài)同步方法的實現(xiàn)過程。如圖2所示為本發(fā)明另一實施例中狀態(tài)同步方法的流程圖,該方法可以包括以下步驟S21-S28。
步驟S21,當成員節(jié)點需要修改自身的狀態(tài)時,獲取本地的當前狀態(tài)版本號,并對當前狀態(tài)版本號進行更新,得到更新狀態(tài)版本號。
步驟S22,生成用于修改自身狀態(tài)的且包含成員節(jié)點的更新狀態(tài)版本號的全局配置信息。
步驟S23,將全局配置信息發(fā)送至管理節(jié)點,由管理節(jié)點根據(jù)全局配置信息修改成員節(jié)點的狀態(tài)。
步驟S24,接收管理節(jié)點反饋的包含修改狀態(tài)版本號的全局配置信息。
步驟S25,判斷修改狀態(tài)版本號與更新狀態(tài)版本號是否相同,若是,則繼續(xù)執(zhí)行步驟S26;若否,則繼續(xù)執(zhí)行步驟S28。
步驟S26,判斷生成的全局配置信息與接收的全局配置信息是否相同,若是,則繼續(xù)執(zhí)行步驟S27;若否,則繼續(xù)執(zhí)行步驟S28。
步驟S27,確定成員節(jié)點的狀態(tài)修改成功。
步驟S28,確定成員節(jié)點的狀態(tài)修改不成功,并上報給管理節(jié)點,由管理節(jié)點重新根據(jù)全局配置信息修改該成員節(jié)點的狀態(tài)。
在該實施例中,若管理節(jié)點收到兩個成員節(jié)點上報的全局配置信息,且全局配置信息的狀態(tài)版本號相同時,管理節(jié)點選擇一個成員節(jié)點的全局配置信息進行寫入和修改,并反饋給上報的兩個成員節(jié)點。那么,其中一個成員節(jié)點會發(fā)現(xiàn)接收的狀態(tài)版本號與自己上報的狀態(tài)版本號一致,但是全局配置信息不同,則該成員節(jié)點可以確定上報失敗。進一步,如果該成員節(jié)點需要管理節(jié)點更新配置,則可以再次更新狀態(tài)版本號,再次上報。
需要說明的是,在實際應用中,上述所有可選實施方式可以采用結(jié)合的方式任意組合,形成本發(fā)明的可選實施例,在此不再一一贅述。
對應于上述實施例中的狀態(tài)同步方法,本發(fā)明還提供一種狀態(tài)同步裝置。如圖3所示為本發(fā)明一實施例中狀態(tài)同步裝置的結(jié)構(gòu)示意圖,包括:
生成模塊31,用于當成員節(jié)點需要修改自身的狀態(tài)時,生成用于修改自身狀態(tài)的且包含所述成員節(jié)點的更新狀態(tài)版本號的全局配置信息;
發(fā)送模塊32,用于將所述全局配置信息發(fā)送至管理節(jié)點,由所述管理節(jié)點根據(jù)所述全局配置信息修改所述成員節(jié)點的狀態(tài);
接收模塊33,用于接收所述管理節(jié)點反饋的包含修改狀態(tài)版本號的全局配置信息;
比對模塊34,用于將所述修改狀態(tài)版本號與所述更新狀態(tài)版本號進行比對,根據(jù)比對結(jié)果確定所述成員節(jié)點的狀態(tài)是否修改成功。
在本發(fā)明一實施例中,如圖4所示,上文圖3展示的裝置還可以包括:
更新模塊41,用于當所述成員節(jié)點需要修改自身的狀態(tài)時,獲取本地的當前狀態(tài)版本號,并對所述當前狀態(tài)版本號進行更新,得到所述更新狀態(tài)版本號。
在本發(fā)明一實施例中,上述比對模塊34還用于:
若所述修改狀態(tài)版本號與所述更新狀態(tài)版本號相同,則確定所述成員節(jié)點的狀態(tài)修改成功。
在本發(fā)明一實施例中,上述比對模塊34還用于:
若所述修改狀態(tài)版本號與所述更新狀態(tài)版本號相同,則進一步判斷生成的所述全局配置信息與接收的所述全局配置信息是否相同;
若生成的所述全局配置信息與接收的所述全局配置信息相同,則確定所述成員節(jié)點的狀態(tài)修改成功。
在本發(fā)明一實施例中,上述比對模塊34還用于:
若生成的所述全局配置信息與接收的所述全局配置信息不相同,則確定所述成員節(jié)點的狀態(tài)修改不成功,并上報給所述管理節(jié)點。
本發(fā)明實施例的上述裝置:當成員節(jié)點需要修改自身的狀態(tài)時,生成用于修改自身狀態(tài)的且包含成員節(jié)點的更新狀態(tài)版本號的全局配置信息;將全局配置信息發(fā)送至管理節(jié)點,由管理節(jié)點根據(jù)全局配置信息修改成員節(jié)點的狀態(tài);接收管理節(jié)點反饋的包含修改狀態(tài)版本號的全局配置信息;將修改狀態(tài)版本號與更新狀態(tài)版本號進行比對,根據(jù)比對結(jié)果確定成員節(jié)點的狀態(tài)是否修改成功。由此可見,本發(fā)明實施例能夠?qū)崿F(xiàn)準確、有效地進行集群狀態(tài)同步的目的。
本領域內(nèi)的技術人員應明白,本發(fā)明的實施例可提供為方法、系統(tǒng)、或計算機程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實施例、完全軟件實施例、或結(jié)合軟件和硬件方面的實施例的形式。而且,本發(fā)明可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(zhì)(包括但不限于磁盤存儲器和光學存儲器等)上實施的計算機程序產(chǎn)品的形式。
本發(fā)明是參照根據(jù)本發(fā)明實施例的方法、設備(系統(tǒng))、和計算機程序產(chǎn)品的流程圖和/或方框圖來描述的。應理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理設備的處理器以產(chǎn)生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理設備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
這些計算機程序指令也可存儲在能引導計算機或其他可編程數(shù)據(jù)處理設備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理設備上,使得在計算機或其他可編程設備上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的處理,從而在計算機或其他可編程設備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
顯然,本領域的技術人員可以對本發(fā)明進行各種改動和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權利要求及其等同技術的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。