SpringCloud服务注册与发现组件-Eureka
参考:https://windmt.com/2018/04/15/spring-cloud-2-eureka/
一、SpringCloud开启Eurake-Server
1、添加依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
2、启动类
- 启动类添加@EnableEurekaServer 设置当前服务为Eureka服务器端
3、applicantion.xml添加配置
- register-with-eureka 是否注册作为客户端,服务端设置为false不用注册自己
- fetch-registry 是否获取注册信息,服务端已经有注册信息,故不用多余获取
server:
port: 8080
spring:
application:
name: eureka-server
eureka:
instance:
hostname: peer1
client:
register-with-eureka: false
fetch-registry: false
service-url:
defaultZone: http://${
eureka.instance.hostname}:${
server.port}/eureka/
5、搭建多服务集群
在已有的Eureka-server基础上新建一个Eureka-server-peer1,Eureka-server-peer2
5.1、例如修改配置如下
注意,需要改服务名称,修改端口号,修改defaultZone配置其他的Eureka服务即可
server:
port: 8001
spring:
profiles: server1
application:
name: eureka-ha
eureka:
instance:
hostname: server1
client:
serviceUrl:
defaultZone: http://server2:8002/eureka/
---
server:
port: 8002
spring:
profiles: server2
application:
name: eureka-ha
eureka:
instance:
hostname: server2
client:
serviceUrl:
defaultZone: http://server1:8001/eureka/
5.2 启动
java -jar ./eurekaCenter-0.0.1-SNAPSHOT.jar --spring.profiles.active=server1
java -jar ./eurekaCenter-0.0.1-SNAPSHOT.jar --spring.profiles.active=server2
二、Eureka客户端模块
创建两个模块,eureka-provider和eureka-comsumer模块
1、添加依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
2、配置文件
- eureka.client.service-url.defaultZone 指定Eureka服务端地址
(1)、服务生产端配置
server:
port: 8081
spring:
application:
name: eureka-producer
# Eureka配置
eureka:
client:
service-url:
defaultZone: http://localhost:7000/eureka/
(2)、服务消费端配置
server:
port: 9000
spring:
application:
name: eureka-consumer
# Eureka配置
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:8080/eureka/
3、启动类
- 添加@EnableDiscoveryClient 表名当前项目是客户端
三、验证
1、启动Eureka-server后,访问http://127.0.0.1:8080 可以进入到Eureka-server管理页面
2、启动Eureka-provider端,看看Eureka-server管理页面中是否有eureka-provider服务,如果有表示成功
3、启动Eureka-comsumer端,看看Eureka-server管理页面中是否有eureka-comsumer服务,如果有表示成功
4、为了服务端安全性,建议假如springSecurity组件,保证安全性
四、附录,Eureka的配置详解
注意Eureka的主要知识点在配置上
eureka:
instance:
hostname: T231
# 使用IP注册,Spring就会自动为我们获取第一个非回环IP地址
prefer-ip-address: true
# 心跳间隔
lease-renewal-interval-in-seconds: 3
# 服务失效时间: 如果多久没有收到请求,则可以删除服务,默认是30s
lease-expiration-duration-in-seconds: 7
client: # Eureka客户端配置,放在Eureka服务端
# 关闭eureka client
enabled: false
# 注册自身到eureka服务器,默认是true
register-with-eureka: true
# 表示是否从eureka服务器获取注册信息,默认是false
fetch-registry: false
# 客户端从Eureka Server集群里更新Eureka Server信息的频率
eureka-service-url-poll-interval-seconds: 60
# 定义从注册中心获取注册服务的信息
registry-fetch-interval-seconds: 5
# 设置eureka服务器所在的地址,查询服务和注册服务都需要依赖这个地址
serviceUrl:
# 设置eureka服务器所在的地址,可以同时向多个服务注册服务
defaultZone: http://127.0.0.1:8000/eureka/
server: #Eureka服务端配置,放在Eureka客户端
# renewal-percent-threshold: 0.1
# 关闭自我保护模式
enable-self-preservation: false
# Eureka Server 自我保护系数,当enable-self-preservation=true时,启作用
# renewal-percent-threshold:
# 设置清理间隔,单位为毫秒,默认为0
eviction-interval-timer-in-ms: 3000
# 设置如果Eureka Server启动时无法从临近Eureka Server节点获取注册信息,它多久不对外提供注册服务
wait-time-in-ms-when-sync-empty: 6000000
# 集群之间相互更新节点信息的时间频率
peer-eureka-nodes-update-interval-ms: 60000
Eureka默认配置源码
- client.refresh.interval=30s
- appinfo.replicate.interval=30s
- appinfo.initial.replicate.time=40s
- serviceUrlPollIntervalMs=30s
- eurekaServer.readTimeout=8s
- eurekaServer.connectTimeout=5s
- eurekaServer.maxTotalConnections=200s
- eurekaServer.maxConnectionsPerHost=50
- eurekaserver.connectionIdleTimeoutInSeconds=30s
- client.heartbeat.threadPoolSize=5
- client.heartbeat.exponentialBackOffBound=10
- client.cacheRefresh.threadPoolSize=5
- client.cacheRefresh.exponentialBackOffBound=10
@Singleton