Eureka简介以及工作原来

1.Eureka简介

Eureka 是 Netflix 出品的用于实现服务注册和发现的工具。 Spring Cloud 集成了 Eureka,并提供了开箱即用的支持。其中, Eureka 又可细分为 Eureka Server 和 Eureka Client。
复制代码

2. Eureka基本原来

上图是来自官网的架构图,是基于集群配置的Eureka:
复制代码
  • 处于不同的Eureka Server节点是通过Replicate完成数据同步的

  • Application Service为服务提供者

  • Application Client为服务消费者

  • Make Remote Call为完成一次服务调用过程

    当服务启动时想Eureka注册,Eureka Service会将注册的服务信息同步到其他的Eureka Service。当服务消费者调用服务时,会向Eureka Service获取服务提供者的地址,并缓存到本地,下次调用时直接从本地获取服务提供者的地址,并完成一次调用。 当注册中心检查到服务提供者因网络不通,宕机等原因不可用时,注册中心会把该服务标记为down状态,并把改服务不可用状态向服务消费者(订阅者)发送,服务消费者更新本地缓存。 服务提供者启动后,会周期(默认30秒)向Eureka Server发送心跳,以证明服务可用,如果Eureka Server超过一定时间(默认90秒)没有收到心跳消息,则任务服务宕机,注销改服务实例。

3.Eureka的自我保护机制

在默认配置中,Eureka Server在默认90s没有得到客户端的心跳,则注销该实例,但是往往因为微服务跨进程调用,网络通信往往会面临着各种问题,比如微服务状态正常,但是因为网络分区故障时,Eureka Server注销服务实例则会让大部分微服务不可用,这很危险,因为服务明明没有问题。

为了解决这个问题,Eureka 有自我保护机制,通过在Eureka Server配置如下参数,可启动保护机制:
eureka.server.enable-self-preservation=true

它的原理是,当Eureka Server节点在短时间内丢失过多的客户端时(可能发送了网络故障),那么这个节点将进入自我保护模式,不再注销任何微服务,当网络故障回复后,该节点会自动退出自我保护模式。
自我保护模式的架构哲学是宁可放过一个,决不可错杀一千
复制代码

转载:www.cnblogs.com/snowjeblog/…

你可能感兴趣的:(java)