eureka概述
Eureka 是 Netflix 开发的服务发现框架,本身是一个基于 REST 的服务.
主要用于定位运行在 AWS 域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的。
SpringCloud将它集成在其子项目 spring-cloud-netflix 中,实现 SpringCloud 的服务发现功能。
可以充当服务发现服务器的组件很多,例如 Zookeeper、Consul、Eureka 等。
eureka架构
eureka和zookeeper的对比
eureka是实现了AP原则,而zookeeper是基于Fast Paxos算法的CP原则
创建eureka工程
在IDEA
单个eureka配置application.yml
server:
port: 8000
eureka:
instance:
hostname: localhost # 指定EurekaServer主机名
client:
register-with-eureka: false # 指定是否向Eureka中注册当前主机
fetch-registry: false # 指定是否能够从Eureka中获取注册表
service-url:
defaultZone: http://localhost:8000/eureka # 暴露Eureka服务中心地址
server:
enable-self-preservation: false
在启动类添加@EnableEurekaServer注解
@SpringBootApplication
@EnableEurekaServer // 开启Eureka服务
public class EurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaServerApplication.class, args);
}
}
Eureka 的自我保护机制
自我保护机制
在eureka主页出现了如下的红色字体,代表eureka启动了自我保护机制,进入了自我保护模式。
在短时间内若 EurekaServer 丢失较多微服务(EurekaServer 收到的心跳数量小于阈值
那么其会自动进入自我保护模式:服务列表只可读取、写入,不可执行删除操作。当 EurekaServer 收到的心跳数量恢复到阈
值以上时,其会自动退出 Self Preservation 模式
自我保护默认值修改
自我保护机制的阈值默认是百分之八十五
自我保护机制默认是开启的
eureka:
server:
# 设置自我保护机制的阈值
renewal-percent-threshold: 0.85
#自我保护机制默认是开启的,可以手动关闭
enable-self-preservation: false
自我保护启动阈值
Renews threshold:Server 会统计最近这 15 分钟接收到的总的心跳数(一个瞬时值)
然后再根据阈值因子计算出阈值心跳数,再平均到每分钟。这就是当前的值。
表示当前 时刻应达到的最低心跳数。低于该心跳,则启动自我保护机制。
Renews(last min):当前这一分钟内接收到的心跳数量。一个瞬时值,是当前这一刻向前 推的这一分钟内接收到的心跳数量。
eurekaserver集群
搭建 EurekaServer 集群中包含三个 EurekaServer 节点,其端口号分别为 8000、8100、 8200 与 8300。
复制刚刚建立的 8000,并且重新命名为eurekaserver-8100、eurekaserver-8200 与 eurekaserver-8300。
以8000为例修改pom文件
修改yml文件
server:
port: 8000
spring:
application:
name: eureka8100.com
eureka:
instance:
hostname: eureka8100.com # 指定Eureka主机
prefer-ip-address: true
client:
register-with-eureka: true # 指定当前主机是否需要向注册中心注册(不用,因为当前主机是Server,不是Client)
fetch-registry: false # 指定当前主机是否需要获取注册信息(不用,因为当前主机是Server,不是Client)
service-url: # 暴露服务中心地址
defaultZone:http://localhost:8000/eureka,http://localhost:8100/eureka,http://localhost:8200/eureka,http://localhost:8300/eureka
server:
# 设置自我保护机制的阈值,默认0.85
renewal-percent-threshold: 0.75
# 关闭Eureka的自我保护机制(不建议关闭)
# enable-self-preservation: false
修改 defaultZone为集群地址;和port端口