springcloud之eureka初識篇 集群

2021-10-03 11:22:34 字數 3333 閱讀 3345

集群與高可用基本一致,只是將伺服器由2臺,變成了3臺,設定3臺伺服器之間相互依賴,形成乙個閉環。

配置**:

8700向8702註冊、8701向8700註冊、8702向8701註冊,此時3臺服務剛好形成乙個閉環。

#設定乙個註冊服務中心的url,使用者客戶端與服務端的互動

啟動後註冊中心展現效果:

此時我們發現其中有2臺服務的註冊例項只有2個,剩下的一台註冊例項是3個。

按照我們的理解應該步驟如下:

此時8702尚未啟動,8700既無法獲取8702的註冊列表也無法將自身註冊過去。

當前8700服務上沒有任何例項。

獲取8700的註冊列表資訊(無資訊)同時將自己的資訊註冊到8700上。

當前8700存在乙個服務例項(8701),8701上沒有註冊例項。

獲取8701的註冊列表資訊(無資訊)同時將自己的資訊註冊到8701上。

當前8701存在乙個服務例項(8702),8702沒有例項。

***3臺服務成功執行後

8702向8701註冊自身服務時,因為8700是8701的peer,所以8701將自己的註冊資訊同步給8700。

當前8700存在2個服務例項(8701【註冊來的】、8702【由8701同步過來的】)

8702正常啟動後8700註冊成功(8700啟動後向8702進行註冊,註冊失敗後會一直向該位址進行註冊,直至成功)。

此時8702擁有乙個服務例項(8700),同時8702作為8700的peer,8700將註冊到自身的例項同步給8702,此時8702擁有3個例項(8700、8701、8702)

8702

將自身的資訊同步給他的peer:

8701

,8701

將自身的資訊同步給他的peer:

8700

,此時3臺服務都將獲得3份例項。(錯誤的)

qa1:我們上面的截圖可以看到,只有一台服務是3個例項,其他的兩個都是只有2個服務例項這是為什麼呢?

以下涉及到2個知識點:

例:服務a,服務b

a啟動向b進行註冊的時候會拉取一次b當前的註冊列表,之後不會再向b執行拉取操作只會通過同步的方式將自己的資訊推送給b。

例:a註冊到b、b註冊到c、c註冊到a。此時client:h向server:a進行註冊,a會把註冊的資訊同步給他的peer:b,b檢查該資訊,如果是向自己註冊的例項那麼同步給peer:c,如果是a服務同步給自己的那麼該資訊就不在向c進行同步。

qa2:如何解決3臺服務註冊例項不一致的問題?

格式:defaultzone: http://******x,http://******x,http://******x

server:

port: 8702

servlet:

context-path: /eurekaserver3

eureka:

client:

service-url:

#配置多個註冊位址

頁面展示:

SpringCloud之客戶端連線Eureka集群

客戶端分別yml 服務啟動埠號 server port 8002 服務名稱 服務註冊到eureka名稱 spring 服務註冊到eureka位址 eureka client service url defaultzone http localhost 8100 eureka,因為該應用為註冊中心,不...

SpringCloud之Dashboard 流監控

新建springcloud consumer hystrix dashboard模組 新增依賴 org.springframework.cloudgroupid spring cloud starter hystrixartifactid 1.4.6.releaseversion dependenc...

SpringCloud之Hystrix應用實踐

使用springcloud的hystrix功能,有幾種方式 1 單應用監聽,也可以用於測試 引用包 org.springframework.boot spring boot starter actuator org.springframework.cloud spring cloud starter...