首先解釋一下標題所說的「直覺BUG」,這個是我本身的定義。就是咱們直覺上認爲這是一個BUG,是一個錯誤,而實際並無出錯。java
好比下圖:spring
雖然出現報錯信息,可是,整個程序並無出錯。至於緣由,圖片上的文字已經很好的解釋了。windows
在此,再簡單的說一下。服務器
出現這種狀況的緣由是,咱們的程序已經啓動(已經出現紅框中此條日誌,表明程序已經啓動,因此程序自己沒有問題。),爲何會出現錯誤呢?app
是由於在此係統中,咱們要搭建的是集羣環境, 每一臺服務器在本身啓動以後,都要去鏈接集羣中的其餘服務器,以便於相互之間通信傳遞信息。maven
可是,咱們確定是按照次序啓動服務器,咱們無論先啓動哪一臺服務器,其餘的服務器都尚未準備就緒,因此確定會出現找不到要鏈接的服務器,因此會報錯。工具
這個錯誤根本不須要解決, 把全部的服務器所有啓動,整個集羣就能夠正常運行(由於出現的是鏈接錯誤,如今全部的服務器已經準備就緒,因此不會再一次出現鏈接錯誤,除非某臺服務器down掉。)。fetch
下面咱們看一下SpringCloudEureka集羣的搭建過程:spa
一、首先建立項目結構:(使用SpringBoot 1.5.10).net
二、在啓動程序類頭部加入注
package com.thunisoft.thunisoftregister;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@EnableEurekaServer
@SpringBootApplication
public class ThunisoftRegisterApplication {
public static void main(String[] args) {
SpringApplication.run(ThunisoftRegisterApplication.class, args);
}
}
三、編寫配置文件
spring:
application:
name: spring-cloud-eureka
profiles: peer1
server:
port: 8000
eureka:
instance:
hostname: peer1
client:
serviceUrl:
defaultZone: http://peer2:8001/eureka/,http://peer3:8002/eureka/
fetch-registry: true register-with-eureka: true
---
spring:
application:
name: spring-cloud-eureka
profiles: peer2
server:
port: 8001
eureka:
instance:
hostname: peer2
client:
serviceUrl:
defaultZone: http://peer1:8000/eureka/,http://peer3:8002/eureka/
fetch-registry: true register-with-eureka: true
---
spring:
application:
name: spring-cloud-eureka
profiles: peer3
server:
port: 8002
eureka:
instance:
hostname: peer3
client:
serviceUrl:
defaultZone: http://peer1:8000/eureka/,http://peer2:8001/eureka/
fetch-registry: true register-with-eureka: true
以上配置中標紅的代碼段很重要,在此進行說明:
一、fetch-registry:表示是否從eureka server獲取註冊信息,若是是單一節點,不須要同步其餘eureka server節點,則能夠設置爲false,但此處爲集羣,應該設置爲true,默認爲true,可不設置。
二、register-with-eureka:表示是否將本身註冊到eureka server,由於要構建集羣環境,須要將本身註冊到及羣衆,因此應該開啓。默認爲true,可不顯式設置。
四、由於實在一臺機器上實驗,因此修改host文件(windows系統下、C:\Windows\System32\drivers\etc)
127.0.0.1 peer1
127.0.0.1 peer2
127.0.0.1 peer3
增長如上三段
五、啓動註冊中心服務
5.一、可使用IDEA進行啓動
按照這個步驟添加三個啓動節點,注意: program arguments 參數依次更改成 peer2 、peer3,與配置文件中的 spring.application.files 參數值對應。
以後所有啓動。
5.二、打包成jar以後,使用 java -jar命令啓動
使用maven插件或gradl插件等等構件工具,將程序打包爲jar。而後執行如下命令
java -jar 生成的jar包名稱.jar --spring.profiles.active=peer1
java -jar 生成的jar包名稱.jar --spring.profiles.active=peer2
java -jar 生成的jar包名稱.jar --spring.profiles.active=peer3
注意: 以上兩種啓動方式都可以將集羣啓動,可是有一個問題要注意,就是上面提到「直覺BUG」問題。詳細參考上面。
六、查看集羣效果