您好,登錄后才能下訂單哦!
如何進行Eureka服務注冊與發現的分析,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
大白話服務服務注冊與發現
Eureka在微服務的體系中,主要的功能是實現服務治理,服務注冊與發現的,那么什么是服務注冊與發現呢?
微服務就是將項目中的模塊按照業務來進行拆分,如上圖,商品是一個獨立的服務,訂單也是獨立的服務,還可以根據需要將訂單服務部署為兩個。然后商品服務需要使用訂單的時候,就去調用訂單服務。
但是在上圖中有幾個問題是需要解決的:
商品服務想要調用訂單服務,怎么知道訂單服務1 和 訂單服務2的地址?如果臨時增加一個訂單服務3,那么怎么告訴商品服務訂單服務3的地址?
如果訂單服務1宕機了,這個時候商品服務如果不知道,依然選擇調用已經宕機的訂單服務1,會服務調用失敗。也就是說:訂單服務1宕機了,如何把這個情況即時的告訴其他所有的服務?
……
解決以上問題的方案就是:引入服務管理者,就是服務治理。
先舉一個生活的小栗子:
在沒有互聯網的時代,如果要租房子需要找中介,中介就是一個服務管理者的角色
我們是租房者,要找房源,這個關系就像是商品服務找訂單服務
那么房源怎么來呢?房東在需要出租房子的時候,去找中介,將自己的房源信息登記到中介那里。這個過程叫做注冊。
我們要租房子,假如說要租兩室一廳,首先需要先找中介要所有房源的注冊清單,從清單中可以找到兩室一廳。這個過程叫做發現。
這個例子可以幫助大家,理解注冊和發現兩個過程,以及管理者的角色。
通過以上例子我們得到下圖:
服務治理的管理者我們稱之為注冊中心。
服務注冊:每個服務在啟動的時候,告訴注冊中心自己的位置信息。
服務發現:商品服務想要調用訂單服務,先找注冊中心獲取到所有服務的位置信息,然后找到訂單服務的地址,發起調用。
心跳機制:服務啟動之后,每過30秒向注冊中心心跳一次(就是發送一個消息,告訴注冊中心自己還活著),如果注冊中心長時間沒有收到某個服務的心跳,那么就會認為這個服務已經宕機,就從服務注冊列表中刪除。
Spring Cloud封裝了Netlix 公司開發的Eureka模塊來實現服務治理,管理服務于服務之間依賴關系,可以實現服務調用、負載均衡、容錯等,實現服務發現與注冊。
在Eureka的架構中,分為 Eureka Server 和 Eureka client。
Eureka Server 作為服務注冊功能的服務器,它是服務注冊中心。
Eureka Server提供服務注冊服務:各個節點啟動后,會在EurekaServer中進行注冊,這樣EurekaServer中的服務注冊表中將會存儲所有可用服務節點的信息,服務節點的信息可以在界面中直觀的看到(監控頁面)
而系統中的其他微服務,使用 Eureka 的客戶端連接到 Eureka Server并維持心跳連接。這樣系統的維護人員就可以通過 Eureka Server 來監控系統中各個微服務是否正常運行。
EurekaClient是一個Java客戶端,用于簡化Eureka Server的交互,客戶端同時也具備一個內置的、使用輪詢(round-robin)負載算法的負載均衡器。
在應用啟動后,將會向Eureka Server發送心跳(默認周期為30秒)。如果Eureka Server在多個心跳周期內沒有接收到某個節點的心跳,EurekaServer將會從服務注冊表中把這個服務節點移除(默認90秒)
Eureka Client會緩存服務注冊表中的信息。這種方式有一定的優勢首先可以降低Eureka Server的壓力,其次當所有的Eureka Server宕機服務調用方依然可以完成調用
看完上述內容,你們掌握如何進行Eureka服務注冊與發現的分析的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。