服務注冊中心 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/