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

2021-07-22 04:09:48 字數 800 閱讀 2762

背景

一項服務的客戶端需要使用客戶端發現或者伺服器端發現機制,從而獲取給其傳送請求的服務例項的位置。

問題

服務的客戶端(在客戶端發現機制中)或者服務路由(在服務端發現機制中)如何獲取可用服務例項的資訊?

需求

方案

建立一套服務登錄檔,即乙個包括服務、服務的例項和其位置資訊的資料庫。各服務例項需要在啟動時註冊至該服務登錄檔,並在關閉時進行登出。該服務的客戶端以及/或者路由器通過查詢此服務登錄檔以找到可用的服務例項。

示例

服務登錄檔的例子(或者經常作為服務登錄檔使用的技術)包括:

kubernetes、marathon以及aws elb等系統中存在一套隱式的服務登錄檔。

結果背景

服務登錄檔模式的優勢包括:

服務登錄檔模式的弊端包括:

需要決定各服務例項如何註冊至該服務登錄檔。有兩個選項:

服務登錄檔的客戶端需要獲取服務登錄檔例項的位置。另外,各服務登錄檔例項也必須被部署在固定且已知的ip位址上。各客戶端則利用這些ip位址進行配置。

舉例來說,netflix eureka服務例項通常會根據彈性ip位址進行部署。其彈性ip位址可用資源池則利用屬性檔案或者通過dns進行配置。當乙個eureka例項開始啟動時,它會查詢配置,尋找可用的彈性ip位址。eureka客戶端也需要通過該彈性ip位址池進行配置。

相關模式

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

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

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

背景 如採用客戶端服務發現模式或者伺服器端服務發現模式,各服務例項必須在啟動時註冊至服務登錄檔,從而保證其能夠被獲取,並在關閉時進行登出。問題 如何在服務登錄檔內註冊和登出服務例項?需求 方案 一項服務例項必須可以自動註冊到服務登錄檔中。在啟動時,該服務例項將自身 主機與ip位址 註冊至服務登錄檔,...

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

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