整体架构图

image.png

Eureka Server:Eureka服务端(注册中心)

AP(自我保护机制,保证可用),Eureka为了保证注册中心的高可用性,舍弃了数据的强一致性,服务节点间的数据可能不一致,,适用于对注册中心服务可用性要求较高的使用场景。

核心功能

  • 服务注册: 服务提供者启动时,会通过Eureka Client向Eureka Server注册信息,Eureka Server会存储该服务的信息,Eureka Server内部使用两层缓存机制来维护整个注册表
  • 提供注册表:服务消费者在调用服务时,如果Eureka Client没有缓存注册表的话,会从Eureka Server获取最新的注册表
  • 同步状态:Eureka Client通过注册、心跳机制和Eureka Server同步当前客户端的状态
  • 自我保护机制:目的:防止误杀服务,Eureka Server在运行期间会去统计心跳失败比例在一定时间之内(默认15分钟)是否低于85%,如果低于则进入自我保护机制,当客户端心跳恢复时,Eureka Server会自动退出保护机制。进入自我保护机制,会出现一下几种情况:

    • Eureka不再从注册表中移除因长时间没有收到心跳而应该过期的服务
    • Eureka仍然能够接受新服务的注册和查询请求,但不会同步到其他节点上(保证当前节点依然可用)
    • 当网络问答式,当前实例新的注册信息会被同步到其他节点中

      Eureka Client:Eureka客户端(服务消费者\服务提供者)

      Eureka Client是一个Java客户端,用于简化于Eureka Server的交互。Eureka Client会拉取、更新和缓存Eureka Server中的信息。因此当所有的Eureka Server阶段都宕掉,服务消费者依然可以使用缓存中的信息找到服务提供者。

      核心功能

  • 服务注册:将自身注册到注册中心

  • 服务续约:Client每隔一定时间(默认30s)发送一次心跳请求进行续约,告知Eureka Server自身的运行情况。如果Eureka Server在一定时间(默认90s)没有收到Client的续约心跳请求,Server端会将实例从注册表中剔除。