springcloud之服務註冊中心eureka

這篇我們瞭解下服務註冊中心Eureka,類似框架還有Zookeeper、Nacos,各有各的特點,在springcloud中推薦使用eureka,整合起來也是非常簡單。

我們看看eureka的一般組成
服務端:服務註冊中心,也就是總平臺,提供服務的註冊和發現
客戶端:具體的子模塊,既可以是消費者,也可以是提供者

我們看看大致流程:首先必須有一個服務端,各子模塊在啓動後都要向服務端平臺註冊自己,也就是告訴服務註冊中心我來了,我家在xxx,提供xxx服務,同時會找服務註冊中心要一份服務列表。這個時候服務註冊中心就會把此條註冊信息記錄起來,同時告訴子模塊你必須定期向我報告家裏是否有人(心跳檢測),如果我沒收到報告,我就把你的註冊信息剔除。

這裏要注意,eureka服務端自身也可以當做服務提供者註冊在列表中,這個可用做服務註冊中心的高可用

下面我們按照步驟部署一個服務端(Eureka Server)

  <!--增加eureka-server的依賴 -->
     <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-eureka-server -->
     <dependency>
         <groupId>org.springframework.cloud</groupId>
         <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
     </dependency>

然後我們增加一個yml配置

server:
  port: 8762
spring:
  application:
    name: springcloud-eureka
eureka:
  client:
    fetch-registry: false 			 #否獲取eureka服務器註冊表上的註冊信息,默認爲true
    register-with-eureka: false		#是否將自己作爲服務註冊,默認爲true
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/		#和服務註冊中心的連接地址,不用奇怪本身是服務端爲什麼還要配置這個地址,做高可用的時候就發揮作用了,可以以逗號分隔填上其它服務中心地址。
  server:
    enable-self-preservation: false		#服務端是否開啓自我保護模式。這個自我保護模式可以細瞭解一下
    eviction-interval-timer-in-ms: 30000 #清理無效節點的時間間隔,這裏爲3s,這裏是個定時器,也就是定時檢測服務狀態
    response-cache-update-interval-ms: 3000 #eureka server刷新readCacheMap的時間,eureka中兩個緩存隊列中的一個
    responseCacheAutoExpirationInSeconds: 180	#緩存過期時間
    peer-eureka-nodes-update-interval-ms: 30	#eureka節點間間隔多長時間更新一次數據。默認10分鐘。

注意下我們在啓動類中加上 @EnableEurekaServer註解,聲明這個是eureka的服務端

啓動後我們訪問 http://localhost:8761/ 可以看到後臺效果,當前是沒有可用服務。
在這裏插入圖片描述

一個簡單的eureka服務端已經跑起來的,接下來我們繼續部署一個客戶端(Eureka Client

添加客戶端的依賴

      <!-- 配置中心-客戶端 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-client</artifactId>
        </dependency>

增加配置文件

eureka:
  instance:
    lease-renewal-interval-in-seconds: 5	#該實例給服務中心發送心跳的間隔時間
    prefer-ip-address: true		#是否優先使用IP註冊,也就是服務註冊中心顯示的是主機名還是ip
  client:
    serviceUrl:
      defaultZone: http://localhost:8762/eureka/	#服務註冊中心連接地址
      registry-fetch-interval-seconds: 5		#從註冊中心獲取註冊信息列表的時間間隔(s),默認爲30

依然是在啓動類中加上 @EnableEurekaClient註解,聲明這個是eureka的客戶端

我們可以看到在註冊成功後
服務端日誌

c.n.e.registry.AbstractInstanceRegistry  : Registered instance SPRINGCLOUD-EUREKA-CLIENT/DESKTOP-D1E31L8:springcloud-eureka-client:8762 with status UP (replication=false)

客戶端日誌

com.netflix.discovery.DiscoveryClient - DiscoveryClient_SPRINGCLOUD-EUREKA-CLIENT/DESKTOP-D1E31L8:springcloud-eureka-client:8762 - registration status: 204

204也就是說服務註冊完成

我們看看服務註冊中心的後臺效果
在這裏插入圖片描述

已經可以在裏面看到我們的客戶端信息了,大功告成

這是基本的eureka的服務端和客戶端的搭建,更高級的使用,請參考官方文檔。

小貼士

服務啓動後客戶端需要不停的向服務端發送心跳信息,每次發送完都會輸出一條日誌,如下
com.netflix.discovery.shared.resolver.aws.ConfigClusterResolver - Resolving eureka endpoints via configuration
重複輸出是很煩人的,對於判斷服務的狀態我們可以通過服務註冊中心後臺查詢,這裏爲了避免輸出我們可以在配置文件中加上以下配置

客戶端加上

logging:
  level:
    com.netflix.discovery.shared.resolver.aws.ConfigClusterResolver: WARN

服務端加上

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