[發明專利]基于注冊中心和緩存機制協同的服務發現方法有效
| 申請號: | 201610481843.7 | 申請日: | 2016-06-27 |
| 公開(公告)號: | CN105933444B | 公開(公告)日: | 2017-06-09 |
| 發明(設計)人: | 陳濤;王亞軍 | 申請(專利權)人: | 焦點科技股份有限公司 |
| 主分類號: | H04L29/08 | 分類號: | H04L29/08 |
| 代理公司: | 南京瑞弘專利商標事務所(普通合伙)32249 | 代理人: | 陳建和 |
| 地址: | 210003 江蘇省南京市高新*** | 國省代碼: | 江蘇;32 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 基于 注冊 中心 緩存 機制 協同 服務 發現 方法 | ||
技術領域
本發明屬于計算機處理技術的服務發現領域,具體涉及一種基于注冊中心和緩存機制協同的服務發現方法。
背景技術
隨著軟件設計尤其是分布式軟件設計理論與實踐的發展,面向服務的軟件設計思想逐漸被各大中型軟件系統設計人員所接受,成為軟件設計的主流趨勢之一。軟件設計服務化區別于傳統的軟件設計模式,強調功能的模塊化和獨立化,它將通用的功能抽象為單一的服務實體,供其它服務或應用來調用,避免了在軟件開發過程中“重復發明輪子”,以增強服務的可擴展性,提高資源的利用率,增強系統的整體穩定性。
由于現有的服務發現都是基于注冊中心,從而所有的服務調用客戶端都依賴于一個注冊中心,在性能上存在一定的瓶頸。注冊中心的穩定性將很大地制約服務發現的發展。
服務發現機制是以最大限度提高資源和服務的訪問有用性及有效性的解決方案,包括資源和服務的注冊、訪問、管理和維護等。服務發現記錄了大規模分布式系統中所有服務的信息,是服務框架所面臨的一個基礎問題。高效的服務發現機制是衡量服務框架好壞的標志之一。服務狀態一般包括上線、下線、重新上線、異常等。服務狀態維護是指由系統識別并跟蹤服務的狀態變化,根據狀態的變化觸發相應的處理邏輯,使得系統各參與方對服務狀態變化進行感知。傳統的服務狀態維護方式一般是通過輪詢,即由服務提供者周期性地向注冊中心匯報自身狀態,或注冊中心周期性地向服務提供者探測狀態,再由服務調用者周期性地向注冊中心檢查服務提供者的狀態,然而這種僅依靠“輪詢方式”維護服務狀態存在倆種缺陷:
其一,狀態實時性存在一定局限性。輪詢間隔(也稱“心跳”)期間,存在延時間隙。當某服務A不可用時,在下一次服務調用者想要調用服務A時,由于服務調用者無法及時感知服務A的狀態更新,繼續調用將導致這段期間內對A的服務調用錯誤;
其二,服務調用的穩定性依賴于注冊中心。第三方的注冊中心可能由于自身的軟件bug或網絡環境等原因,容易出現不穩定的情況。而服務提供者和服務調用者因時刻維護服務狀態,兩者均與注冊中心交互頻繁,這樣容易導致服務調用的可靠性受限于第三方組件。
發明內容
為解決上述的問題,本發明的目的是通過在服務調用端配置緩存,將服務提供端所提供服務的相關信息存入服務調用端的本地緩存中,使服務調用端的本地緩存和注冊中心在服務發現過程中協同工作。當服務調用者在調用所需服務時,不僅可以通過注冊中心獲取服務狀態信息,也可以從緩存中直接調用獲取。本發明能減少服務提供者和服務調用者對注冊中心的依賴,有利于提高服務調用的效率。
一種基于注冊中心和緩存機制協同的服務發現方法,技術方案具體如下:
首先,緩存的設置及初始化,具體為當服務調用端啟動時,根據調用端的服務訂閱數量最大值和本地緩存占用內存的最大值,在服務調用端的內存中開辟相應的空間,作為訂閱服務注冊信息的存儲區;
特別地,與以往的服務調用端不同,本發明中的服務調用端是一個包含緩存裝置的服務調用者,它能緩存自身所訂閱服務的相關信息。
其次,為服務調用端配置好本地緩存后,服務提供端所提供服務的注冊信息分別存于注冊中心中和服務調用端的本地緩存中,注冊中心和服務調用端通過與服務提供端建立長連接執行周期性探測服務提供端的運行情況;在服務發現過程中,注冊中心和服務調用端的緩存能協同合作,能使服務調用者能脫離注冊中心調用需要的服務,具體步驟包括:
步驟1:發布服務;服務提供端啟動后,在注冊中心注冊服務信息并發布,服務的注冊信息包括服務名稱、類型、與該服務相關的函數接口信息、服務節點地址信息(含IP地址和端口號)、版本信息等。
通過服務的發布,注冊中心能根據該服務的注冊信息完成對該服務記錄和存儲,同時建立與服務提供端之間的長連接關系,并能周期性探測該服務的狀態變化;當服務提供端出現故障或異常時,注冊中心能即時發現并更新該服務在注冊中心的服務狀態;
步驟2:訂閱服務;服務調用端從注冊中心中訂閱自己需要的服務,若注冊中心已注冊該服務,服務調用端直接從注冊中心獲取該服務的注冊信息,同時將該服務的注冊信息存入本地緩存中;
當服務調用端訂閱服務的注冊信息存入服務調用端的緩存中時,服務調用端和服務提供端建立長連接,服務調用端能周期性對服務提供端運行狀態及健康狀況的進行探測,一旦服務調用端檢測到服務提供者的狀態異常(比如服務下線),則更新該服務在服務調用端本地緩存中的服務狀態,并將該狀態更新情況通知給注冊中心。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于焦點科技股份有限公司,未經焦點科技股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201610481843.7/2.html,轉載請聲明來源鉆瓜專利網。





