作用:
发现服务,心跳检测,如果有服务挂了另一台提供
也可以使用其他比如zookepper作为注册中心
zk在多于一半服务挂掉时会停止提供服务,而 Eureka可以很好的应对因网络故障导致部分节点失去联系的情况,而不会像zookeeper那样使整个注册服务瘫痪(只要有一台在就可以提供服务)。
@EnableEurekaServer 注解表示作为注册中心服务端
@EnableEurekaClient 注解表示作为客户端
配置:
#注册中心地址
eureka.client.service-url.defaultZone=http://localhost:7001/eureka
# 是否需要将自己注册到注册中心
eureka.client.register-with-eureka=true
# 是否需要搜索服务信息
eureka.client.fetch-registry=true
自我保护机制
Eureka Server 在运行期间会去统计心跳失败比例在 15 分钟之内是否低于 85%,如果低于 85%,Eureka Server 会将这些实例保护起来
当控制台出现这段字就代表进入了自我保护,不会删除已经失去链接的服务
自我保护机制的存在主要有两点:
1.提高可用性,而zookeer对失去心跳半数就不可用了
2.可能因为网络原因与某个服务心跳检测不到,这时候把这个服务干掉可能有其他服务正在调用他
例如,两个客户端实例 C1 和 C2 的连通性是良好的,但是由于网络故障,C2 未能及时向 Eureka 发送心跳续约,这时候 Eureka 不能简单的将 C2 从注册表中剔除。因为如果剔除了,C1 就无法从 Eureka 服务器中获取 C2 注册的服务,但是这时候 C2 服务是可用的。
可以关闭 eureka.server.enable-self-preservation=false
集群搭建
eureka: instance: hostname: eureka7003.com #eureka服务端的名称 client: register-with-eureka: false #不在注册中心注册自己 fetch-registry: false #表示自己就是注册中心,不需要检索服务,只需要维护服务实例 service-url: defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/
服务端配置把自己注册到别的服务端,比如有123, 1的配置文件是注册到23
客户端连接时写多个地址