在單體應用中,所有功能都在一個應用中,但是隨著業務增長,系統功能逐漸變得龐大,單體應用在開發、部署等方面效率逐漸低下,開發協同越來越困難,等等問題。因此,對系統進行拆分變的必要。
但是在微服務架構中,越來越多的服務被拆分出來,整個系統之間的呼叫關係也會越來越複雜,各個服務管理也會變的越來越困難。那麼對這種數量極多、依賴關係複雜的系統如何進行管理成為了一個問題。
這時需要一個註冊中心進行服務治理。
註冊中心是什麼
首先,在微服務架構中,註冊中心是什麼?
一張圖進行概括,它就是一張通訊錄:
它將各個服務的資訊進行儲存,然後提供給需要者,同時維護各種過期失效的內容。
註冊中心原理
在微服務中,有三個非常重要的角色:註冊中心、服務提供者、服務消費者。對應關係如下:
對應的過程如下:
- 各個服務啟動資訊註冊到註冊中心,註冊中心儲存註冊資料。
- 各個服務註冊成功後,上傳服務健康資訊到註冊中心進行保活。
- 各個服務消費者啟動時向註冊中心訂閱服務資訊,獲取服務地址列表,註冊中心在服務列表發生變化時同步給服務訂閱者。
- 各個服務消費者呼叫服務提供者。
註冊中心功能
根據上圖中的資訊,大致可以列出註冊中心要提供的功能如下:
- 服務登錄檔:註冊中心的核心功能,記錄各個服務提供者的資訊,比如服務名、IP、埠等。維護服務訂閱者資訊。
- 服務註冊、登出介面:供服務提供方進行服務註冊和服務登出。
- 健康檢查和服務摘除:提供健康資訊上報介面,供註冊服務上傳健康資訊進行服務保活。同時對於失效節點能夠及時摘除並同步給服務訂閱者。
- 服務訂閱和變更通知:供服務消費者使用。
註冊中心實現機制
服務註冊模式主要分為兩種:自注冊模式、第三方註冊模式。
自注冊模式
每個服務自己向註冊中心進行註冊和登出,同時上傳健康資訊到註冊中心來保持註冊有效。
-
優點:實現方式簡單,不需要部署其它額外的元件。
-
缺點:耦合度較高,服務端需要和註冊中心進行適配。
第三方註冊模式
每個服務例項不需要自己直接向註冊中心進行註冊和登出,同時也不需要關注自己的健康資訊,這些事情直接由第三方元件來做。
-
優點:服務和註冊中心解耦,不需要服務按照註冊中心來進行適配。
-
缺點:第三方元件需要保證高可用,引入第三方服務也增加了系統的複雜度。