spring cloud netflix (04)服務註冊與發現 eureka總結

前言

在分佈式架構系統中,服務的註冊與發現是需要解決的問題之一,

其實在服務的註冊與發現是兩個過程,eureka客戶端註冊到eureka服務端,eureka服務端能夠發現新增的或是發生故障的eureka客戶端。

實現這種過程採用的是一種心跳機制。

而在spring cloud netflix系列技術棧中我們通過eureka來解決服務註冊與發現的問題。

使用eureka時,我們會接觸到eureka服務端(eureka註冊中心)eureka客戶端這樣的名詞。

我們通過下面eureka服務端和eureka客戶端的創建過程來體會一下它們之間的不同

創建eureka服務端(eureka註冊中心)

  • pom
 <dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
  • Application啓動類
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaClientApplication.class,args);
    }
}
  • application.yml
# 配置應用程序的名稱,讓被人發現(eureka是通過服務名稱來完成服務的註冊與發現的)
spring:
  application:
    name: spring-cloud-netflix-eureka

server:
  port: 8761

eureka:
  instance:
    # eureka服務端服務器地址(IP)
    hostname: localhost
  client:
    # registerWithEureka,fetchRegistry的值爲false表明這是eureka服務端,而非eureka客戶端
    registerWithEureka: false
    fetchRegistry: false
    serviceUrl:
      # 設置eureka服務端的地址(IP:PORT)
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

創建eureka客戶端

  • pom
 <dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
  • Application啓動類
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@SpringBootApplication
@EnableEurekaServer
public class EurekaClientApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaClientApplication.class,args);
    }
}
  • application.yml
spring:
  application:
    # 服務名稱,eureka通過服務名稱完成服務的註冊與發現
    name: spring-cloud-netflix-eureka-client

server:
  port: 8762

eureka:
  client:
    serviceUrl:
      # 指向Eureka服務端的地址
      defaultZone: http://localhost:8761/eureka/

總結

我們通過比較eureka服務端與eureka客戶端的創建過程,會發現它們使用相同的依賴,在application啓動類中使用相同的註解@EnableEurekaServer來開啓服務,只是在application.yml中通過 registerWithEureka: false
fetchRegistry: false
這兩個屬性來區分誰是服務端,誰是客戶端。

eureka是通過心跳機制來維持服務的註冊與發現的。

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