亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

基于注冊中心和緩存機制協(xié)同的服務發(fā)現(xiàn)方法

文檔序號:10572797閱讀:245來源:國知局
基于注冊中心和緩存機制協(xié)同的服務發(fā)現(xiàn)方法
【專利摘要】一種基于注冊中心和緩存機制協(xié)同的服務發(fā)現(xiàn)方法,通過在服務調(diào)用端配置緩存,將服務提供端所提供服務的相關(guān)信息存入服務調(diào)用端的本地緩存中,使服務調(diào)用端的本地緩存和注冊中心在服務發(fā)現(xiàn)過程中協(xié)同工作;步驟1:緩存的設(shè)置及初始化,當服務調(diào)用端啟動時,根據(jù)調(diào)用端的服務訂閱數(shù)量最大值和本地緩存占用內(nèi)存的最大值,在服務調(diào)用端的內(nèi)存中開辟相應的空間,作為服務訂閱注冊信息的存儲區(qū);步驟2:為服務調(diào)用端配置好本地緩存后,服務提供端所提供服務的注冊信息分別存于注冊中心中和服務調(diào)用端的本地緩存中;在服務發(fā)現(xiàn)過程中,注冊中心和服務調(diào)用端的緩存協(xié)同合作,使服務調(diào)用者能脫離注冊中心調(diào)用需要的服務。
【專利說明】
基于注冊中心和緩存機制協(xié)同的服務發(fā)現(xiàn)方法
技術(shù)領(lǐng)域
[0001]本發(fā)明屬于計算機處理技術(shù)的服務發(fā)現(xiàn)領(lǐng)域,具體涉及一種基于注冊中心和緩存機制協(xié)同的服務發(fā)現(xiàn)方法。
【背景技術(shù)】
[0002]隨著軟件設(shè)計尤其是分布式軟件設(shè)計理論與實踐的發(fā)展,面向服務的軟件設(shè)計思想逐漸被各大中型軟件系統(tǒng)設(shè)計人員所接受,成為軟件設(shè)計的主流趨勢之一。軟件設(shè)計服務化區(qū)別于傳統(tǒng)的軟件設(shè)計模式,強調(diào)功能的模塊化和獨立化,它將通用的功能抽象為單一的服務實體,供其它服務或應用來調(diào)用,避免了在軟件開發(fā)過程中“重復發(fā)明輪子”,以增強服務的可擴展性,提高資源的利用率,增強系統(tǒng)的整體穩(wěn)定性。
[0003]由于現(xiàn)有的服務發(fā)現(xiàn)都是基于注冊中心,從而所有的服務調(diào)用客戶端都依賴于一個注冊中心,在性能上存在一定的瓶頸。注冊中心的穩(wěn)定性將很大地制約服務發(fā)現(xiàn)的發(fā)展。
[0004]服務發(fā)現(xiàn)機制是以最大限度提高資源和服務的訪問有用性及有效性的解決方案,包括資源和服務的注冊、訪問、管理和維護等。服務發(fā)現(xiàn)記錄了大規(guī)模分布式系統(tǒng)中所有服務的信息,是服務框架所面臨的一個基礎(chǔ)問題。高效的服務發(fā)現(xiàn)機制是衡量服務框架好壞的標志之一。服務狀態(tài)一般包括上線、下線、重新上線、異常等。服務狀態(tài)維護是指由系統(tǒng)識別并跟蹤服務的狀態(tài)變化,根據(jù)狀態(tài)的變化觸發(fā)相應的處理邏輯,使得系統(tǒng)各參與方對服務狀態(tài)變化進行感知。傳統(tǒng)的服務狀態(tài)維護方式一般是通過輪詢,即由服務提供者周期性地向注冊中心匯報自身狀態(tài),或注冊中心周期性地向服務提供者探測狀態(tài),再由服務調(diào)用者周期性地向注冊中心檢查服務提供者的狀態(tài),然而這種僅依靠“輪詢方式”維護服務狀態(tài)存在倆種缺陷:
[0005]其一,狀態(tài)實時性存在一定局限性。輪詢間隔(也稱“心跳”)期間,存在延時間隙。當某服務A不可用時,在下一次服務調(diào)用者想要調(diào)用服務A時,由于服務調(diào)用者無法及時感知服務A的狀態(tài)更新,繼續(xù)調(diào)用將導致這段期間內(nèi)對A的服務調(diào)用錯誤;
[0006]其二,服務調(diào)用的穩(wěn)定性依賴于注冊中心。第三方的注冊中心可能由于自身的軟件bug或網(wǎng)絡(luò)環(huán)境等原因,容易出現(xiàn)不穩(wěn)定的情況。而服務提供者和服務調(diào)用者因時刻維護服務狀態(tài),兩者均與注冊中心交互頻繁,這樣容易導致服務調(diào)用的可靠性受限于第三方組件。

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

