關於 Spring Cloud ,你不得不瞭解的三個知識點

作者簡介:尹吉歡,資深 Java 技術專家。本文選自:本文選自:拉勾教育專欄《300分鐘搞懂 Spring Cloud》

你好,我是你的緩存課老師尹吉歡,歡迎進入第 2 課時“服務治理-Eureka”的學習。

本課時的主要內容包括:服務註冊、服務發現、服務註冊與服務發現相關動作,以及服務註冊與服務發現解決的問題,和服務治理-Eureka。

服務註冊

關於 Spring Cloud ,你不得不瞭解的三個知識點

服務註冊與服務發現是微服務架構的核心功能,Eureka 則是 Spring Cloud 中負責服務註冊與服務發現的組件,在學習 Eureka 之前,你需要了解什麼是服務註冊?什麼是服務發現?只有瞭解了服務註冊與服務發現的原理才能更好地理解 Eureka 的使用和設計原理。

本文選自:拉勾教育專欄《300分鐘搞懂 Spring Cloud》

註冊中心

關於 Spring Cloud ,你不得不瞭解的三個知識點

在介紹服務註冊的概念前,我們先來了解什麼是註冊中心。

為了方便理解,你可以將註冊中心拆解成兩個詞,分別是註冊和中心。註冊很好理解,比如我們的用戶註冊,就是將自己的信息註冊在某個平臺上。再來看中心這個詞,可以理解成一個統一管理的平臺。兩個詞連起來就是註冊中心,也就是統一管理所有的註冊信息。

服務註冊指的是服務在啟動的時候將自身的信息註冊到註冊中心,方便進行統一管理。服務註冊是客戶端向註冊中心提交信息的動作。

你現在看到的這張圖,就是服務註冊的過程。圖中最上面的是我們的註冊中心,下面的客戶端是我們的應用程序,服務註冊就是我們的程序在啟動之後會將自身的信息往註冊中心進行註冊的過程,服務註冊後註冊中心就有了所有程序的信息。

服務註冊的場景在我們日常工作中非常常見,以電商的業務場景為例,我們有訂單和商品兩個服務,創建訂單的時候,訂單服務會調用商品服務的接口來校驗商品的價格信息等是否正確。訂單服務要跟商品服務進行交互,就必須知道商品服務的地址信息,當商品服務只部署一個節點時,你可以直接通過 IP + 端口的方式進行訪問。

當商品服務部署了三個節點,你可以通過域名進行訪問,通過 Nginx 進行轉發。當商品服務部署了上百個節點時,每增加一個節點都需要修改 Nginx 的配置文件。如果此時我們引入了註冊中心,就可以將應用的信息告訴註冊中心,通過註冊中心來全局管理服務的節點信息。

服務發現

關於 Spring Cloud ,你不得不瞭解的三個知識點

瞭解了服務註冊後,我們接下來學習服務發現的內容。

服務發現指的是從註冊中心獲取對應服務的信息。服務發現是客戶端向註冊中心獲取信息的動作。

你現在看到的這張圖,就是服務發現的過程。每個客戶端都會從註冊中心拉取自己關注的信息到本地。

還是上面提到的那個場景,商品服務的信息註冊到註冊中心,訂單服務該怎麼獲取商品服務的信息呢,我想你應該想到了,就是從註冊中心拉取商品服務的信息。

只有將商品服務的節點信息拉取過來,才可以跟商品服務進行交互,這就是服務發現的場景,簡單的理解服務發現就是從註冊中心獲取對應的信息,獲取之後需要做什麼業務處理,跟註冊中心無關,註冊中心只提供信息。

本文選自:拉勾教育專欄《300分鐘搞懂 Spring Cloud》

服務註冊與服務發現相關動作

關於 Spring Cloud ,你不得不瞭解的三個知識點

服務註冊與服務發現並不僅僅只有註冊和拉取這兩個動作,還有一些其他相關的動作。我們現在來對這些動作進行統一的講解。

你看到的這張圖涉及服務註冊與服務發現,以及它們間的相關動作,最上面的是註冊中心,用來集中存儲管理服務信息。

圖中右下方是服務提供者,通過 API 供其他方調用服務。

圖中左下方是服務消費者,需要調用其他方的 API 獲取服務。

無論是服務提供者還是服務消費者,都會將信息註冊到註冊中心進行統一管理。

服務消費者需要知道服務提供者的信息,比如 IP、 端口等信息,才能發起遠程調用,所以需要通過拉取的動作從註冊中心拉取對應服務的信息,併發起調用。

當我們的服務提供者出現故障後,這個時候是無法提供服務的,如果此時服務提供者留在註冊中心的狀態還是正常就會導致服務消費者調用失敗。

那麼註冊中心如何知道其他服務是否健康呢,這個時候就需要有一個心跳的動作,心跳就是健康彙報,定時跟註冊中心打招呼,告訴註冊中心,Hi, 哥們,我還活著。

當一定時間內無心跳產生,則證明服務可能出現故障,無法彙報健康狀態,註冊中心就會剔除無效的服務信息。

總結下來,如果需要實現完整的服務註冊與服務發現的功能,我們需要有註冊中心來統一存儲和管理服務信息,應用程序需要將自身的信息註冊到註冊中心,也就是我們的服務提供者和服務消費者的信息。整個過程包含的操作有註冊,拉取,心跳,剔除等動作。

當面試官問你什麼是服務註冊與發現,我想你應該知道怎麼回答了。

下一課時我將分享“客戶端負載均衡-Ribbon ”,記得按時來聽課哈。

本文選自:拉勾教育專欄《300分鐘搞懂 Spring Cloud》關注我的公號:IT技術思維,回覆:123,可以免費獲得大廠面試真題哦~


分享到:


相關文章: