微服務架構模式系列文章之七 自註冊

2021-07-22 04:09:48 字數 758 閱讀 4554

背景

如採用客戶端服務發現模式或者伺服器端服務發現模式,各服務例項必須在啟動時註冊至服務登錄檔,從而保證其能夠被獲取,並在關閉時進行登出。

問題

如何在服務登錄檔內註冊和登出服務例項?

需求

方案

一項服務例項必須可以自動註冊到服務登錄檔中。在啟動時,該服務例項將自身(主機與ip位址)註冊至服務登錄檔,使自身可被發現。客戶端必須定期更新其註冊資訊,確保登錄檔獲悉其仍處於執行狀態。在關閉時,服務例項從服務登錄檔中自動登出。

這一流程通常由微服務底盤框架實現。

例子

netflix eureka即是服務登錄檔的乙個例子。它為服務實現自動註冊(登出)提供乙個註冊api及一套客戶端庫。

在使用apache zookeeper作為服務登錄檔時,每項服務對應乙個特定的zookeeper znode。在啟動時,各服務例項會在該服務的znode下建立乙個具有短暫存活時間的子znode。該子znode中包含該例項的位置資訊。服務客戶端通過檢索該服務的子znode即可判斷對應服務例項的可用性。如果服務例項終止但未移除對應的子znode,zookeeper會在該子znode的存活時間超時後將其移除。

結果背景

自註冊模式的優勢在於:

但自註冊模式也存在著以下弊端:

相關模式

微服務架構模式系列文章之六 服務登錄檔

背景 一項服務的客戶端需要使用客戶端發現或者伺服器端發現機制,從而獲取給其傳送請求的服務例項的位置。問題 服務的客戶端 在客戶端發現機制中 或者服務路由 在服務端發現機制中 如何獲取可用服務例項的資訊?需求 方案 建立一套服務登錄檔,即乙個包括服務 服務的例項和其位置資訊的資料庫。各服務例項需要在啟...

微服務架構模式系列文章之六 服務登錄檔

背景 一項服務的客戶端需要使用客戶端發現或者伺服器端發現機制,從而獲取給其傳送請求的服務例項的位置。問題 服務的客戶端 在客戶端發現機制中 或者服務路由 在服務端發現機制中 如何獲取可用服務例項的資訊?需求 方案 建立一套服務登錄檔,即乙個包括服務 服務的例項和其位置資訊的資料庫。各服務例項需要在啟...

微服務架構模式系列文章之三 API閘道器

背景 產品細節ui可以顯示出大量產品資訊。舉例來說,amazon.com的pojos in action 圖書詳情頁面中會顯示 因此,顯示產品詳情的 需要從這些服務中獲取資訊。問題 微服務架構的應用客戶端如何訪問各項服務?需求 方案 使用api閘道器作為全部客戶端的單一入口點。該api閘道器通過以下...