一種分布式服務端運行系統(tǒng)及方法
【專利摘要】本發(fā)明公開了一種分布式服務端運行系統(tǒng)及方法,屬于數(shù)據(jù)服務技術領域;系統(tǒng)包括:注冊中心、至少一個客戶端以及多個服務端;方法包括:每個服務端在啟動之后分別向注冊中心發(fā)送關聯(lián)于服務端的注冊信息,以提供給注冊中心分別識別并注冊服務端;注冊中心根據(jù)注冊信息對相應的服務端進行信息注冊操作,以形成包括每個被注冊的服務端的注冊信息的注冊列表;服務端在停止服務時,通知注冊單元向注冊中心注冊以改變關聯(lián)于服務端的注冊信息;注冊中心根據(jù)服務端發(fā)送的改變注冊信息的通知對注冊列表進行更新;客戶端根據(jù)經(jīng)過更新的注冊列表重新選擇一個服務端并嘗試接入。上述技術方案的有益效果是:保證數(shù)據(jù)的冗余,提高系統(tǒng)的穩(wěn)定性。
【專利說明】
一種分布式服務端運行系統(tǒng)及方法
技術領域
[0001]本發(fā)明涉及數(shù)據(jù)服務技術領域,尤其涉及一種分布式服務端運行系統(tǒng)及方法?!颈尘凹夹g】
[0002]現(xiàn)有技術中,為了提升系統(tǒng)的數(shù)據(jù)存儲容量以及數(shù)據(jù)處理能力,往往在提供大數(shù)據(jù)量服務的時候采用分布式實時系統(tǒng)進行。所謂分布式實時系統(tǒng),是指由多個獨立的處理設備組成的一個完整的處理系統(tǒng)。在分布式實時系統(tǒng)中存在著大量單獨立的系統(tǒng)模塊,這些系統(tǒng)模塊相互依賴、互為調(diào)用,并且為整個系統(tǒng)提供服務。
[0003]現(xiàn)有技術中,考慮到災備和系統(tǒng)的穩(wěn)定性,通常需要在整個分布式實時系統(tǒng)中部署服務端之間一定的冗余來保證系統(tǒng)的可靠性。這樣一來系統(tǒng)就必須以一定的開銷來保持各冗余副本的一致性,尤其對于實時系統(tǒng)而言,實時響應時間是最重要的性能指標,響應時間的延遲有時候比傳輸數(shù)據(jù)不一致對系統(tǒng)的影響更大。
[0004]但是在有限的系統(tǒng)資源條件下,數(shù)據(jù)復制和同步的管理往往會占用一定的系統(tǒng)資源并引起系統(tǒng)等待、協(xié)調(diào)和死鎖等情況。換言之,在采用數(shù)據(jù)復制技術的容災系統(tǒng)中,通常無法在數(shù)據(jù)一致性和系統(tǒng)性能之間找到一個比較均衡的解決方案。
【發(fā)明內(nèi)容】
[0005]根據(jù)現(xiàn)有技術中存在的上述問題,現(xiàn)提供一種分布式服務端運行系統(tǒng)及方法的技術方案,旨在降低數(shù)據(jù)同步為分布式系統(tǒng)帶來的影響,保證數(shù)據(jù)的冗余,提高系統(tǒng)的承載能力和穩(wěn)定性。
[0006]上述技術方案具體包括:
[0007]—種分布式服務端運行系統(tǒng),其中,包括:注冊中心、至少一個客戶端以及多個服務端,所述注冊中心分別與每個所述服務端遠程連接,任意兩個所述服務端之間相互遠程連接,每個所述客戶端分別與每個所述服務端遠程連接,每個所述客戶端還分別與所述注冊中心遠程連接,每個所述客戶端分別通過所述注冊中心選擇一個接入的所述服務端;
[0008]每個所述服務端包括:
[0009]第一注冊單元,在所述服務端被啟動之后,向所述注冊中心發(fā)送關聯(lián)于所述服務端的注冊信息;
[0010]狀態(tài)變化單元,連接所述第一注冊單元,用于在所述服務端停止服務時,通知所述第一注冊單元向所述注冊中心發(fā)送改變關聯(lián)于所述服務端的所述注冊信息的通知;
[0011]同步單元,用于在不同的所述服務端之間同步數(shù)據(jù);
[0012]所述注冊中心包括:
[0013]第二注冊單元,用于根據(jù)所述注冊信息對相應的所述服務端進行信息注冊操作, 以形成包括每個被注冊的所述服務端的所述注冊信息的注冊列表;
[0014]注冊變更單元,連接所述第二注冊單元,用于根據(jù)所述服務端發(fā)送的改變所述注冊信息的所述通知對所述注冊列表進行更新;
[0015]所述客戶端根據(jù)經(jīng)過更新的所述注冊列表重新選擇一個所述服務端并嘗試接入。
[0016]優(yōu)選的,該分布式服務端運行系統(tǒng),其中,所述注冊中心包括:
[0017]數(shù)據(jù)庫服務器,或者
[0018]消息隊列服務器,或者
[0019]應用程序協(xié)調(diào)服務器。
[0020]優(yōu)選的,該分布式服務端運行系統(tǒng),其中,所述注冊中心還包括:
[0021]通知單元,連接所述注冊變更單元,用于在所述注冊變更單元對所述注冊列表進行更新后分別通知每個所述客戶端調(diào)取經(jīng)過更新的所述注冊列表。
[0022]優(yōu)選的,該分布式服務端運行系統(tǒng),其中,每個所述服務端還包括:[〇〇23]版本保存單元,用于保存所述服務端內(nèi)的數(shù)據(jù)版本號;
[0024]版本變更單元,連接所述版本保存單元,用于在所述服務端內(nèi)的數(shù)據(jù)發(fā)生變更時更新所述服務端的數(shù)據(jù)版本號并保存在所述版本保存單元中;
[0025]通信單元,用于在兩個所述服務端之間進行心跳通信,并接收對端的所述服務端的所述數(shù)據(jù)版本號;
[0026]版本匹配單元,分別連接所述版本保存單元、所述通信單元和所述同步單元,用于進行所述數(shù)據(jù)版本號的匹配判斷,并輸出匹配結果;
[0027]所述同步單元用于根據(jù)所述匹配結果,在接收到的所述數(shù)據(jù)版本號高于保存在所述版本保存單元中的所述數(shù)據(jù)版本號時,與對端的所述服務端之間執(zhí)行數(shù)據(jù)復制操作,以完成數(shù)據(jù)同步。
[0028]優(yōu)選的,該分布式服務端運行系統(tǒng),其中,所述服務端之間采用TCP套接字通信的方式進行所述心跳通信以及執(zhí)行所述數(shù)據(jù)復制操作。
[0029]優(yōu)選的,該分布式服務端運行系統(tǒng),其中,所述服務端之間采用多線程異步處理的方式進行所述心跳通信以及執(zhí)行所述數(shù)據(jù)復制操作。
[0030] —種分布式服務端運行方法,其中,包括:注冊中心、至少一個客戶端以及多個服務端,所述注冊中心分別與每個所述服務端遠程連接,任意兩個所述服務端之間相互遠程連接,每個所述客戶端分別與每個所述服務端遠程連接,每個所述客戶端還分別與所述注冊中心遠程連接,每個所述客戶端分別通過所述注冊中心選擇一個接入的所述服務端,還包括:
[0031]步驟S1,每個所述服務端在啟動之后分別向所述注冊中心發(fā)送關聯(lián)于所述服務端的注冊信息,以提供給所述注冊中心分別識別并注冊所述服務端;
[0032]步驟S2,所述注冊中心根據(jù)所述注冊信息對相應的所述服務端進行信息注冊操作,以形成包括每個被注冊的所述服務端的所述注冊信息的注冊列表;
[0033]步驟S3,所述服務端在停止服務時,通知所述注冊單元向所述注冊中心注冊以改變關聯(lián)于所述服務端的所述注冊信息;
[0034]步驟S4,所述注冊中心根據(jù)所述服務端發(fā)送的改變所述注冊信息的通知對所述注冊列表進行更新;
[0035]步驟S5,所述客戶端根據(jù)經(jīng)過更新的所述注冊列表重新選擇一個所述服務端并嘗試接入。
[0036]優(yōu)選的,該分布式服務端運行方法,其中,所述注冊中心為:
[0037]數(shù)據(jù)庫服務器,或者 [〇〇38]消息隊列服務器,或者[〇〇39]應用程序協(xié)調(diào)服務器。
[0040]優(yōu)選的,該分布式服務端運行方法,其中,執(zhí)行所述步驟S4之后,所述注冊中心分別通知每個所述客戶端調(diào)取經(jīng)過更新的所述注冊列表。[0041 ]優(yōu)選的,該分布式服務端運行方法,其中,于每個所述服務端內(nèi)保存所述服務端的數(shù)據(jù)版本號,并且在所述服務端內(nèi)的數(shù)據(jù)發(fā)生變更時更新所述服務端內(nèi)保存的數(shù)據(jù)版本號;
[0042]所述服務端之間還進行同步通信,所述同步通信的方法包括:
[0043]步驟A1,所述服務端通過心跳通信接收到對端的所述服務端的所述數(shù)據(jù)版本號; [〇〇44]步驟A2,所述服務端將接收到的所述數(shù)據(jù)版本號和保存在所述服務端內(nèi)的所述數(shù)據(jù)版本號進行匹配判斷:
[0045]若接收到的所述數(shù)據(jù)版本號不高于保存在所述服務端內(nèi)的所述數(shù)據(jù)版本號,則返回所述步驟A1;
[0046]步驟A3,所述服務端與對端的所述服務端之間執(zhí)行數(shù)據(jù)復制操作,以完成數(shù)據(jù)的同步通信。
[0047]優(yōu)選的,該分布式服務端運行方法,其中,所述服務端之間采用TCP套接字通信的方式進行所述心跳通信以及執(zhí)行所述數(shù)據(jù)復制操作。[〇〇48]優(yōu)選的,該分布式服務端運行方法,其中,所述服務端之間采用多線程異步處理的方式進行所述心跳通信以及執(zhí)行所述數(shù)據(jù)復制操作。
[0049]上述技術方案的有益效果是:
[0050]1)提供一種分布式服務端運行系統(tǒng),能夠降低數(shù)據(jù)同步為分布式系統(tǒng)帶來的影響,保證數(shù)據(jù)的冗余,提高系統(tǒng)的承載能力和穩(wěn)定性;
[0051]2)提供一種分布式服務端運行方法,能夠支持上述系統(tǒng)運行?!靖綀D說明】
[0052]圖1是本發(fā)明的較佳的實施例中,一種分布式服務端運行系統(tǒng)的總體結構示意圖; [〇〇53]圖2是本發(fā)明的較佳的實施例中,于圖1的基礎上,服務端的結構示意圖;[〇〇54]圖3是本發(fā)明的較佳的實施例中,于圖1的基礎上,注冊中心的結構示意圖;
[0055]圖4是本發(fā)明的較佳的實施例中,一種分布式服務端運行方法的總體流程示意圖;
[0056]圖5是本發(fā)明的較佳的實施例中,服務端之間進行同步通信的流程示意圖。【具體實施方式】
[0057]下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有作出創(chuàng)造性勞動的前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0058]需要說明的是,在不沖突的情況下,本發(fā)明中的實施例及實施例中的特征可以相互組合。
[0059]下面結合附圖和具體實施例對本發(fā)明作進一步說明,但不作為本發(fā)明的限定。
[0060]本發(fā)明的較佳的實施例中,基于現(xiàn)有技術中存在的上述問題,現(xiàn)提供一種分布式服務端運行系統(tǒng),該系統(tǒng)的具體結構如圖1所示,包括:
[0061]注冊中心A、至少一個客戶端B以及多個服務端C,注冊中心A分別與每個服務端C遠程連接,任意兩個服務端C之間相互遠程連接,每個客戶端B分別與每個服務端C遠程連接, 每個客戶端B還分別與注冊中心A遠程連接,每個客戶端B分別通過注冊中心選擇一個接入的服務端。在圖1中,為了便于表達,僅示出兩個服務端C以及一個客戶端B。[0062 ] 則進一步地,如圖2所示,每個服務端C包括:
[0063]第一注冊單元C1,在服務端C被啟動之后,向注冊中心A發(fā)送關聯(lián)于服務端的注冊信息;
[0064]狀態(tài)變化單元C2,連接第一注冊單元C1,用于在服務端C停止服務時,通知注冊單元C1向注冊中心A發(fā)送改變關聯(lián)于服務端C的注冊信息的通知;
[0065]同步單元C3,用于在不同的服務端C之間同步數(shù)據(jù)。
[0066]上述注冊中心A的結構如圖3所示,包括:
[0067]第二注冊單元A1,用于根據(jù)注冊信息對相應的服務端C進行信息注冊操作,以形成包括每個被注冊的服務端C的注冊信息的注冊列表;
[0068]注冊變更單元A2,連接第二注冊單元A1,用于根據(jù)服務端C發(fā)送的改變注冊信息的通知對注冊列表進行更新。
[0069]則上述客戶端B根據(jù)經(jīng)過更新的注冊列表重新選擇一個服務端C并嘗試接入。
[0070]在一個具體實施例中,服務端C首先在其開啟時向注冊中心發(fā)送注冊信息以進行注冊。注冊信息中可以包括該服務端C的具體信息例如服務端的編號、地址以及端口號等, 服務端C在注冊中心A注冊成功后,在注冊中心A中就留有該服務端C的相應信息,即在整個分布式服務端運行系統(tǒng)中就將該已經(jīng)開啟并能夠提供服務的服務端C進行定位。
[0071]該實施例中,當服務端C產(chǎn)生服務變化時(例如服務端C因某些原因停止服務),服務端C向注冊中心A發(fā)送通知,以通知注冊中心A改變已經(jīng)注冊的相應的注冊信息。例如某個服務端C停止服務,則該服務端C向注冊中心A發(fā)送相應的通知,以通知注冊中心A將已經(jīng)注冊的注冊信息刪除。[〇〇72]該實施例中,上述注冊中心A首先根據(jù)不同的服務端C發(fā)送的注冊信息對其進行注冊,并形成包括所有的已經(jīng)注冊成功的服務端的注冊信息的注冊列表。換言之,客戶端B可以通過瀏覽該注冊列表來獲知哪些服務端可以提供服務。
[0073]該實施例中,當上述注冊中心A接收到服務端C想要改變注冊信息的通知時(例如服務端C停止服務),注冊中心A根據(jù)該通知更新注冊列表,例如將停止服務的服務端C的相應注冊信息從注冊列表中刪除。
[0074]該實施例中,當上述注冊中心A接收到新的服務端C發(fā)送的注冊信息時,同樣對注冊列表進行更新,以添加新的被注冊的服務端C的相關注冊信息。
[0075]該實施例中,若客戶端B在接入某個服務端C的過程中,該服務端C停止服務了,則客戶端B可以通過注冊中心A中已經(jīng)更新的注冊列表選擇其他能夠提供服務的服務端C并嘗試連接。
[0076]該實施例中,為了保證數(shù)據(jù)的一致性,可以采用各服務端C之間進行同步通信的方式來執(zhí)行數(shù)據(jù)復制的操作,從而實現(xiàn)數(shù)據(jù)同步。具體地,各服務端C之間可以采用多線異步操作的方式執(zhí)行上述數(shù)據(jù)復制操作,從而避免系統(tǒng)因數(shù)據(jù)復制操作的執(zhí)行而進入等待或者死鎖等狀態(tài),使得數(shù)據(jù)復制操作對當前系統(tǒng)運行的影響降到最小,并且這種操作對使用者是不可感知的,并不影響使用者的使用體驗。
[0077]本發(fā)明的較佳的實施例中,上述注冊中心可以包括:數(shù)據(jù)庫(DataBase)服務器,或者消息隊列(Message Query,MQ)服務器,或者應用程序協(xié)調(diào)服務器等。
[0078]本發(fā)明的較佳的實施例中,仍然如圖3所示,上述注冊中心A還包括:
[0079]通知單元A3,連接注冊變更單元A2,用于在注冊變更單元A2對注冊列表進行更新后分別通知每個客戶端調(diào)取經(jīng)過更新的注冊列表。
[0080]具體地,本發(fā)明的較佳的實施例中,當注冊變更單元A2通知注冊中心A更新其中的注冊列表后,注冊中心A向每個客戶端B發(fā)送一個通知,以通知客戶端B該注冊列表已經(jīng)更新,客戶端B可以重新通過該注冊列表自行選擇相應的服務端C并嘗試接入以獲得服務。 [0081 ]本發(fā)明的較佳的實施例中,如上文中所述,若在分布式服務端運行系統(tǒng)中存在有一個新的服務端C開始提供服務,則注冊中心A同樣會根據(jù)該服務端C的相關注冊信息進行注冊列表的更新。在這種情況,上述通知單元A3同樣會通知每個客戶端B調(diào)取經(jīng)過更新的注冊列表。
[0082]換言之,本發(fā)明的較佳的實施例中,只要注冊中心A中保存的注冊列表被更新,上述通知單元A3就向所有客戶端發(fā)送通知,以提醒其調(diào)取經(jīng)過更新的注冊列表。
[0083]則本發(fā)明的較佳的實施例中,當其中一個服務端C崩潰時,客戶端B不需要再等待新的服務端C形成,而可以主動通過保存在注冊中心A中的經(jīng)過更新的注冊列表來重新選擇一個符合自己需求的當前可用的服務端C。
[0084]本發(fā)明的較佳的實施例中,仍然如圖2所示,上述每個服務端C還包括:
[0085]版本保存單元C4,用于保存服務端C內(nèi)的數(shù)據(jù)版本號;
[0086]版本變更單元C5,連接版本保存單元C4,用于在服務端C內(nèi)的數(shù)據(jù)發(fā)生變更時更新服務端C的數(shù)據(jù)版本號并保存在版本保存單元C4中;
[0087]通信單元C6,用于在兩個服務端C之間進行心跳通信,并接收對端的服務端C的數(shù)據(jù)版本號;
[0088]版本匹配單元C7,分別連接版本保存單元C4、通信單元C6和同步單元C3,用于進行數(shù)據(jù)版本號的匹配判斷,并輸出匹配結果;
[0089]則上述同步單元C3用于根據(jù)匹配結果,在接收到的數(shù)據(jù)版本號高于保存在版本保存單元中的數(shù)據(jù)版本號時,與對端的服務端之間執(zhí)行數(shù)據(jù)復制操作,以完成數(shù)據(jù)同步。
[0090]具體地,本發(fā)明的較佳的實施例中,每個服務端C之間的地位是平等的,其中每一個服務端C都可以對外提供服務并且接收外部的數(shù)據(jù)修改和編輯。這就使得使用者可以通過客戶端B在任何一個服務端C上做服務調(diào)用和數(shù)據(jù)變更,因此急需解決在服務端C之間進行數(shù)據(jù)同步的問題,以避免客戶端B在不同的服務端C上獲得的數(shù)據(jù)之間的差別。
[0091]基于上述問題,上述分布式服務端運行系統(tǒng)中,利用服務端C之間持續(xù)進行的心跳通信來進行服務端C之間的數(shù)據(jù)同步。所謂心跳通信,是指服務端C每隔一段時間向互聯(lián)的對端服務端發(fā)送一個很小的數(shù)據(jù)包,通過對方回復情況判斷互聯(lián)的雙方之間的通訊鏈路是否已經(jīng)斷開的方法。由于在分布式服務端運行系統(tǒng)中,任意兩個服務端C之間均相連,因此每個服務端C都可以持續(xù)與其他所有服務端C進行心跳通信,以監(jiān)測服務端C之間的通信鏈路是否正常。
[0092]本發(fā)明的較佳的實施例中,首先在服務端C內(nèi)保存當前數(shù)據(jù)的數(shù)據(jù)版本號,并在服務端C內(nèi)發(fā)生數(shù)據(jù)變化時生成新的數(shù)據(jù)版本號。該數(shù)據(jù)版本號的生成標準和格式在所有服務端C內(nèi)均為通用,并且數(shù)據(jù)變化的次數(shù)越多,數(shù)據(jù)版本號越高。例如,所有服務端C初始的數(shù)據(jù)均一致,其數(shù)據(jù)版本號為VI。其中一個服務端C的數(shù)據(jù)變化了 1次(例如被修改了一次), 則該服務端C的數(shù)據(jù)版本號為v2。以此類推。
[0093]則在服務端C之間進行心跳通信的過程中,服務端C接收并檢查對端的服務端C的數(shù)據(jù)版本號:[〇〇94]若對端服務端C的數(shù)據(jù)版本號高于本機的數(shù)據(jù)版本號,則表示對端服務端C的數(shù)據(jù)變化新于本機(例如比本機的數(shù)據(jù)變化次數(shù)更多)。此時執(zhí)行數(shù)據(jù)復制操作,即將對端服務端C的數(shù)據(jù)復制到本機,以實現(xiàn)服務端C之間的數(shù)據(jù)同步通信;
[0095]若對端服務端C的數(shù)據(jù)版本號不高于本機的數(shù)據(jù)版本號,則表示對端服務端C的數(shù)據(jù)變化舊于本機(例如比本機的數(shù)據(jù)變化次數(shù)更少)。此時相對于本機而言不執(zhí)行數(shù)據(jù)復制操作。
[0096]本發(fā)明的較佳的實施例中,對所有服務端C均執(zhí)行版本匹配—數(shù)據(jù)復制的操作,以保證整個分布式服務端運行系統(tǒng)的數(shù)據(jù)一致性。
[0097]本發(fā)明的較佳的實施例中,上述服務端C之間的心跳通信和數(shù)據(jù)復制的操作均采用TCP Socket(Transmiss1n Control Protocol Socket,傳輸控制協(xié)議套接字)的方式進行。采用TCP Socket的方式的優(yōu)勢在于,TCP協(xié)議采用的是面向連接的三次握手連接方式, 可以實現(xiàn)可靠對象的傳輸。
[0098]并且,在上述服務端C之間使用數(shù)據(jù)窗口機制協(xié)商傳輸隊列的大小從而實現(xiàn)數(shù)據(jù)的隊列傳輸。在上述服務端C的之間再通過序列化應答和必要時重發(fā)數(shù)據(jù)包的方式實現(xiàn)應用程序可靠的傳輸流和數(shù)據(jù)傳輸服務。
[0099]本發(fā)明的較佳的實施例中,如上文中所述,在多個服務端C之間執(zhí)行的心跳通信和數(shù)據(jù)復制的操作都是多線程異步進行的。整個系統(tǒng)并不會因為上述操作進入等待或者死鎖等狀態(tài),這使得上述操作對整個系統(tǒng)當前的運行影響降到最小,并且使得用戶對上述操作的感知是不可見的。
[0100]本發(fā)明的較佳的實施例中,基于上文中的分布式服務端運行系統(tǒng),現(xiàn)提供一種分布式服務端運行方法,該方法中同樣包括如上文中的系統(tǒng)構成,包括注冊中心、至少一個客戶端以及多個服務端,注冊中心分別與每個服務端遠程連接,任意兩個服務端之間相互遠程連接,每個客戶端分別與每個服務端遠程連接,每個客戶端還分別與注冊中心遠程連接, 每個客戶端分別通過注冊中心選擇一個接入的服務端。
[0101]該方法的步驟如圖4所示,具體包括:
[0102]步驟S1,每個服務端在啟動之后分別向注冊中心發(fā)送關聯(lián)于服務端的注冊信息, 以提供給注冊中心分別識別并注冊服務端;
[0103]步驟S2,注冊中心根據(jù)注冊信息對相應的服務端進行信息注冊操作,以形成包括每個被注冊的服務端的注冊信息的注冊列表;
[0104]步驟S3,服務端在停止服務時,通知注冊單元向注冊中心注冊以改變關聯(lián)于服務端的注冊信息;
[0105]步驟S4,注冊中心根據(jù)服務端發(fā)送的改變注冊信息的通知對注冊列表進行更新;
[0106]步驟S5,客戶端根據(jù)經(jīng)過更新的注冊列表重新選擇一個服務端并嘗試接入。
[0107]本發(fā)明的較佳的實施例中,如上文中所述,上述注冊中心為:
[0108]數(shù)據(jù)庫服務器,或者
[0109]消息隊列服務器,或者
[0110]應用程序協(xié)調(diào)服務器。
[0111]本發(fā)明的較佳的實施例中,執(zhí)行步驟S4之后,注冊中心分別通知每個客戶端調(diào)取經(jīng)過更新的注冊列表。
[0112]本發(fā)明的較佳的實施例中,于每個服務端內(nèi)保存服務端的數(shù)據(jù)版本號,并且在服務端內(nèi)的數(shù)據(jù)發(fā)生變更時更新服務端內(nèi)保存的數(shù)據(jù)版本號;
[0113]則上述服務端之間還進行同步通信,同步通信的方法如圖5所示,包括:[〇114]步驟A1,服務端通過心跳通信接收到對端的服務端的數(shù)據(jù)版本號;
[0115]步驟A2,服務端將接收到的數(shù)據(jù)版本號和保存在服務端內(nèi)的數(shù)據(jù)版本號進行匹配判斷:
[0116]若接收到的數(shù)據(jù)版本號不高于保存在服務端內(nèi)的數(shù)據(jù)版本號,則返回步驟A1;
[0117]步驟A3,服務端與對端的服務端之間執(zhí)行數(shù)據(jù)復制操作,以完成數(shù)據(jù)的同步通信。
[0118]本發(fā)明的較佳的實施例中,服務端之間采用TCP套接字通信的方式進行心跳通信以及執(zhí)行數(shù)據(jù)復制操作。
[0119]本發(fā)明的較佳的實施例中,服務端之間采用多線程異步處理的方式進行心跳通信以及執(zhí)行數(shù)據(jù)復制操作。
[0120]以上所述僅為本發(fā)明較佳的實施例,并非因此限制本發(fā)明的實施方式及保護范圍,對于本領域技術人員而言,應當能夠意識到凡運用本發(fā)明說明書及圖示內(nèi)容所作出的等同替換和顯而易見的變化所得到的方案,均應當包含在本發(fā)明的保護范圍內(nèi)。
【主權項】
1.一種分布式服務端運行系統(tǒng),其特征在于,包括:注冊中心、至少一個客戶端以及多 個服務端,所述注冊中心分別與每個所述服務端遠程連接,任意兩個所述服務端之間相互 遠程連接,每個所述客戶端分別與每個所述服務端遠程連接,每個所述客戶端還分別與所 述注冊中心遠程連接,每個所述客戶端分別通過所述注冊中心選擇一個接入的所述服務 端;每個所述服務端包括:第一注冊單元,在所述服務端被啟動之后,向所述注冊中心發(fā)送關聯(lián)于所述服務端的 注冊信息;狀態(tài)變化單元,連接所述第一注冊單元,用于在所述服務端停止服務時,通知所述第一 注冊單元向所述注冊中心發(fā)送改變關聯(lián)于所述服務端的所述注冊信息的通知;同步單元,用于在不同的所述服務端之間同步數(shù)據(jù);所述注冊中心包括:第二注冊單元,用于根據(jù)所述注冊信息對相應的所述服務端進行信息注冊操作,以形 成包括每個被注冊的所述服務端的所述注冊信息的注冊列表;注冊變更單元,連接所述第二注冊單元,用于根據(jù)所述服務端發(fā)送的改變所述注冊信 息的所述通知對所述注冊列表進行更新;所述客戶端根據(jù)經(jīng)過更新的所述注冊列表重新選擇一個所述服務端并嘗試接入。2.如權利要求1所述的分布式服務端運行系統(tǒng),其特征在于,所述注冊中心包括:數(shù)據(jù)庫服務器,或者消息隊列服務器,或者 應用程序協(xié)調(diào)服務器。3.如權利要求1所述的分布式服務端運行系統(tǒng),其特征在于,所述注冊中心還包括:通知單元,連接所述注冊變更單元,用于在所述注冊變更單元對所述注冊列表進行更 新后分別通知每個所述客戶端調(diào)取經(jīng)過更新的所述注冊列表。4.如權利要求1所述的分布式服務端運行系統(tǒng),其特征在于,每個所述服務端還包括: 版本保存單元,用于保存所述服務端內(nèi)的數(shù)據(jù)版本號;版本變更單元,連接所述版本保存單元,用于在所述服務端內(nèi)的數(shù)據(jù)發(fā)生變更時更新 所述服務端的數(shù)據(jù)版本號并保存在所述版本保存單元中;通信單元,用于在兩個所述服務端之間進行心跳通信,并接收對端的所述服務端的所 述數(shù)據(jù)版本號;版本匹配單元,分別連接所述版本保存單元、所述通信單元和所述同步單元,用于進行 所述數(shù)據(jù)版本號的匹配判斷,并輸出匹配結果;所述同步單元用于根據(jù)所述匹配結果,在接收到的所述數(shù)據(jù)版本號高于保存在所述版 本保存單元中的所述數(shù)據(jù)版本號時,與對端的所述服務端之間執(zhí)行數(shù)據(jù)復制操作,以完成 數(shù)據(jù)同步。5.如權利要求4所述的分布式服務端運行系統(tǒng),其特征在于,所述服務端之間采用TCP 套接字通信的方式進行所述心跳通信以及執(zhí)行所述數(shù)據(jù)復制操作。6.如權利要求4所述的分布式服務端運行系統(tǒng),其特征在于,所述服務端之間采用多線 程異步處理的方式進行所述心跳通信以及執(zhí)行所述數(shù)據(jù)復制操作。7.—種分布式服務端運行方法,其特征在于,包括:注冊中心、至少一個客戶端以及多 個服務端,所述注冊中心分別與每個所述服務端遠程連接,任意兩個所述服務端之間相互 遠程連接,每個所述客戶端分別與每個所述服務端遠程連接,每個所述客戶端還分別與所 述注冊中心遠程連接,每個所述客戶端分別通過所述注冊中心選擇一個接入的所述服務 端,還包括:步驟S1,每個所述服務端在啟動之后分別向所述注冊中心發(fā)送關聯(lián)于所述服務端的注 冊信息;步驟S2,所述注冊中心根據(jù)所述注冊信息對相應的所述服務端進行信息注冊操作,以 形成包括每個被注冊的所述服務端的所述注冊信息的注冊列表;步驟S3,所述服務端在停止服務時,通知所述注冊單元向所述注冊中心發(fā)送改變關聯(lián) 于所述服務端的所述注冊信息的通知;步驟S4,所述注冊中心根據(jù)所述服務端發(fā)送的改變所述注冊信息的所述通知對所述注 冊列表進行更新;步驟S5,所述客戶端根據(jù)經(jīng)過更新的所述注冊列表重新選擇一個所述服務端并嘗試接 入。8.如權利要求7所述的分布式服務端運行方法,其特征在于,所述注冊中心包括:數(shù)據(jù)庫服務器,或者消息隊列服務器,或者應用程序協(xié)調(diào)服務器。9.如權利要求7所述的分布式服務端運行方法,其特征在于,執(zhí)行所述步驟S4之后,所 述注冊中心分別通知每個所述客戶端調(diào)取經(jīng)過更新的所述注冊列表。10.如權利要求7所述的分布式服務端運行方法,其特征在于,于每個所述服務端內(nèi)保 存所述服務端的數(shù)據(jù)版本號,并且在所述服務端內(nèi)的數(shù)據(jù)發(fā)生變更時更新所述服務端內(nèi)保 存的數(shù)據(jù)版本號;所述服務端之間還進行同步通信,所述同步通信的方法包括:步驟A1,所述服務端通過心跳通信接收到對端的所述服務端的所述數(shù)據(jù)版本號;步驟A2,所述服務端將接收到的所述數(shù)據(jù)版本號和保存在所述服務端內(nèi)的所述數(shù)據(jù)版 本號進行匹配判斷:若接收到的所述數(shù)據(jù)版本號不高于保存在所述服務端內(nèi)的所述數(shù)據(jù)版本號,則返回所 述步驟A1;步驟A3,所述服務端與對端的所述服務端之間執(zhí)行數(shù)據(jù)復制操作,以完成數(shù)據(jù)的 同步通信。11.如權利要求10所述的分布式服務端運行方法,其特征在于,所述服務端之間采用 TCP套接字通信的方式進行所述心跳通信以及執(zhí)行所述數(shù)據(jù)復制操作。12.如權利要求10所述的分布式服務端運行方法,其特征在于,所述服務端之間采用多 線程異步處理的方式進行所述心跳通信以及執(zhí)行所述數(shù)據(jù)復制操作。
【文檔編號】H04L29/08GK105959349SQ201610257064
【公開日】2016年9月21日
【申請日】2016年4月22日
【發(fā)明人】周淑杰
【申請人】上海瀚之友信息技術服務有限公司