構建Spring Eureka服務(學習筆記)

一、構建服務。

構建SPring Eureka服務
目錄結構:
在這裏插入圖片描述
yml配置:
在這裏插入圖片描述
筆記:
1.waitTimeInMsWhenSyncEmpty表示在服務器接收請求之前等待的初始時間,如果不設置的話,默認等待5分。。
2.每次服務註冊需要30s的時間才能在Eureka中顯示,因爲需要Eureka需要從服務中接收三次連續心跳包ping,每次間隔10s,然後才能用這個服務。
然後,要有註解:
在這裏插入圖片描述
運行即可:
在這裏插入圖片描述

二、通過Eureka註冊服務。

以組織服務來舉例:
同樣也需要引入Eureka。
在這裏插入圖片描述
配置yml,首先是關於Eureka的:
在這裏插入圖片描述
然後Spring:
在這裏插入圖片描述
筆記:
1.每個通過Eureka註冊的服務都會有兩個與之相關的組件:應用程序ID和實例ID。應用程序ID用於表示一組服務實例。應用程序ID由spring.application.name來指定。
2.爲什麼偏向於ip地址?
在默認情況下,Eureka在嘗試註冊服務時,都會使用主機名讓外界跟他進行聯繫。一般主機名要經過DNS解析,所以如果是在容器的環境下,主機名都是隨機生成的,沒有DNS記錄,所以IP地址更適合這些類型的服務,所以我們始終把這個屬性設置爲true。
3.開啓緩存後,註冊表會被緩存在本地,查找服務以緩存優先,且每隔30s就會主動聯繫Eureka服務,以便查看有沒有任何更新。
4.defaultzone可以包含列表,逗號隔開,這裏只有一個。
5.建立Eureka列表並沒有實現高可用,初次之外還要建立集羣纔可以。建立集羣是另外的知識點,這裏先不展開討論。
接下來運行組織服務
服務啓動後,記得耐心等待30s。
然後用postman請求http://localhost:8761/eureka/apps/organizationservice
在這裏插入圖片描述
到目前爲止,就已經有了一個通過Eureka註冊的服務了。
筆記:
1.默認返回是xml格式的,也可以作爲json返回,將Accept設置爲application/json即可。
在這裏插入圖片描述

三、使用服務發現來查找服務。

現在組織服務已經註冊到Eureka裏了,接下來許可證服務(另一個單獨的服務)將通過Eureka來調用組織服務。
牽扯到三個客戶端庫,從低到高包含了不同的與Ribbon進行交互的抽象層次(Ribbon是客戶端緩存,可以把發現的服務的位置緩存在本地)。

  • Spring DiscoveryClient
  • 啓用了RestTemplate的Spring DiscoveryClient
  • Netflix Feign客戶端
    作者根據clientType字段來選擇用哪個客戶端來查找,比如controller裏的這個方法:
    在這裏插入圖片描述
    查找的代碼也很清晰明瞭:
    在這裏插入圖片描述
    1.拿discoveryClient來說:
    在這裏插入圖片描述
    在這裏插入圖片描述
    這裏又有一個上一章的知識點,就是配置文件是用的配置服務來搞定的,也就是數據庫的配置文件都在配置服務裏存放着,這裏要啓動自己的數據庫服務,配置好配置服務的默認文件:
#啓動數據庫
docker run --name postgres1 -e POSTGRES_PASSWORD=password -p 5432:5432 -d postgres:9.1

連上試試:
在這裏插入圖片描述
這個表的數據,有sql語句的,直接運行就行。在這裏插入圖片描述
配置default:
在這裏插入圖片描述
然後運行起來配置服務。

2.增加Ribbon緩存:
在這裏插入圖片描述
筆記:Spring cloud早期版本Ribbon是默認支持的,而現在的都得明確聲明纔可以。
然後這樣去使用它:
在這裏插入圖片描述
在使用支持ribbon的情況下,使用Eureka服務ID來構建目標URL。

3.使用Netflix Feign客戶端來調用服務
這種是第二種的替代方案。
只需要寫個接口就可了,Spring Cloud框架將生成代理類。
在這裏插入圖片描述
在這裏插入圖片描述
筆記:在使用傳統的Rest時,所有服務調用的HTPP狀態碼都可以獲取到,而Feign客戶端將http狀態碼映射到了Exception,也提供了編寫錯誤碼解析類的功能,具體不展開討論了。
最後試着運行一下許可證服務:
在這裏插入圖片描述

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