Spring Cloud中使用Eureka來做服務註冊和發現,來統一管理微服務執行個體。
1.使用IDEA建立一個空的Maven項目做父模組
(也可以不用父項目,所有模組都用平行結構)
刪除父模組src檔案夾
可使用Spring Initializr來建立模組或者建立Maven項目手動添加依賴
2.使用Spring Initializr建立Eureka Server
選擇SDK 1.8
Artifact填寫對應模組的名稱
依次選擇Cloud Discovery->Eureka Server,Spring Boot預設選擇的是2.0.4
可以參考Spring Cloud官方對應的Spring Cloud版本對應組件的版本,可以看到Finchley.SR1對應的是Spring Boot 2.0.4.RELEASE版
projects.spring.io/spring-cloud/
建立好後會還原Maven項目的依賴,需要一段時間。
2.1配置Eureka Server註解
還原成功後會產生一個模組名稱+Application的啟動類,在類名上加上@EnableEurekaServer註解用來申明這是個Eureka伺服器
2.2配置Eureka Server設定檔
設定檔可參考號官方文檔,找到對應的Spring Cloud版本,點擊Reference。
http://cloud.spring.io/spring-cloud-static/Finchley.SR1/single/spring-cloud.html#spring-cloud-eureka-server
搜尋找到Standalone Mode單機模式
將項目中的application.properties尾碼名改為yml,把application.yml的設定檔內容複寫到項目中。
port為服務的連接埠,可以自訂,我這裡把連接埠改為了8881
idea使用Debug啟動成功後,在瀏覽器輸入:http://localhost:8881/ 有一下內容則說明該服務啟動成功。
3.使用Maven項目建立Eureka Server
建立一個空的Maven項目,在父模組建立的會自動選中父模組
將項目中的pom檔案parent節點全部刪除,到Spring Cloud官網複製Maven項目的依賴相關內容到pom檔案的project節點下
官網的依賴檔案是Eureka客戶的依賴,把dependencies節點下的依賴都刪除
添加Eureka Server的依賴:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency>
再添加Spring Cloud版本屬性
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> <spring-cloud.version>Finchley.SR1</spring-cloud.version></properties>
在resources檔案夾中添加application.yml檔案,並設定為資源根目錄,設定檔內容和第一一樣,改下連接埠為:8882
建立啟動類(項目名+Application.java),寫一個main方法啟動Spring Boot程式,並加上Eureka Server的註解
配置Spring Boot啟動配置項
選擇對應的啟動類
啟動該模組,成功後再瀏覽器輸入:http://localhost:8882/,使用Maven建立的Eureka Server項目也成功啟動了
4.建立Eureka Server叢集
叢集的作用是一個服務複製多份執行個體,當某一個執行個體掛掉後不至於影響整個系統,Eureka Server叢集中的每個執行個體都是相互複製來保障所註冊的服務一致。
實際生產環境中只要有一個Eureka Server通過不同的執行個體對應配置不同的連接埠來實現,為方便示範,我這裡建立叢集就採用剛剛建立的兩個不同的Eureka Server來做。
在官方文檔中搜尋:Peer Awareness
http://cloud.spring.io/spring-cloud-static/Finchley.SR1/single/spring-cloud.html#spring-cloud-eureka-server-peer-awareness
找到對應的叢集配置
修改Host檔案,添加 127.0.0.1 peer1 peer2,並將服務名設定一樣
服務1配置:
server: port: 8881eureka: instance: hostname: peer1 client: registerWithEureka: true #把自身當做用戶端註冊到其他Eureka伺服器 fetchRegistry: true #在本機快取所有執行個體註冊資訊 serviceUrl: #defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ #設定與Eureka Server互動的地址,查詢服務和註冊服務都需要依賴這個地址。 ##指向另一個註冊中心 defaultZone: http://peer2:8882/eureka/spring: #profiles: peer1 #沒做環境配置,注釋掉 application: name: tmsapi-discovery-server
服務2配置:
server: port: 8882eureka: instance: hostname: peer2 client: registerWithEureka: true #把自身當做用戶端註冊到其他Eureka伺服器 fetchRegistry: true #在本機快取所有執行個體註冊資訊 serviceUrl: #defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ #設定與Eureka Server互動的地址,查詢服務和註冊服務都需要依賴這個地址。 ##指向另一個註冊中心 defaultZone: http://peer1:8881/eureka/spring: #profiles: peer2 #沒做環境配置,注釋掉 application: name: tmsapi-discovery-server
啟動兩個服務,成功瀏覽器輸入:http://peer1:8881/ 和http://peer2:8882/,同一個Application中就有兩個執行個體了
peer1:
peer2:
至此Eureka Server叢集就搭建成功了。
Eureka相關資料:
53131023