1.注册
服务提供者启动时,向eureka一次次反复注册,直到注册成功为止
2.拉取注册表
服务发现者每30秒拉取一次注册表(刷新注册表)
3.心跳
服务提供者每30秒发送一次心跳数据
eureka连续3次收不到一个服务的心跳,会删除这个服务
4.自我保护模式
特殊情况
如果由于网络不稳定或中断,15分钟内,85%以上服务器出现心跳异常,就会自动进入保护模式。
在保护模式下,所有服务都不删除。
网络恢复后,可以自动退出保护模式,恢复正常
开发期间很容易达到保护模式的条件,会影响测试,在开发期间可以关闭保护模式
eureka 和 zookeeper 区别:
eureka:
强调AP(可用性)
集群结构:对等结构
zookeeper:
强调CP(一致性)
集群结构:主从结构
搭建eureka服务器
1.新建 springboot 项目
2.添加 eureka server 依赖
3.yml配置
1.主机名
2.禁用保护模式
3.针对单台服务器,配置不向自己注册,也不从自己拉取注册表
4启动类注解 @EnableEurenaServer,通过注解触发自动配置
添加依赖(Edit Starters添加)
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>
spring-cloud-starter-netflix-eureka-client
</artifactId>
</dependency>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Hoxton.SR9</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
单台主机
spring:
application:
name: eureka-server
server:
port: 2001 # 默认8761
eureka:
instance:
hostname: eureka1 # 主机名,集群中区分不同服务器
server:
enable-self-preservation: false # 开发期间禁用保护模式
client:
register-with-eureka: false # 单台服务器不向自己注册
fetch-registry: false # 单台服务器不从自己拉取
构建eureka服务集群
eureka:
instance:
hostname: eureka2 # 主机名,集群中区分不同服务器
client:
register-with-eureka: true
fetch-registry: true
# 2要连接1
service-url:
defaultZone: http://eureka1:2001/eureka
# 获取地址表,要从注册表获取配置中心的地址
eureka:
client:
service-url:
defaultZone: http://eureka1:2001/eureka,http://eureka2:2002/eureka
单台 eureka 服务器启动后报错: Connect to localhost:8761 timed out
这是自动配置的一个默认集群服务器,但是这个默认服务器不存在,所以出错。后面自己搭建了集群服务,默认服务器就不会再自动配置