我對註冊中心的理解

小白先生哦發表於2021-01-14

在單體應用中,所有功能都在一個應用中,但是隨著業務增長,系統功能逐漸變得龐大,單體應用在開發、部署等方面效率逐漸低下,開發協同越來越困難,等等問題。因此,對系統進行拆分變的必要。

但是在微服務架構中,越來越多的服務被拆分出來,整個系統之間的呼叫關係也會越來越複雜,各個服務管理也會變的越來越困難。那麼對這種數量極多、依賴關係複雜的系統如何進行管理成為了一個問題。

這時需要一個註冊中心進行服務治理。


註冊中心是什麼

首先,在微服務架構中,註冊中心是什麼?

一張圖進行概括,它就是一張通訊錄:

它將各個服務的資訊進行儲存,然後提供給需要者,同時維護各種過期失效的內容。


註冊中心原理

在微服務中,有三個非常重要的角色:註冊中心、服務提供者、服務消費者。對應關係如下:

對應的過程如下:

  • 各個服務啟動資訊註冊到註冊中心,註冊中心儲存註冊資料。
  • 各個服務註冊成功後,上傳服務健康資訊到註冊中心進行保活。
  • 各個服務消費者啟動時向註冊中心訂閱服務資訊,獲取服務地址列表,註冊中心在服務列表發生變化時同步給服務訂閱者。
  • 各個服務消費者呼叫服務提供者。

註冊中心功能

根據上圖中的資訊,大致可以列出註冊中心要提供的功能如下:

  • 服務登錄檔:註冊中心的核心功能,記錄各個服務提供者的資訊,比如服務名、IP、埠等。維護服務訂閱者資訊。
  • 服務註冊、登出介面:供服務提供方進行服務註冊和服務登出。
  • 健康檢查和服務摘除:提供健康資訊上報介面,供註冊服務上傳健康資訊進行服務保活。同時對於失效節點能夠及時摘除並同步給服務訂閱者。
  • 服務訂閱和變更通知:供服務消費者使用。

註冊中心實現機制

服務註冊模式主要分為兩種:自注冊模式、第三方註冊模式。

自注冊模式

每個服務自己向註冊中心進行註冊和登出,同時上傳健康資訊到註冊中心來保持註冊有效。

  • 優點:實現方式簡單,不需要部署其它額外的元件。

  • 缺點:耦合度較高,服務端需要和註冊中心進行適配。

第三方註冊模式

每個服務例項不需要自己直接向註冊中心進行註冊和登出,同時也不需要關注自己的健康資訊,這些事情直接由第三方元件來做。

  • 優點:服務和註冊中心解耦,不需要服務按照註冊中心來進行適配。

  • 缺點:第三方元件需要保證高可用,引入第三方服務也增加了系統的複雜度。

相關文章