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