Spring Cloud 套餐——服務發現組件 Eureka

服務注冊中心 Eureka

Eureka 分為 Eureka Server 和 Eureka Client。主要用于 Spring Cloud 的服務注冊與服務發現。
代碼:https://github.com/coding-farmer-ming/learning-spring-cloud-sample

Eureka Server 的使用

1、添加依賴

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <aftifactId>spring-cloud-starter-eureka-server</aftifactId>
</denpendency>

2、配置 application.yml

server:
  port: 8761
eureka:
  client:
    register-with-eureka: false
    fetch-registry: false
    service-url:
      default-zone: http://localhost:8761/eureka
  • eureka.client.register-with-eureka:表示是否將自身注冊到 Eureka Server,默認為 true
  • eureka.client.fetch-registry:表示是否從 Eureka Server 獲取注冊信息,默認為 true,一般單點的 Eureka Server 會將其配置為 false,集群的 Eureka Server 需要同步其他 Eureka Server 的注冊信息,一般選擇配置為 true 或者默認值
  • eureka.client.service-url.default-zone:設置與 Eureka Server 交互的地址,查詢與注冊服務都依賴與此地址,多個地址可以用 , 分割
    3、啟動類
@SpringBootApplication
@EnableEurekaServer
public class EurekaApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaApplication.class, args);
    }
}
  • @EnableEurekaServer 聲明這是一個 Eureka Server

Eureka Client 的使用

1、添加依賴

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <aftifactId>spring-cloud-starter-eureka-server</aftifactId>
</denpendency>

2、配置 application.yml

spring:
  application:
    name: microservice-name
eureka:
  client:
    service-url:
      default-zone: http://localhost:8761/eureka
  instance:
    prefer-ip-address: true
  • spring.application.name:指定注冊到 Eureka Server 的服務名稱
  • eureka.instance-prefer-ip-address:true 表示將服務的 ip 注冊到 Eureka Server,false 則表示將服務所在操作系統的 hostname 注冊到 Eureka Server
    3、啟動類
@SpringBootApplication
@EnableDiscoveryClient
public class ProvuderUserApplication {
    public static void main(String[] args) {
        SpringApplication.run(ProvuderUserApplication.class, args);
    }
}
  • @EnableDiscoveryClient 也可替換為 @EnableEurekaClient,區別就是,后者主要為 Eureka 提供了支持,而前者是一個通用注解,在支持 Eureka 的同時,還支持 Consul 和 ZooKeeper 等服務發現組件,如果項目中使用 Eureka 作為服務發現組件,則二者無區別

高可用 Eureka Server

1、高可用 Eureka Server 的依賴與啟動類與單點 Eureka Server 是完全相同的
2、在高可用 Eureka Server 的 application.yml 配置中,需要開啟相互注冊以及相互同步彼此的服務注冊信息

為了方便,可以在 host 中配置 127.0.0.1 eureka1 eureka2

spring:
  application:
    name: microservice-eureka
---
spring:
  profiles: eureka1
server:
  port: 8761
eureka:
  instance:
    hostname: eureka1
  client:
    service-url:
      default-zone: http://eureka2:8762/eureka/
---
spring:
  profiles: eureka2
server:
  port: 8762
eureka:
  instance:
    hostname: eureka2
  client:
    service-url:
      default-zone: http://eureka1:8761/eureka/

3、將應用注冊到 Eureka Server 集群

spring:
  application:
    name: microservice-name
eureka:
  client:
    service-url:
      default-zone: http://eureka1:8761/eureka,http://eureka2:8762/eureka
  instance:
    prefer-ip-address: true
  • 多個 Eureka Server 需要使用 , 分割
  • 可以將服務只注冊到其中一個 Eureka Server,而 Eureka Server 會彼此同步其他的服務注冊信息

帶有用戶認證的 Eureka Server

1、在添加 Eureka 自身依賴后,還需要添加 Eureka Server 認證的依賴

<dependency>
    <groupId>org.springframework.boot</groupId>
    <aftifactId>spring-boot-starter-security</aftifactId>
</denpendency>

2、在配置中,需要添加相關的用戶名與密碼配置

security:
  basic:
    enabled: true
  user:
    name: user
    password: password123
  • security.basic.enable:為 true 則表示開啟基于 HTTP Basic 的認證
  • user.name、user.password:表示用戶名與密碼
    3、需要注冊至 Eureka Server 的服務,需要修改自身的 application.yml 來配置登錄的用戶名與密碼
eureka:
  client:
    service-url:
      defaultZone: http://username:password@EUREKA_HOST:EUREKA_PORT/eureka/
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容