1
Eureka较zookeeper和consul比较,他具备以下特点
1,AP(最终一致性),采用的是HTTP 定时轮训方式。主要是保证高可用。
2,适用规模:2000多个 实例(节点)。
2
Neflix Eureka高可用
客户端高可用
高可用注册中心集群
单机模拟多台Eureka服务器
1,在工程里面添加多份配置文件
application-pro1.properties:
spring.application.name=eureka-server
server.port=9090
##取消服务器自我注册上报的功能
eureka.client.register-with-eureka=false
##不需要检索服务
eureka.client.fetch-register=false
##eureka server 服务的Url 用于客户端注册
eureka.client.serviceUrl.defaultZone=\
http://localhost:$/eureka
application-pro2.properties:
spring.application.name=eureka-server
server.port=9091
##取消服务器自我注册上报的功能
eureka.client.register-with-eureka=false
##不需要检索服务
eureka.client.fetch-register=false
##eureka server 服务的Url 用于客户端注册
eureka.client.serviceUrl.defaultZone=\
http://localhost:$/eureka
2,使用Program arg的方式配置--spring.profiles.active=pro2和--spring.profiles.active=pro1先后激活这两台服务。
3,在浏览器中输入地址http://localhost:9090/,http://localhost:9091/ ,即可访问这两台服务
客户端配置
1,在客户端的配置文件中添加如下配置:
eureka.client.serviceUrl.defaultZone=\
http://localhost:9091/eureka,http://localhost:9090/eureka
2,先后启动我们的服务提供者(多台)和消费者
这里有个小技巧:可以配置服务提供者的随机端口的范围,这样就不需要重复的去修改配置。
即在配置文件中添加server.port=$即可。
3,再次在浏览器中输入地址http://localhost:9090/,http://localhost:9091/ 访问这两台服务。我们可以看到如图所示内容,其中一台服务没有注册任何实例?这是因为:如果 Eureka 客户端应用配置多个 Eureka 注册服务器,那么默认情况只有第一台可用的服务器,存在注册信息。如果 第一台可用的 Eureka 服务器 Down 掉了,那么 Eureka 客户端应用将会选择下一台可用的 Eureka 服务器。
其他的重要配置
获取注册信息时间间隔
Eureka 客户端需要获取 Eureka 服务器注册信息,这个方便服务调用。Eureka 客户端:EurekaClient,关联应用集合:Applications单个应用信息:Application,关联多个应用实例。单个应用实例:InstanceInfo 。当 Eureka 客户端需要调用具体某个服务时,比如消费者调用服务提供者,服务提供者实际对应对象是Application,关联了许多应用实例(InstanceInfo)。见源码:
如果应用服务提供者的应用实例发生变化时,那么服务消费者是需要感知的(拉的模式)。比如:服务提供者机器从10 台降到了5台,那么,作为调用方的服务消费者需要知道这个变化情况。可是这个变化过程,可能存在一定的延迟,可以通过调整注册信息时间间隔来减少错误。具体的配置项如下:
## 调整注册信息的获取周期,默认值:30秒
eureka.client.registryFetchIntervalSeconds = 5
实例信息复制时间间隔
实例Id
实例端点映射
我们在Eureka Server Dashboard 点击跳转默认配置是/info,可以修改配置项如下,调整请求的地址。
## Eureka 客户端应用实例状态 URL
eureka.instance.statusPageUrlPath = /health
可以在EurekaInstanceConfigBean类中找到具体的设计(private String statusPageUrlPath = "/info")
服务端高可用
1,修改上面的注册服务器的配置信息
application-pro1.properties:
spring.application.name=eureka-server
server.port=9090
##取消服务器自我注册上报的功能
eureka.client.register-with-eureka=true
##不需要检索服务
eureka.client.fetch-register=true
##eureka server 服务的Url 用于客户端注册
eureka.client.serviceUrl.defaultZone=\
http://localhost:9091/eureka
application-pro2.properties:
spring.application.name=eureka-server
server.port=9091
##取消服务器自我注册上报的功能
eureka.client.register-with-eureka=true
##不需要检索服务
eureka.client.fetch-register=true
##eureka server 服务的Url 用于客户端注册
eureka.client.serviceUrl.defaultZone=\
http://localhost:9090/eureka
2,按上面的方式启动服务,在浏览器中访问,如图所示,发现注册的服务不再只有一台服务上有信息了,且两台服务互为副本。
领取专属 10元无门槛券
私享最新 技术干货