Spring cloud 解決硬編碼問題——服務發現與服務註冊(Spring cloud學習筆記 3)

前言:

Spring Cloud系列教程的所有博客均在下方的目錄鏈接中,方便大家查找和閱讀。建議按照順序學習,對於項目搭建有疑問的可以着重看目錄裏的第二篇博客。
Spring cloud學習專欄目錄

一、什麼是硬編碼問題

在我的上一篇關於實現微服務的簡單demo博客中,我是將接口請求地址寫死在代碼中。這就帶來了問題,如果接口地址發生變化,那我就需要去代碼中進行修改,這樣就很不方便。而且現在只是兩個微服務,如果有幾百個微服務,怎麼可能去一個一個修改,所以我們要解決這個問題。
在這裏插入圖片描述
在這裏插入圖片描述

二、嘗試解決硬編碼問題

將請求的url寫到application.properties文件中

這樣雖然比之前直接寫到代碼中要好,但是還是存在問題。如果是幾百個微服務,那麼修改帶來的工作量是極大的。而且一個服務提供者可能有多個服務消費者,也就是說如果服務提供者的IP或是端口號發生了變動那麼調用它的服務消費者都需要進行修改。而這些服務消費者可能又是別的微服務的服務提供者,那麼就意味着可能又有很多微服務需要進行修改,系統將變得非常難維護。所以這種方法也是不可行的。

三、服務發現與服務註冊

3.1 簡介:

這裏我們將服務發現和服務註冊理解爲服務發現組件
註冊:服務提供者和服務消費者在啓動時將自己的網絡地址註冊到服務發現組件之中,服務消費者進行接口調用時,會到服務發現組件中去查詢服務提供者的IP和端口然後進行調用。
發送心跳:每個正常運作的服務都要定時向服務發現組件發送心跳,因爲服務在運行之中,我們不可能保證它永遠都不出問題,如果一個服務出了問題不能正常工作,那麼服務發現組件在幾次沒有接受到它的心跳之後,就會把它從註冊列表中移除。
在這裏插入圖片描述

3.2 服務發現組件的功能

服務註冊表: 服務註冊表是一個記錄當前可用服務實例的網絡信息的數據庫,是服務發現機制的核心。服務註冊表提供查詢API和管理API,使用查詢API獲得可用的服務實例,使用管理API實現註冊和註銷;
服務註冊: 服務啓動時,將服務的網絡地址註冊到服務註冊表中;
健康檢查: 服務發現組件會通過一些機制定時檢測已註冊的服務,如果發現某服務無法訪問了(如某幾個心跳週期後),就將該服務從服務註冊表中移除。從而保證服務消費者可以調用到一個正常工作的服務提供者。

3.3 服務發現的方式

客戶端發現: Eurake
服務端發現: Consul + nginx

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章