[0007]為解決上述的問題,本發(fā)明的目的是通過在服務調(diào)用端配置緩存,將服務提供端所提供服務的相關(guān)信息存入服務調(diào)用端的本地緩存中,使服務調(diào)用端的本地緩存和注冊中心在服務發(fā)現(xiàn)過程中協(xié)同工作。當服務調(diào)用者在調(diào)用所需服務時,不僅可以通過注冊中心獲取服務狀態(tài)信息,也可以從緩存中直接調(diào)用獲取。本發(fā)明能減少服務提供者和服務調(diào)用者對注冊中心的依賴,有利于提高服務調(diào)用的效率。
[0008]—種基于注冊中心和緩存機制協(xié)同的服務發(fā)現(xiàn)方法,技術(shù)方案具體如下:
[0009]首先,緩存的設(shè)置及初始化,具體為當服務調(diào)用端啟動時,根據(jù)調(diào)用端的服務訂閱數(shù)量最大值和本地緩存占用內(nèi)存的最大值,在服務調(diào)用端的內(nèi)存中開辟相應的空間,作為訂閱服務注冊信息的存儲區(qū);
[0010]特別地,與以往的服務調(diào)用端不同,本發(fā)明中的服務調(diào)用端是一個包含緩存裝置的服務調(diào)用者,它能緩存自身所訂閱服務的相關(guān)信息。
[0011]其次,為服務調(diào)用端配置好本地緩存后,服務提供端所提供服務的注冊信息分別存于注冊中心中和服務調(diào)用端的本地緩存中,注冊中心和服務調(diào)用端通過與服務提供端建立長連接執(zhí)行周期性探測服務提供端的運行情況;在服務發(fā)現(xiàn)過程中,注冊中心和服務調(diào)用端的緩存能協(xié)同合作,能使服務調(diào)用者能脫離注冊中心調(diào)用需要的服務,具體步驟包括:
[0012]步驟1:發(fā)布服務;服務提供端啟動后,在注冊中心注冊服務信息并發(fā)布,服務的注冊信息包括服務名稱、類型、與該服務相關(guān)的函數(shù)接口信息、服務節(jié)點地址信息(含IP地址和端口號)、版本信息等。
[0013]通過服務的發(fā)布,注冊中心能根據(jù)該服務的注冊信息完成對該服務記錄和存儲,同時建立與服務提供端之間的長連接關(guān)系,并能周期性探測該服務的狀態(tài)變化;當服務提供端出現(xiàn)故障或異常時,注冊中心能即時發(fā)現(xiàn)并更新該服務在注冊中心的服務狀態(tài);
[0014]步驟2:訂閱服務;服務調(diào)用端從注冊中心中訂閱自己需要的服務,若注冊中心已注冊該服務,服務調(diào)用端直接從注冊中心獲取該服務的注冊信息,同時將該服務的注冊信息存入本地緩存中;
[0015]當服務調(diào)用端訂閱服務的注冊信息存入服務調(diào)用端的緩存中時,服務調(diào)用端和服務提供端建立長連接,服務調(diào)用端能周期性對服務提供端運行狀態(tài)及健康狀況的進行探測,一旦服務調(diào)用端檢測到服務提供者的狀態(tài)異常(比如服務下線),則更新該服務在服務調(diào)用端本地緩存中的服務狀態(tài),并將該狀態(tài)更新情況通知給注冊中心。
[0016]步驟3:調(diào)用服務;當服務調(diào)用端需要使用某項服務時,服務調(diào)用端能完全脫離注冊中心,直接通過讀取本地緩存中服務提供者所提供服務的注冊信息,選擇最佳的服務提供端,并通過遠程過程調(diào)用協(xié)議調(diào)用遠程服務的接口,進而一直使用服務;
[0017]步驟4:更新服務的狀態(tài);所述服務狀態(tài)更新,按照服務狀態(tài)條件,可分為三種:服務提供端的服務新上線、服務提供端的服務下線、服務提供端的服務重新上線;
[0018]在服務發(fā)現(xiàn)過程中,每一次服務調(diào)用端的服務狀態(tài)變化,相應地,注冊中心和服務調(diào)用端的服務狀態(tài)信息同時更新變化,具體為:
[0019]步驟4-1:服務提供端的服務狀態(tài)變更,服務提供端主動向注冊中心發(fā)送服務狀態(tài)變更的消息,注冊中心根據(jù)消息內(nèi)容識別服務,修改該服務存儲在注冊中心中的服務狀態(tài);
[0020]步驟4-2:注冊中心尋找所有調(diào)用該服務的服務調(diào)用端,逐一向各服務調(diào)用端發(fā)送服務狀態(tài)變更的消息;
[0021]特別地,服務提供端發(fā)送給注冊中心的有關(guān)服務狀態(tài)變更的通知消息和注冊中心發(fā)送給服務調(diào)用端的有關(guān)服務狀態(tài)變更的通知消息,內(nèi)容包括但不限于:
[0022](I)服務名稱及服務類型;
[0023](2)與該項服務相關(guān)的函數(shù)接口信息;
[0024](3)服務地址信息,包含IP地址和端口 ;
[0025](4)服務版本信息:服務更新前的狀態(tài)、服務當前狀態(tài)等;
[0026]步驟4-3:服務調(diào)用端接收到注冊中心的消息,根據(jù)消息內(nèi)容檢查并校驗本地緩存中該服務提供者的當前狀態(tài)后,立即修改該服務的注冊信息,更新該服務的服務狀態(tài)。
[0027]當服務調(diào)用端的緩存中的服務狀態(tài)更新完畢后,之后服務調(diào)用端針對該項服務的調(diào)用,完全脫離對注冊中心的依賴,均通過讀取本地緩存中最新的服務信息,利用遠程過程調(diào)用協(xié)議調(diào)用該遠程服務的接口。
[0028]本發(fā)明與現(xiàn)有技術(shù)相比,其有益效果:
[0029](I)本發(fā)明通過為服務調(diào)用端配置緩存,將服務提供者所提供服務的信息存入服務調(diào)用端,在服務調(diào)用過程中,服務調(diào)用端可完全脫離對注冊中心的依賴,直接通過調(diào)用本地緩存內(nèi)的服務信息獲取服務,減少服務提供端及服務調(diào)用端對注冊中心的依賴,提升服務調(diào)用的效率;
[0030](2)本發(fā)明通過利用緩存機制,使注冊中心和服務調(diào)用端的本地緩存協(xié)同工作,當注冊中心因故障不可用時,在服務調(diào)用端與注冊中心不能正常通信的前提下,服務調(diào)用端可從本地緩存獲取服務提供者的相關(guān)信息,避免了因注冊中心不穩(wěn)定而導致的服務調(diào)用異常。
【附圖說明】
[0031]圖1為本發(fā)明實施例中一種基于注冊中心和緩存機制協(xié)同的服務發(fā)現(xiàn)方法流程圖
[0032]圖2為本發(fā)明實施例中一種基于注冊中心和緩存機制協(xié)同的服務方法
【具體實施方式】
[0033]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚明白,以下結(jié)合具體實施例,并參照附圖,對本發(fā)明進一步詳細說明。
[0034]本發(fā)明是通過在服務調(diào)用端設(shè)置緩存區(qū),將服務提供端所提供服務的相關(guān)信息存入服務調(diào)用端的本地緩存中,使服務調(diào)用端的本地緩存和注冊中心在服務發(fā)現(xiàn)過程中協(xié)同工作。當服務調(diào)用者在調(diào)用所需服務時,不僅可以通過注冊中心獲取服務狀態(tài)信息,也可以從緩存中直接調(diào)用獲取。
[0035]所述服務狀態(tài),是預定義的一組關(guān)于服務當前能否正常提供服務的狀態(tài)值,用于注冊中心和服務調(diào)用者識別服務的可用狀態(tài),狀態(tài)值包括“上線”、“下線”、“重新上線”等。其中,“上線”、“重新上線”狀態(tài)意味著該服務當前可用,“下線”狀態(tài)意味著該服務當前不可用;
[0036]圖1是本發(fā)明實施例中基于注冊中心和緩存機制協(xié)同的服務發(fā)現(xiàn)系統(tǒng)架構(gòu)圖,該系統(tǒng)架構(gòu)中包含三個主體,即服務提供端、服務注冊中心及服務調(diào)用端。
[0037]所述服務提供端,是指提供服務接口的軟件程序;服務發(fā)布后,服務提供端與注冊中心始終保持連接狀態(tài),每一次服務的上線或下線,服務提供端都會實時將服務狀態(tài)變更的消息通過通知模塊發(fā)送給服務注冊中心;
[0038]所述服務注冊中心,是已發(fā)布服務的信息聚合區(qū);服務注冊中心可以是基于第三方軟件,比如采用分布式協(xié)調(diào)工具Zookeeper、etcd等,或采用NoSQL存儲系統(tǒng),比如Redis;也可以是通過開發(fā)的注冊中心組件,并提供基本功能:(I)與服務調(diào)用端的通信;(2)服務注冊信息的存儲;
[0039]特別地,每一個服務狀態(tài)的變化,服務注冊中心都會將服務狀態(tài)變更的消息通知給服務調(diào)用端,并將有關(guān)該服務的相關(guān)信息同時發(fā)送至服務調(diào)用端的本地緩存中存儲;
[0040]所述服務調(diào)用端,是指需要調(diào)取服務的軟件程序,既可以是獨立的應用程序,也可以是其他服務的提供者;與以往的服務調(diào)用端不同,本發(fā)明實施例中的服務調(diào)用端會將自己部分內(nèi)存開辟出來作為緩存區(qū),用于實時存儲服務提供者的服務信息;
[0041]圖2是本發(fā)明實施例中基于注冊中心和緩存機制協(xié)同的服務方法的實現(xiàn)步驟:
[0042]步驟101:緩存的設(shè)置及初始化,具體為當服務調(diào)用端啟動時,根據(jù)調(diào)用端的服務訂閱數(shù)量最大值和本地緩存占用內(nèi)存的最大值,在服務調(diào)用端的內(nèi)存中開辟相應的空間,作為訂閱服務注冊信息的存儲區(qū);
[0043]經(jīng)過設(shè)置,服務調(diào)用端成為一個能緩存自身所訂閱服務的相關(guān)信息的客戶端;
[0044]步驟102:服務提供端啟動,在服務注冊中心進行服務的注冊,并通過服務注冊中心將服務發(fā)布;至此,服務提供端和服務注冊中心通過心跳模塊建立長連接,保證周期性的服務數(shù)據(jù)交互,維持服務狀態(tài)信息的一致性;
[0045]服務提供端在服務注冊中心中的注冊信息包含服務名稱、服務類型、與該服務相關(guān)的接口信息、服務地址信息(含IP地址和端口號)、服務版本信息等等;
[0046]步驟103:服務調(diào)用端從服務注冊中心中訂閱需要的服務。若此時服務注冊中心已有該服務的注冊記錄,服務調(diào)用端在訂閱服務的同時,服務注冊中心將該服務的注冊信息可以特定格式的數(shù)據(jù)包形式發(fā)送至服務調(diào)用端的緩存區(qū);
[0047]當服務調(diào)用端訂閱服務的注冊信息存入本地緩存中后,服務調(diào)用端和服務提供端通過心跳模塊建立長連接,服務調(diào)用端開始周期性地探測服務提供者的運行狀態(tài)及健康狀況,一旦檢測到狀態(tài)異常,包括服務的下線、服務異常中斷等,服務調(diào)用端更新本地緩存中該服務的服務狀態(tài),同時將本地緩存區(qū)內(nèi)服務狀態(tài)更新情況報告給服務注冊中心。
[0048]步驟104:當服務調(diào)用端需要使用某項服務時,服務調(diào)用端直接從本地緩存中獲取該服務的注冊信息,進而選擇最佳的服務提供端,并可以通過遠程過程調(diào)用協(xié)議調(diào)用該遠程服務的接口;
[0049]步驟105:當服務調(diào)用端所提供服務的服務狀態(tài)發(fā)生變更,服務提供端主動向服務注冊中心發(fā)送“服務狀態(tài)變更”的消息,消息內(nèi)容包括服務名稱、服務類型、與該服務相關(guān)的函數(shù)接口信息、服務地址信息及服務版本信息;其中,服務版本信息包括服務更新前的服務狀態(tài)和服務當前狀態(tài);注冊中心根據(jù)消息內(nèi)容中的服務名稱及服務類型識別服務,并更新其內(nèi)部存儲的服務狀態(tài)為變更后的狀態(tài);
[0050]步驟106:注冊中心尋找所有訂閱該更新服務的服務調(diào)用端,依次向各服務調(diào)用端發(fā)送“服務狀態(tài)變更”的消息,消息內(nèi)容包括服務名稱、服務類型、與該服務相關(guān)的函數(shù)接口信息、服務地址信息及服務版本信息;其中,服務版本信息包括服務更新前的服務狀態(tài)和服務當前狀態(tài);
[0051 ]步驟107:當服務調(diào)用端接收到服務注冊中心發(fā)送的“服務狀態(tài)變更”消息,立即根據(jù)消息內(nèi)容中的服務名稱及服務類型識別服務,并更新本地緩存中該服務的服務狀態(tài)為變更后的狀態(tài);
[0052 ]整個RPC通信期間的服務狀態(tài)更新不再依賴注冊中心,只通過本地緩存。
[0053] 實施例一
[0054]現(xiàn)有的服務發(fā)現(xiàn)環(huán)境是消息服務(記做messageservice),提供服務包括:向用戶發(fā)送消息。已將服務注冊到Zookeeper注冊中心的目錄中,客戶端為應用程序(記做UserClient)已從Zookeeper注冊中心訂閱服務message service,并將獲得的服務注冊信息緩存至本地。User Client通過長連接與消息服務的提供方message service保持正常通信,User Client可以通過RPC協(xié)議從服務提供方message service調(diào)用服務,并一直使用本地存儲的該服務注冊信息與message服務進行通信。
[0055]在現(xiàn)有的服務提供環(huán)境下,詢盤服務預上線,該項服務的提供者inquiryservice加入當前環(huán)境中,服務提供者inquiry service首先在Zookeeper注冊中心進行如下注冊,并將服務發(fā)布,以便被服務調(diào)用者訂閱;
[0056](I)服務名稱:給客戶發(fā)送消息;
[0057](2)服務類型:函數(shù);
[0058](3)與服務相關(guān)的函數(shù)接口:sendlnquiry ,batchSendlnquiry;
[0059](4)服務地址:127.0.0.1:8181;
[0060](5)服務版本:1.0.0。
[0061 ] Zookeeper注冊中心完成對服務inquiry service的記錄,客戶端User Client通過從Zookeeper注冊中心訂閱服務獲取inquiry service服務的注冊信息,服務的注冊信息以特定格式數(shù)據(jù)包的形式由Zookeeper注冊中心傳至客戶端User Client,并存儲在UserClient的本地緩存中;當客戶端需要使用服務時,直接從本地緩存中調(diào)用服務的注冊信息,根據(jù)信息內(nèi)容找到inquiry service的地址和函數(shù)接,通過RPC協(xié)議實現(xiàn)對inquiryservice的sendlnquiry函數(shù)和batchSendlnquiry函數(shù)進行調(diào)用,進而能跨注冊中心直接使用inquiry service提供的函數(shù)調(diào)用服務;
[0062]實施例二
[0063]當服務提供端主動下線時,該服務提供端主動向Zookeeper服務注冊中心通知服務下線事件,服務注冊中心收到通知后即時檢查該服務在注冊中心內(nèi)的服務狀態(tài),若當前的服務狀態(tài)為“服務上線”,則將該服務的狀態(tài)更新為“服務下線”;若當前的服務狀態(tài)為下線,說明此前已經(jīng)收到過“服務下線”通知,則不執(zhí)行狀態(tài)的修改;
[0064]當注冊中心對服務狀態(tài)做了更新后,注冊中心獲取已訂閱此服務的所有客戶端的注冊信息。注冊中心通過長連接,依次將相關(guān)服務狀態(tài)變更的信息以特定的數(shù)據(jù)包形式傳送至客戶端,消息內(nèi)容是該服務在Zookeeper注冊中心的注冊信息;當客戶端接收到消息后,客戶端的本地緩存按照消息內(nèi)容中的消息名稱尋找該服務并檢測服務狀態(tài),完成檢測后更新現(xiàn)有的服務狀態(tài)“服務上線”為“服務下線”;
[0065]當客戶端在和服務提供端通信過程中,探測到服務提供端異常下線時,客戶端首先會立即檢測并獲取該服務在本地緩存中的服務狀態(tài),將當前的“服務上線”狀態(tài)更新為“服務下線”狀態(tài),同時將本地緩存的狀態(tài)更新情況與服務注冊信息一并成數(shù)據(jù)包,傳送至Zookeeper服務注冊中心處理。
[0066]實施例三
[0067 ]當服務提供端重新上線時,服務提供端主動向Zookeeper注冊中心通知上線事件。由于該服務在注冊中心中已完成注冊并發(fā)布,Zookeeper注冊中心識別出上線事件后檢查該服務的服務狀態(tài);
[0068]若當前該服務的狀態(tài)為“服務下線”,則注冊中心將該服務提供端的服務狀態(tài)改為“服務下線”;同時將服務狀態(tài)更新的消息傳送至客戶端,客戶端接收到消息后,客戶端的本地緩存按照消息內(nèi)容中的消息名稱尋找該服務并檢測服務狀態(tài),完成檢測后更新現(xiàn)有的服務狀態(tài)“服務上線”為“服務下線”;
[0069]若當前該服務的狀態(tài)為“服務上線”,則表明該服務提供端為短暫失聯(lián),并在心跳間隔期間自動恢復與Zookeeper注冊中心的聯(lián)系,Zookeeper注冊中心記錄日志,不執(zhí)行狀態(tài)修改。
[0070]所屬領(lǐng)域的普通技術(shù)人員應當理解:以上所述僅為本發(fā)明的具體實施例而已,并不用于限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內(nèi)。
【主權(quán)項】
1.一種基于注冊中心和緩存機制協(xié)同的服務發(fā)現(xiàn)方法,其特征在于,通過在服務調(diào)用端配置緩存,將服務提供端所提供服務的相關(guān)信息存入服務調(diào)用端的本地緩存中,使服務調(diào)用端的本地緩存和注冊中心在服務發(fā)現(xiàn)過程中協(xié)同工作;當服務調(diào)用者在調(diào)用所需服務時,不僅能通過注冊中心獲取服務狀態(tài)信息,也能從緩存中直接調(diào)用獲取,具體步驟包括為: 步驟1:緩存的設(shè)置及初始化,具體為當服務調(diào)用端啟動時,根據(jù)調(diào)用端的服務訂閱數(shù)量最大值和本地緩存占用內(nèi)存的最大值,在服務調(diào)用端的內(nèi)存中開辟相應的空間,作為服務訂閱注冊信息的存儲區(qū); 步驟2:為服務調(diào)用端配置好本地緩存后,服務提供端所提供服務的注冊信息分別存于注冊中心中和服務調(diào)用端的本地緩存中,注冊中心和服務調(diào)用端通過與服務提供端建立長連接執(zhí)行周期性探測服務提供端的運行情況;在服務發(fā)現(xiàn)過程中,注冊中心和服務調(diào)用端的緩存協(xié)同合作,能使服務調(diào)用者能脫離注冊中心調(diào)用需要的服務。2.根據(jù)權(quán)利要求1所述的基于注冊中心和緩存機制協(xié)同的服務發(fā)現(xiàn)方法,其特征在于,經(jīng)過本地緩存配置,所述服務調(diào)用端是一個能緩存自身所訂閱服務的相關(guān)信息的終端。3.根據(jù)權(quán)利要求1所述的一種基于注冊中心和緩存機制協(xié)同的服務發(fā)現(xiàn)方法,其特征在于,在所述步驟2中,注冊中心和服務調(diào)用端的本地緩存在服務發(fā)現(xiàn)過程中能協(xié)同工作,具體步驟包括: 步驟2-1:發(fā)布服務;服務提供端啟動后,在注冊中心注冊服務信息并發(fā)布,服務的注冊信息包括服務名稱、類型、與該服務相關(guān)的函數(shù)接口信息、服務節(jié)點地址信息(含IP地址和端口號)、服務版本信息等; 通過服務信息的發(fā)布,注冊中心能根據(jù)該服務的注冊信息完成對該服務記錄和存儲,同時建立與服務提供端之間的長連接關(guān)系,并能周期性探測該服務的狀態(tài)變化;當服務提供端出現(xiàn)故障或異常時,注冊中心能即時發(fā)現(xiàn)并更新該服務在注冊中心的服務狀態(tài); 步驟2-2:訂閱服務;服務調(diào)用端從注冊中心中訂閱自己需要的服務,若注冊中心已注冊該服務,服務調(diào)用端直接從注冊中心獲取該服務的注冊信息,同時將該服務的注冊信息存入本地緩存中; 當服務調(diào)用端訂閱服務的注冊信息存入服務調(diào)用端的緩存中時,服務調(diào)用端和服務提供端建立長連接,服務調(diào)用端能周期性對服務提供端運行狀態(tài)及健康狀況的進行探測,一旦服務調(diào)用端檢測到服務提供者的狀態(tài)異常,即不能正常地提供服務,則更新該服務在服務調(diào)用端本地緩存中的服務狀態(tài),并將該狀態(tài)更新情況通知給注冊中心; 步驟2-3:調(diào)用服務;當服務調(diào)用端需要使用某項服務時,服務調(diào)用端能完全脫離注冊中心,直接通過讀取本地緩存中服務提供者所提供服務的注冊信息,選擇最佳的服務提供端,并通過遠程過程調(diào)用協(xié)議調(diào)用遠程服務的接口,進而一直使用服務; 步驟2-4:更新服務的狀態(tài);所述服務狀態(tài)更新,按照服務狀態(tài)條件,分為三種:服務提供端的服務新上線、服務提供端的服務下線、服務提供端的服務重新上線;每一次服務調(diào)用端的服務狀態(tài)變化,相應地,注冊中心和服務調(diào)用端的服務狀態(tài)信息同時更新變化。4.根據(jù)權(quán)利要求3所述的一種基于注冊中心和緩存機制協(xié)同的服務發(fā)現(xiàn)方法,其特征在于,在所述的服務發(fā)現(xiàn)過程中,每一次服務調(diào)用端的服務狀態(tài)變化,相應地,注冊中心和服務調(diào)用端的服務狀態(tài)信息同時更新變化,具體為: 步驟2-4-1:服務提供端的服務狀態(tài)變更,服務提供端主動向注冊中心發(fā)送服務狀態(tài)變更的消息,注冊中心根據(jù)消息內(nèi)容識別服務,修改該服務存儲在注冊中心中的服務狀態(tài); 步驟2-4-2:注冊中心尋找所有調(diào)用該服務的服務調(diào)用端,逐一向各服務調(diào)用端發(fā)送服務狀態(tài)變更的消息; 特別地,服務提供端發(fā)送給注冊中心的有關(guān)服務狀態(tài)變更的通知消息和注冊中心發(fā)送給服務調(diào)用端的有關(guān)服務狀態(tài)變更的通知消息,內(nèi)容包括但不限于: (1)服務名稱及服務類型; (2)與該項服務相關(guān)的函數(shù)接口信息; (3)服務地址信息,包含IP地址和端口; (4)服務版本信息:服務更新前的狀態(tài)、服務當前狀態(tài)等; 步驟2-4-3:服務調(diào)用端接收到注冊中心的消息,根據(jù)消息內(nèi)容檢查并校驗本地緩存中該服務提供者的當前狀態(tài)后,立即修改該服務的注冊信息,更新該服務的服務狀態(tài)。5.根據(jù)權(quán)利要求4所述的一種基于注冊中心和緩存機制協(xié)同的服務發(fā)現(xiàn)方法,其特征在于,當所述服務調(diào)用端的緩存中的服務狀態(tài)更新完畢后,之后服務調(diào)用端針對該項服務的調(diào)用,完全能脫離對注冊中心的依賴,均通過讀取本地緩存中最新的服務信息,利用遠程過程調(diào)用協(xié)議調(diào)用該遠程服務的接口;整個通信期間的服務狀態(tài)更新不再依賴注冊中心,只通過本地緩存。
【文檔編號】H04L29/08GK105933444SQ201610481843
【公開日】2016年9月7日
【申請日】2016年6月27日
【發(fā)明人】陳濤, 王亞軍
【申請人】焦點科技股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1