- 介绍
- 使用
- @EnableEurekaServer
- application.properties
- eureka.client.register-with-eureka=false # 是否注册自己
- eureka.client.fetch-registry=false # 是否拉取eureka
- eureka.client.service-url.defaultZone=http://localhost:7900/eureka/ # 设置注册中心的URL
- eureka.instance.hostname=euk1.com
- spring.application.name=EurekeServer # Eureka集群中各节点要同名
- 行为
- register # 注册
- renew # 通过心跳, 默认30s。三次失败删除实例
- fetch registry # 拉注册的信息
- cancel # 发取消请求,删除实例
- time lag # 同步时间延迟
- communication mechanism # 通讯机制,默认jersey和jackson
- 功能
- 唯一标识 # service id
- 提供RestAPI, 可多终端接入
- 问题
- 一致性问题方案
- Eureka间不同步,client向多个Eureka提交
- Enreka间同步,Eureka强可用性弱一致性
- 原理
- 生产者向Eureka注册, 周期发送心跳(默认30s)
- Eureka服务间同步注册信息
- 消费者请求地址,缓存本地
- Eurake接收生产者心跳超时, 设置为down, 推送状态到消费者
- Eurake短期down过多生产者,进入自我保护不再down
- 组件
- spring-cloud-starter-[netflix-]eureka-server
- application.yml
-
eureka:
instance:
hostname: localhost # 实例主机名
client:
registerWithEureka: false # 当前服务不注册
fetchRegistry: false # 不获取注册信息
serviceUrl: # server地址
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
- bootstrap.yml # 基础配置, 待拉取config
- 注解
- @EnableEurekaServer # 修饰Application类