Eureka的详细讲解

eureka简介

Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的。SpringCloud将它集成在其子项目spring-cloud-netflix中,以实现SpringCloud的服务发现功能。Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的。SpringCloud将它集成在其子项目spring-cloud-netflix中,以实现SpringCloud的服务发现功能。目前Eureka 1.x已经不在维护,Eureka 2.x闭源。

架构到微服务的转变

单体架构
在这里插入图片描述
集群架构
在这里插入图片描述
垂直架构
在这里插入图片描述
SOA架构
在这里插入图片描述
微服务架构
在这里插入图片描述

几种注册中心比较

几种流行的注册中心比较

单机eureka使用

eureka注册中心注册

1.启动类加注解@EnableEurekaServer

2.属性文件配置
spring.application.name=spring-cloud-eureka
server.port=8761
eureka.client.service-url.defaultZone=http://localhost:8761/eureka/
#fase表示不向注册中心注册自己
eureka.client.register-with-eureka=false
#false表示自己就是注册中心,我的职责就是维护实例,并不需要去检索服务
eureka.client.fetch-registry=false

3.ip:端口号可以直接访问注册中心
在这里插入图片描述

提供者

属性文件配置:
spring.application.name=spring-cloud-product
server.port=8081
eureka.client.service-url.defaultZone=http://localhost:8761/eureka/

消费者

配置类:
@Configuration
public class Config {

@LoadBalanced
@Bean
public RestTemplate restTemplate(){
return new RestTemplate();
}
}

调用
@Autowired
RestTemplate restTemplate;

@GetMapping(“testWay”)
public String testWay(){
return restTemplate.getForObject(“http://spring-cloud-product/way”,String.class);
}

eureka集群使用/高可用

本质就是他们之间互相注册,并做实例同步
配置(第一个eureka)
spring.application.name=spring-cloud-eureka
server.port=8761
eureka.client.service-url.defaultZone=http://localhost:8762/eureka/
#开启自我保护
eureka.server.enable-self-preservation=true

配置(第二个eureka)
spring.application.name=spring-eureka-server-replict
server.port=8762
eureka.client.service-url.defaultZone=http://localhost:8761/eureka/
#开启自我保护
eureka.server.enable-self-preservation=true

配置(微服务实例)
spring.application.name=spring-cloud-product
server.port=8081
eureka.client.service-url.defaultZone=http://localhost:8761/eureka/,http://localhost:8762/eureka/

注册中心
在这里插入图片描述

eureka自我保护机制

默认情况下(没有保护机制),如果Eureka Server在一定时间内(默认90秒)没有接收到某个微服务实例的心跳,Eureka Server将会移除该实例。但是当网络分区故障发生时,微服务与Eureka Server之间无法正常通信,而微服务本身是正常运行的,此时不应该移除这个微服务,所以引入了自我保护机制。

自我保护模式正是一种针对网络异常波动的安全保护措施,使用自我保护模式能使Eureka集群更加的健壮、稳定的运行。

Eureka服务端会检查最近15分钟内所有Eureka 实例正常心跳的占比,如果低于85%就会触发自我保护机制。触发了保护机制,Eureka将暂时把这些失效的服务保护起来,不让其过期,但这些服务也并不是永远不会过期。Eureka在启动完成后,每隔60秒会检查一次服务健康状态,如果这些被保护起来失效的服务过一段时间后(默认90秒)还是没有恢复,就会把这些服务剔除。如果在此期间服务恢复了并且实例心跳占比高于85%时,就会自动关闭自我保护机制。

自我保护机制

Eureka Server不再从注册列表中移除因为长时间没收到心跳而应该过期的服务。
Eureka Server仍然能够接受新服务的注册和查询请求,但是不会被同步到其它节点上,保证当前节点依然可用。
当网络稳定时,当前Eureka Server新的注册信息会被同步到其它节点中。

自我保护机制使用推荐

Eureka自我保护机制,通过配置 eureka.server.enable-self-preservation 来true打开/false禁用自我保护机制,默认打开状态,建议生产环境打开此配置。

开发环境配置
开发环境中如果要实现服务失效能自动移除,只需要修改以下配置。
#关闭自我保护
eureka.server.enable-self-preservation=false

建议开发关闭此配置,生产开启此配置

后续不断完善

【微语】20岁偷的懒,需要30岁的日夜弥补。

猜你喜欢

转载自blog.csdn.net/weixin_42371621/article/details/109047033