天天看點

springcloud之eureka初識篇-高可用

高可用的環境下我們配置兩台eurekaServer。

1、設定maven依賴,請參考上一篇-單例模式

2、設定java啟動類,請參考上一篇-單例模式

3、配置yml檔案

server1

server:
  port: 8700
  servlet:
    context-path: /eurekaServer

spring:
  application:
    name: eurekaServer1

eureka:
  instance:
    hostname: eurekaServer
  client:
    service-url:
    #設定一個注冊服務中心的url,用于服務端之間的互動
      defaultZone: http://eurekaServer2:8701/eurekaServer2/eureka
           

server2

server:
  port: 8701
  servlet:
    context-path: /eurekaServer2

spring:
  application:
    name: eurekaServer2

eureka:
  instance:
    hostname: eurekaServer2
  client:
    service-url:
      defaultZone: http://eurekaServer:8700/eurekaServer/eureka
           

PS:注意兩個server的defaultZone,他們倆互相進行了注冊,作為彼此的用戶端,同時設定了hostname.

hostname 用來定義peer,此時需要在你電腦的hosts檔案中配置對應關系。

springcloud之eureka初識篇-高可用

當eurekaServer進行高可用之後兩台server之間會進行資訊同步,配置defaultZone和peer就是在此時使用的。

如server2同步了server1的資訊,server1就是server2的peer。

運作兩台服務端(第一個服務端啟動時會報錯,這是因為此時服務端在向另一台服務端進行注冊,但是另一個服務端還沒有啟動,第一個服務端無法正常連接配接注冊,是以報錯,等到第二個服務端也啟動成功第一個服務端就不會報錯了)。

服務端一:啟動成功但是報錯

springcloud之eureka初識篇-高可用

啟動第二個服務端

springcloud之eureka初識篇-高可用
springcloud之eureka初識篇-高可用

這是因為兩個服務端分别向對方進行了注冊(server1有server2的資訊,server2有server1的資訊,),互相注冊後又進行了資訊同步,是以就可以在自己的注冊清單中看到自己的資訊了。

此時我們設定兩個用戶端,都向server1進行注冊(用戶端注冊請參考上一章【單例模式】),運作用戶端

server:
  port: 8601
  servlet:
    context-path: /eureka-client

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8700/eurekaServer/eureka/
spring:
  application:
    name: test-demo

--------------------------------------------
server:
 port: 8062
 servlet:
   context-path: /eureka-clinet1

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8700/eurekaServer/eureka
spring:
  application:
    name: test1

           

我們的用戶端都向sever1進行了注冊,此時我們看server2的管理界面

springcloud之eureka初識篇-高可用

雖然兩個服務是向eurekaServer1進行注冊,但是因為eurekaServer之間在高可用模式下進行資料同步是以eurekaServer2上也會有這兩個服務的注冊資訊。

QA:當eurekaServer1程式關閉時,被同步到server2的兩個服務的注冊資訊是否會失效?

大家可以做做試驗思考一下(*^▽^*)