服務(wù)注冊中心 Eureka
Eureka 分為 Eureka Server 和 Eureka Client。主要用于 Spring Cloud 的服務(wù)注冊與服務(wù)發(fā)現(xiàn)。
代碼: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事甜,默認(rèn)為 true
- eureka.client.fetch-registry:表示是否從 Eureka Server 獲取注冊信息,默認(rèn)為 true脖祈,一般單點(diǎn)的 Eureka Server 會將其配置為 false,集群的 Eureka Server 需要同步其他 Eureka Server 的注冊信息刷晋,一般選擇配置為 true 或者默認(rèn)值
- eureka.client.service-url.default-zone:設(shè)置與 Eureka Server 交互的地址盖高,查詢與注冊服務(wù)都依賴與此地址,多個(gè)地址可以用 , 分割
3眼虱、啟動類
@SpringBootApplication
@EnableEurekaServer
public class EurekaApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaApplication.class, args);
}
}
- @EnableEurekaServer 聲明這是一個(gè) 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 的服務(wù)名稱
- eureka.instance-prefer-ip-address:true 表示將服務(wù)的 ip 注冊到 Eureka Server蒙幻,false 則表示將服務(wù)所在操作系統(tǒng)的 hostname 注冊到 Eureka Server
3映凳、啟動類
@SpringBootApplication
@EnableDiscoveryClient
public class ProvuderUserApplication {
public static void main(String[] args) {
SpringApplication.run(ProvuderUserApplication.class, args);
}
}
- @EnableDiscoveryClient 也可替換為 @EnableEurekaClient,區(qū)別就是邮破,后者主要為 Eureka 提供了支持诈豌,而前者是一個(gè)通用注解,在支持 Eureka 的同時(shí)抒和,還支持 Consul 和 ZooKeeper 等服務(wù)發(fā)現(xiàn)組件矫渔,如果項(xiàng)目中使用 Eureka 作為服務(wù)發(fā)現(xiàn)組件,則二者無區(qū)別
高可用 Eureka Server
1摧莽、高可用 Eureka Server 的依賴與啟動類與單點(diǎn) Eureka Server 是完全相同的
2庙洼、在高可用 Eureka Server 的 application.yml 配置中,需要開啟相互注冊以及相互同步彼此的服務(wù)注冊信息
為了方便,可以在 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油够、將應(yīng)用注冊到 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
- 多個(gè) Eureka Server 需要使用 , 分割
- 可以將服務(wù)只注冊到其中一個(gè) Eureka Server蚁袭,而 Eureka Server 會彼此同步其他的服務(wù)注冊信息
帶有用戶認(rèn)證的 Eureka Server
1、在添加 Eureka 自身依賴后石咬,還需要添加 Eureka Server 認(rèn)證的依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<aftifactId>spring-boot-starter-security</aftifactId>
</denpendency>
2揩悄、在配置中,需要添加相關(guān)的用戶名與密碼配置
security:
basic:
enabled: true
user:
name: user
password: password123
- security.basic.enable:為 true 則表示開啟基于 HTTP Basic 的認(rèn)證
- user.name鬼悠、user.password:表示用戶名與密碼
3删性、需要注冊至 Eureka Server 的服務(wù),需要修改自身的 application.yml 來配置登錄的用戶名與密碼
eureka:
client:
service-url:
defaultZone: http://username:password@EUREKA_HOST:EUREKA_PORT/eureka/