參考資料
Eureka控制檯參數說明:https://www.cnblogs.com/linjiqin/p/10087462.html
前言
eureka作爲springcloud框架的核心組成部分,主要分爲server端和client端,本篇主要就eureka的一些基本概念進行講解,同時完成server端的搭建,爲接下來的源碼學習做好準備。
服務搭建
gitee地址:https://gitee.com/zhengyh25/eureka-server.git
github地址:https://github.com/MrXiaoguai/eureka-server.git
因爲網上已經有很多搭建教程了,這裏就不進行贅述了,只對大致的搭建流程進行描述,並對一些常見問題進行解答。另外提供我搭建完成的項目地址,方便大家學習。
搭建環境
- 系統:macos 10.15.3
- jdk:1.8
- springboot:2.2.4.RELEASE
- 開發環境:idea2019.3.3
server端搭建
項目初始化
項目初始化:idea->create new project->選擇Spring Initializr(選擇jdk1.8,Service URL爲default)->設置project Metadata(根據自己習慣設置即可)->引入依賴(Spring Cloud Discovery->Eureka Server)->自定義項目路徑->finish。
初始化完成,進入項目,打開pom文件,我們可以看到項目自動添加了需要的依賴包。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
至此,只需在springboot啓動類上添加@EnableEurekaServer註釋,即可按其默認配置啓動一個單實例server。
@SpringBootApplication
@EnableEurekaServer
public class EurekaApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaApplication.class, args);
}
}
Eureka Server控制檯簡介
啓動EurekaApplication,我們可以進入server的註冊中心頁面,下面簡單介紹以下注冊中心的相關內容。
- System Status
Environment:環境,默認爲test。該參數在實際生產中使用。
Data center:數據中心。
Current time:當前系統時間。
Uptime:server已運行時間。
Lease expiration enabled:是否啓動租約到期。默認自我保護機制開啓,爲false。關閉自我保護機制,該值爲true。
Renews threshold:續約閾值,即每分鐘server期待收到的client端的續約請求數。
Renew (last min):上一分鐘收到的client端的續約請求數。 - 紅字提醒
系統可能會出現三種紅色加粗的字體提示:- RENEWALS ARE LESSER THAN THE THRESHOLD. THE SELF PRESERVATION MODE IS TURNED OFF.THIS MAY NOT PROTECT INSTANCE EXPIRY IN CASE OF NETWORK/OTHER PROBLEMS.
原因:關閉了自我保護機制,並且續約實例少於閾值,server可能會剔除一些因爲網絡原因沒有續約的實例。 - EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY’RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE
NOT BEING EXPIRED JUST TO BE SAFE.
原因:開啓自我保護機制,server可能會記錄一些已經下線了的client實例。 - THE SELF PRESERVATION MODE IS TURNED OFF.THIS MAY NOT PROTECT INSTANCE EXPIRY IN CASE OF NETWORK/OTHER PROBLEMS.
原因:關閉了自我保護機制,提醒管理者server不再爲因爲網絡問題沒有續約的client提供保護。
- RENEWALS ARE LESSER THAN THE THRESHOLD. THE SELF PRESERVATION MODE IS TURNED OFF.THIS MAY NOT PROTECT INSTANCE EXPIRY IN CASE OF NETWORK/OTHER PROBLEMS.
- DS Replicas
DS Replicas中是server的同伴(peer),即該server的相鄰節點,根據配置eureka.client.service-url.defaultZone中的ip取值。集羣中用到,單例中不使用。因爲我們沒有配置server屬性,所以eureka.client.service-url.defaultZone默認爲http://localhost:8761/eureka/。因此上圖中顯示爲localhost。 - Instances currently registered with Eureka
該部分爲本server的註冊表,用於記錄註冊到該服務的實例,application爲應用名,一個應用可以有多個實例,記錄於Availability Zones。 - General Info
本部分用於記錄server的通用信息。
total-avail-memory:總共可用內存大小。
environment:環境名稱。
num-of-cpus:主機cpu核數。
current-memory-usage:當前已用內存。
server-uptime:服務已啓動時間。
registered-replicas:相鄰集羣複製節點,即配置的eureka.client.service-url.defaultZone。
unavailable-replicas:不可用的集羣複製節點,如何確定不可用? 主要是server1 向 peer節點發送接口查詢自身的註冊信息,如果查詢不到,則默認爲不可用,也就是說如果Eureka Server自身不作爲客戶端註冊到上面去,則相鄰節點都會顯示爲不可用。
available-replicas:可用的相鄰集羣複製節點。
注:有一種特殊情況暫時不知道原因,先記錄下來。配置7901,7902,7903三個端口的server集羣。啓動時候,當7901的defaultZone: http://root:root@localhost:7902/eureka/,http://root:root@localhost:7903/eureka/時,其他節點同樣使用localhost作爲ip,各個實例都能互相註冊,卻都在unavailable-replicas中,這三個實例互相註冊和同步註冊信息都沒有問題。只有將localhost改成hostname後纔在available-replicas,這個會接下來的集羣配置中提及。 - Instance Info
本部分爲實例信息:
ipAddr:server實例的ip地址
status:server實例的狀態 - LAST 1000 SINCE START UP
Last 1000 cancelled leases:最後1000個取消的租約
Last 1000 newly registered leases:最後1000個新註冊的租約
總結
本章主要就service的初始化和控制檯進行講解,使用的是默認的當然我們也可以通過配置application.yml來修改server屬性,同理適用於client端,下一章會就server單實例和集羣配置,client端註冊的實現進行講解。