SpringCloud之EurekaServer叢集技術
阿新 • • 發佈:2018-12-12
注意:spingcloud的版本號與springboot的衝突問題我這裡用的springcloud版本是:finchley.SR2,springboot版本是:2.0.7。
注意:spingcloud的版本號與springboot的衝突問題我這裡用的springcloud版本是:finchley.SR2,springboot版本是:2.0.7。
建立專案
編寫配置檔案application.yml
--- spring: profiles: peer1 server: port: 8800 eureka: instance: hostname: peer1 client: registerWithEureka: false fetchRegistry: false serviceUrl: defaultZone: http://127.0.0.1:8900/eureka/ --- spring: profiles: peer2 server: port: 8900 eureka: instance: hostname: peer2 client: registerWithEureka: false fetchRegistry: false serviceUrl: defaultZone: http://127.0.0.1:8800/eureka/
啟動類加註解
@EnableEurekaServer
@SpringBootApplication
public class EurekaschoolingApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaschoolingApplication.class, args);
}
}
這裡程式碼階段已經完成
打包
專案打包方式自選
啟動專案
採用如下命令
java -jar eurekaschooling-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer1 java -jar eurekaschooling-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer2
在瀏覽其中分別開啟如下網址能夠成功,說明我們的叢集搭建完畢
深入理解高可用
這裡到了如何配置服務消費者的問題了
這是官網的配置:
eureka:
client:
serviceUrl:
defaultZone: http://peer1/eureka/,http://peer2/eureka/,http://peer3/eureka/
這裡有一個問題:
如果我們是由10個eureka叢集搭建的註冊中心,那麼我們每個消費者配置檔案中都要把這10個註冊中心的url都寫上。這顯然是不太可行的。
這就涉及到了eureka的叢集原理了。只要我們再任意個服務的url註冊了,叢集中的其他註冊服務都會同步。
就算是服務註冊的這個Url的宕機 了,服務 依然可用。
這才是高可用啊!!!
下面我們來繼續探討
繼續修改前面專案的application.yml
---
spring:
profiles: peer1
server:
port: 8800
eureka:
instance:
hostname: peer1
client:
registerWithEureka: false
fetchRegistry: false
serviceUrl:
defaultZone: http://127.0.0.1:8900/eureka/,http://127.0.0.1:9000/eureka/
---
spring:
profiles: peer2
server:
port: 8900
eureka:
instance:
hostname: peer2
client:
registerWithEureka: false
fetchRegistry: false
serviceUrl:
defaultZone: http://127.0.0.1:9000/eureka/,http://127.0.0.1:8800/eureka/
---
spring:
profiles: peer3
server:
port: 9000
eureka:
instance:
hostname: peer3
client:
registerWithEureka: false
fetchRegistry: false
serviceUrl:
defaultZone: http://127.0.0.1:8800/eureka/,http://127.0.0.1:8900/eureka/
打包後啟動
java -jar eurekaschooling-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer1
java -jar eurekaschooling-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer2
java -jar eurekaschooling-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer3
分別訪問如下地址
可以看到啟動成功
但是我們還要測試服務註冊能不能三個都同步
編寫服務註冊工程
配置檔案application.yml
server:
port: 8765
spring:
application:
name: client
eureka:
client:
serviceUrl:
defaultZone: http://127.0.0.1:9000/eureka/
啟動類
@EnableDiscoveryClient
@SpringBootApplication
public class EurekaclientApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaclientApplication.class, args);
}
}
執行測試
可以看到在三個服務中都完成了註冊,說明叢集實現了同步。
將埠為9000的服務宕機
可以看到在其他兩個服務中依然有效。這就是高可用!!!