简介:
Eureka属于spring-cloud-netflix包,除此之外其中还包括断路器(Hystrix)、智能路由(Zuul),客户端负载平衡(Ribbon)
Eureka 是一种基于 REST(表现层状态转换) 的服务,实现中间层服务器的负载平衡和故障转移
一、引入pom依赖
<!-- spring cloud Eureka Server 启动器 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.5</version>
</dependency>
二、启动类添加@EnableEurekaServer注解
三、application.properties配置文件添加
#服务名
spring.application.name=eureka
server.port=8761
eureka.instance.hostname=localhost
#是否向服务注册中心注册自己,默认为true
eureka.client.register-with-eureka=false
#是否检索服务
eureka.client.fetch-registry=true
eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/
# 关闭自我保护:true为开启自我保护,false为关闭自我保护(一般关闭)
eureka.server.enableSelfPreservation=false
# 清理间隔(单位:毫秒,默认是60*1000),当服务心跳失效后多久,删除服务。
eureka.server.eviction.interval-timer-in-ms=60000
四、查看结果
说明:
1、注册与发现:Eureka Server提供服务注册服务,各个节点启动后,会到Eureka Server中进行注册。各服务的节点信息就可以在页面中看到。
2、心跳检测:Eureka Client会向Eureka Server发送心跳(默认周期30秒),如果Eureka Server在多个心跳周期内(默认90秒)没收到,就会把Eureka Client节点移除。(保护机制:如果心跳失败的比例在15分钟内统计低于85%,Eureka Server则任务是网络故障,会将这些实例保护起,让这些实例不会过期)
3、客户端缓存:即使Eureka Server都挂掉,客户端还可以利用缓存中的信息消费其他服务的api。
4、Eureka通过心跳检测、健康检查、客户端缓存等机制,保障系统的高可用性、灵活性和可伸缩性。
增强:
1、可以使用spring-boot-starter-security组件来为Eureka Server增加安全认证,配置如下:
# 使用http basic安全认证语法,在集群通信中增加认证信息。 http://用户名:密码@地址:端口/eureka/
eureka.client.serviceUrl.defaultZone=http://test:123456@eurekaserver2:8761/eureka/
# 开启基于http basic的安全认证
security.basic.enabled=true
# 设置安全认证用户名
security.user.name=test
# 设置安全认证密码
security.user.password=123456
2、建议优雅停服
引入pom
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-actuator</artifactId>
</dependency>
配置文件添加内容:
# 启用shutdown,优雅停服功能
endpoints.shutdown.enabled=true
# 禁用密码验证
endpoints.shutdown.sensitive=false
必须通过POST发起一个shutdown请求。请求路径为:http://ip:port/shutdown。