1. 程式人生 > 其它 >04-服務註冊Eureka高階

04-服務註冊Eureka高階

目錄 1、Eureka Server 高可用叢集 1.1、搭建 Eureka Server高可用叢集 1.2、服務註冊到Eureka Server叢集 2、Eureka中的常見問題 2.1、服務註冊慢 2.2、服務節點剔除問題 2.3、監控頁面顯示ip   1、Eureka Server 高可用叢集 在上一個章節,實現了單節點的Eureka Server的服務註冊與服務發現功能。Eureka Client會定時連線Eureka Server,獲取登錄檔中的資訊並快取到本地。微服務在消費遠端API時總是使用本地快取中的資料。因此一般來說,即使Eureka Server發生宕機,也不會影響到服務之間的呼叫。但如果Eureka Server宕機時,某些微服務也出現了不可用的情況,Eureka Server中的快取若不被重新整理,就可能會影響到微服務的呼叫,甚至影響到整個應用系統的高可用。因此,在生成環境中,通常會部署一個高可用的Eureka Server叢集。   Eureka Server可以通過執行多個例項並相互註冊的方式實現高可用部署,Eureka Server例項會彼此增量地同步資訊,從而確保所有節點資料一致。事實上,節點之間相互註冊是Eureka Server的預設行為。

 

 

  1.1、搭建 Eureka Server高可用叢集 (1)修改本機host屬性 由於是在個人計算機中進行測試很難模擬多主機的情況,Eureka配置server叢集時需要執行host地址。所以需要修改個人電腦中host地址 127.0.0.1 eureka1 127.0.0.1 eureka2 (2)修改 shop_eureka_server 工程中的yml配置檔案,新增如下配置屬性 #指定應用名稱 spring: application:  name: shop-eureka-server --- #執行peer1的配置資訊 spring: profiles: eureka1 server: port: 8761 eureka: instance:  hostname: eureka1 client:  service-url:   defaultZone: http://eureka2:8762/eureka --- #執行peer2的配置資訊 spring: profiles: eureka2 server: port: 8762 eureka: instance:  hostname: eureka2 client:  service-url:   defaultZone:
http://eureka1:8761/eureka

 

 

  在配置檔案中通過連字元(---)將檔案分為三個部分,第一部分為應用名稱,第二部分和第三部 分是根據不同的profiles選項動態新增,可以在IDEA啟動時進行啟用配置 使用IDEA啟動歷次EurekaServerApplicaion分別啟用eureka1和eureka2配置。訪問http://eureka1:8761和http://eureka1:8762/。會發現註冊中心 SHOP-EUREKA-SERVER 已經有兩個節點,並且registered-replicas (相鄰叢集複製節點)中已經包含對方。   1.2、服務註冊到Eureka Server叢集
如果需要將微服務註冊到Eureka Server叢集只需要修改yml配置檔案即可 eureka: client:  serviceUrl:   defaultZone: http://eureka1:8761/eureka/,http://eureka1:8761/eureka/

 

 

以商品微服務為例,修改defaultZone配置新增多個Eureka Server的地址   2、Eureka中的常見問題 2.1、服務註冊慢 預設情況下,服務註冊到Eureka Server的過程較慢。SpringCloud官方文件中給出了詳細的原因

 

 

大致含義:服務的註冊涉及到心跳,預設心跳間隔為30s。在例項、伺服器、客戶端都在本地快取中具有相同的元資料之前,服務不可用於客戶端發現(所以可能需要3次心跳)。可以通過配置 eureka.instance.leaseRenewalIntervalInSeconds (心跳頻率)加快客戶端連線到其他服務的過 程。在生產中,最好堅持使用預設值,因為在伺服器內部有一些計算,他們對續約做出假設   2.2、服務節點剔除問題 預設情況下,由於Eureka Server剔除失效服務間隔時間為90s且存在自我保護的機制。所以不能有效而迅速的剔除失效節點,這對開發或測試會造成困擾。解決方案如下: Eureka Server: 配置關閉自我保護,設定剔除無效節點的時間間隔 eureka: instance:  hostname: eureka1 client:  service-url:   defaultZone: http://eureka2:8762/eureka server:  enable-self-preservation: false  #關閉自我保護  eviction-interval-timer-in-ms: 4000 #剔除時間間隔,單位:毫秒 Eureka Client: 配置開啟健康檢查,並設定續約時間 eureka: client:  healthcheck: true #開啟健康檢查(依賴spring-boot-actuator)  serviceUrl:   defaultZone: http://eureka1:8761/eureka/,http://eureka1:8761/eureka/ instance:  preferIpAddress: true  lease-expiration-duration-in-seconds: 10 #eureka client傳送心跳給server端後,續 約到期時間(預設90秒)  lease-renewal-interval-in-seconds: 5 #傳送心跳續約間隔

 

 

2.3、監控頁面顯示ip 在Eureka Server的管控臺中,顯示的服務例項名稱預設情況下是微服務定義的名稱和埠。為了更好 的對所有服務進行定位,微服務註冊到Eureka Server的時候可以手動配置示例ID。配置方式如下  

 

 

搜尋

複製