SpringCloud學習筆記(一)--Eureka

一、EUREKA

Eureka是Netflix開發的服務發現框架,本身是一個基於REST的服務,主要用於定位運行在AWS域中的中間層服務,以達到負載均衡和中間層服務故障轉移的目的。SpringCloud將它集成在其子項目spring-cloud-netflix中,以實現SpringCloud的服務發現功能。

Eureka包含兩個組件:Eureka Server和Eureka Client。

Eureka Server提供服務註冊服務,各個節點啓動後,會在Eureka Server中進行註冊,這樣EurekaServer中的服務註冊表中將會存儲所有可用服務節點的信息,服務節點的信息可以在界面中直觀的看到。

Eureka Client是一個java客戶端,用於簡化與Eureka Server的交互,客戶端同時也就是一個內置的、使用輪詢(round-robin)負載算法的負載均衡器。

在應用啓動後,將會向Eureka Server發送心跳,默認週期爲30秒,如果Eureka Server在多個心跳週期內沒有接收到某個節點的心跳,Eureka Server將會從服務註冊表中把這個服務節點移除(默認90秒)。

Eureka Server之間通過複製的方式完成數據的同步,Eureka還提供了客戶端緩存機制,即使所有的Eureka Server都掛掉,客戶端依然可以利用緩存中的信息消費其他服務的API。綜上,Eureka通過心跳檢查、健康檢查 、負載均衡、客戶端緩存等機制,確保了系統的高可用性、靈活性和可伸縮性。

二、實戰

2.1 eureka server

打開idea編輯器->File->NEW->project

next

每個服務的springboot的版本保持一致,這裏使用的是2.2.0

修改配置文件:

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/
    register-with-eureka: false #設爲false,不會註冊自己
  
spring:
  application:
    name: eureka
server:
  port: 8761

在啓動類上添加@EnableEurekaServer註解

 

啓動,界面如下

也可以打成jar包方便每次啓動;

命令:mvn clean package -Dmaven.test.skip=true

再用java -jar eureka-0.0.1-SNAPSHOT.jar 啓動

 

2.2 eureka client

前面步驟用server相同,選擇依賴不同如下:

 

在啓動類中添加註解:

配置文件

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/
#  instance:
#    hostname: clientName 點擊客戶端出來的別名
spring:
  application:
    name: client
server:
  port: 8080

2.3eureka的高可用配置

如上圖:假設起了三臺server ,server與server之間兩兩註冊,客戶端註冊在三臺server上

配置文件如下:假設端口8761、8762、8763

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8762/eureka/,http://localhost:8763/eureka/
    register-with-eureka: false
  server:
    enable-self-preservation: false
spring:
  application:
    name: eureka
server:
  port: 8761
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/,http://localhost:8763/eureka/
    register-with-eureka: false
  server:
    enable-self-preservation: false
spring:
  application:
    name: eureka
server:
  port: 8762
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/,http://localhost:8762/eureka/
    register-with-eureka: false
  server:
    enable-self-preservation: false
spring:
  application:
    name: eureka
server:
  port: 8763

客戶端配置:

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/,http://localhost:8762/eureka/,http://localhost:8763/eureka/
#  instance:
#    hostname: clientName 別名
spring:
  application:
    name: client
server:
  port: 8080

任一serve掛了不影響,其他服務端、客戶端

 

 

問題1:eureka頁面提示

這個是客戶端服務上線率太低導致服務端不知道客戶端到底是上線還是下線,所以默認客戶端還在線,在實際開發中可能影響開發,可以在服務端加配置去除該提示;但僅限於開發環境,生產環境一定要打開這個提示 

server:
    enable-self-preservation:false

問題2:SpringCloud客戶端Client啓動無報錯自動停止

解決方法:
在pom.xml中加入

<dependency>  
   <groupId>org.springframework.boot</groupId>  
   <artifactId>spring-boot-starter-web</artifactId>  
</dependency>  


即可

 

參考文獻:https://baike.baidu.com/item/Eureka/22402835?fr=aladdin

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章