天天看點

SpringCloud一:注冊服務中心Eureka

作者:王之于水

Eureka是Netflix開源的一個基于REST的服務治理架構,用于實作分布式系統中的服務注冊與發現。它包含了服務注冊中心和服務提供者/消費者兩部分元件,可以實作服務的自動發現和故障轉移。

Eureka主要有以下幾個核心概念:

服務注冊中心:Eureka Server是服務注冊中心,用于管理所有服務的注冊和發現。服務提供者将自己注冊到Eureka Server上,服務消費者從Eureka Server上查詢可用的服務提供者清單。

  1. 服務提供者:服務提供者将自己注冊到Eureka Server上,并定期向Eureka Server發送心跳資訊以表明自己仍然存活。同時,服務提供者會将自己的中繼資料資訊(如服務名稱、服務版本、IP位址、端口等)注冊到Eureka Server上,供服務消費者查詢。
  2. 服務消費者:服務消費者通過Eureka Server查找可用的服務提供者,并向服務提供者發起請求。服務消費者從Eureka Server上擷取服務提供者的中繼資料資訊,然後使用負載均衡算法選擇一個合适的服務提供者進行請求。
  3. 心跳和失效處理:服務提供者向Eureka Server發送心跳資訊以表明自己仍然存活。Eureka Server會定期清理失效的服務執行個體,并通知所有的服務消費者。

Eureka的優點在于其簡單性和易用性,它能夠幫助開發人員快速建構分布式系統,使得服務之間的通信更加高效和可靠。此外,Eureka還具有高可用性和可擴充性的特點,可以通過多個Eureka Server執行個體建構一個高可用的服務注冊中心。

總之,Eureka是一個強大的服務注冊與發現架構,具有簡單易用、高可用性和可擴充性等特點,可以幫助開發人員建構高效、可靠的分布式系統。

以下是搭建Eureka服務示例:

  1. 建立一個Spring Boot項目

首先,我們需要建立一個Spring Boot項目。可以使用Spring Initializr快速建立一個新的Spring Boot項目。在建立項目時,選擇Web和Eureka Discovery作為依賴項。建立項目後,可以在IDE中打開該項目,并開始配置Eureka Server和Eureka Client。

2.配置Eureka Server

在Spring Boot項目中,我們可以通過在配置類上使用@EnableEurekaServer注解來啟用Eureka Server功能。在該注解所在的類中,我們需要添加以下配置:

@Configuration
@EnableEurekaServer
public class EurekaServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class, args);
    }
}           

3.在application.properties或application.yml檔案中添加以下配置:

server.port=8761
eureka.instance.hostname=localhost
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false           

在上面的配置中,我們指定Eureka Server的端口号為8761,并設定eureka.client.register-with-eureka和eureka.client.fetch-registry為false,表示不需要向其他Eureka Server注冊和擷取服務執行個體資訊。

4.配置Eureka Client

在需要注冊到Eureka Server上的服務中,我們可以通過在配置類上使用@EnableDiscoveryClient注解來啟用Eureka Client功能。在該注解所在的類中,我們需要添加以下配置:

@SpringBootApplication
@EnableDiscoveryClient
public class Service1Application {
    public static void main(String[] args) {
        SpringApplication.run(Service1Application.class, args);
    }
}           

5.在application.properties或application.yml檔案中添加以下配置:

spring.application.name=service1
server.port=8081
eureka.client.service-url.defaultZone=http://localhost:8761/eureka/
           

在上面的配置中,我們指定服務的名稱為service1,端口号為8081,并設定eureka.client.service-url.defaultZone為Eureka Server的位址。

6.運作應用程式

啟動Eureka Server應用程式後,我們可以在浏覽器中通路 Server的狀态。在Eureka Server的管理界面中,我們可以看到目前注冊到Eureka Server上的服務執行個體資訊。

啟動Eureka Client應用程式後,我們可以在Eureka Server的管理界面中看到服務執行個體的資訊。同時,我們也可以通過通路

至此,我們已經完成了Eureka的搭建和配置。使用Eureka可以幫助我們更友善地管理和調用服務執行個體,提高分布式系統的可靠性和可擴充性。