SpringCloud微服務項目實戰,服務註冊與發現(附面試題)

最近項目的事真是搞的焦頭亂額,好多天沒更新文章了。今天抽空繼續前面的SpringCloud微服務實戰系列項目,以後我會基於面試的一些問題及原理展開,再深入到項目實戰。希望小夥伴們看完能有更大的收穫,不僅面試的基礎問題都知道了,再跟着實戰練練手,就能更加深入的掌握,對找工作也會有很大的幫助。

服務註冊與發現(面試題

1、什麼是服務的註冊與發現?

服務的註冊與發現,在任何RPC遠程調用框架中,都會有一個註冊中心。用來存放服務地址相關信息。首先我們得啓動註冊中心的服務,在註冊中心正常運行時,當提供者服務器啓動的時候,就會把當前自已服務器的信息,比如服務地址通訊地址等以別名方式註冊到註冊中心上。消費者以該服務別名的方式去註冊中心上獲取到實際的服務通訊地址,然後在實現本地rpc遠程調用。

 

目前服務發現的解決方案有Eureka,Consul,Zookeeper等等。SpringCloud默認使用eureka作爲服務註冊中心。

2,介紹你對Eureka的理解?

Eureka是Netfix的一個子模塊,也是核心模塊之一。Eureka是一個基於REST的服務,用於定位服務,以實現雲端中間層服務發現和故障轉移。服務註冊與發現對於微服務架構來說是非常的重要,有了服務發現與註冊,只需要使用服務的標識符,就可以訪問到服務了,而不需要修改服務調用的配置文件了。功能類似於dubbo的註冊中心,比如Zookeeper。

Eureka採用了C-S的設計架構。Eureka Server作爲服務註冊功能的服務器,它是服務註冊中心。而系統中的其他微服務,使用Eureka Client連接到Eureka Server並維持心跳連接。這樣系統的維護人員就可以通過Eureka Server來監控系統中各個微服務是否正常運行。

3, Eureka服務註冊流程?

1),服務啓動時會生成服務的基本信息對象InstanceInfo,然後在啓動時註冊到服務治理中心。

2),服務註冊完成後,會從服務治理中心拉取所有的服務信息,緩存在本地。

3),之後服務會30s(可配置)發送一個心跳信息,續約服務。

4),如果服務治理中心在90s內沒有收到一個服務的續約,就會認爲服務已經掛了,會把服務註冊信息刪掉。

5),服務停止前,會主動發送一個停止請求,服務治理中心會刪除這個服務的信息。

6),如果Eureka Server收到的心跳包不足正常值的85%(可配置)就會進入自我保護模式,在這種模式下,Eureka Server不會刪除任何服務信息。

原理總結:

  • Eureka:就是服務註冊中心(可以是一個集羣),對外暴露自己的地址;

  • 提供者:啓動後向Eureka註冊自己信息(地址,提供什麼服務);

  • 消費者:向Eureka訂閱服務,Eureka會將對應服務的所有提供者地址列表發送給消費者,並且定期更新;

  • 心跳(續約):提供者定期通過http方式向Eureka刷新自己的狀態;

務註冊與發現實戰

接着上次的項目繼續開始實戰,我們先創建兩個服務模塊,創建完成如下:

然後在pom裏添加Eureka的Service和Client等依賴。

父級pom依賴

customer和order模塊的pom依賴

爲這個兩個服務添加啓動類和配置:

customer模塊的啓動類:

customer模塊的yml配置:

order模塊的啓動類:

order模塊的yml配置:

配置完成先啓動Eureka服務,然後分別啓動其他兩個服務,檢查註冊中心:

兩個服務已全部註冊成功,基礎已搭建完成。接着寫一個http請求的服務提供與消費調用。

首先在Customer裏寫一個提供者服務,如下:

並在啓動類裏添加feign註解。

然後在Order模塊寫一個消費者服務:

如果提供者調用失敗處理:

再在order裏寫一個http請求的測試接口:

還需要在order模塊的啓動類裏添加feign註解:

到此處,代碼已寫完了,啓動customer和order服務準備測試。

測試結果,完美實現了服務註冊與調用。

下期預期:SpringCloud微服務實戰系列,微服務調用、網關搭建配置詳解。

 

掃碼關注,可獲取學習資料和實戰項目源碼,還有很多幹活等着你

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