SpringCloud 组件介绍



1. 服务发现与注册组件 Eureka


Eureka 是 Netflix 开发的服务发现框架, SpringCloud 将它集成在自己的子项目 spring-cloud-netflix中,以实现 SpringCloud 中服务发现和注册功能。Eureka 包含两个组件:Eureka Server 和 Eureka  Client。


互动: Netflix 是什么?


Netflix 在 SpringCloud 项目中占着重要的作用,Netflix 公司提供了包括 Eureka、Hystrix、Zuul、



Archaius 等在内的很多组件,在微服务架构中至关重要。




举个例子 服务发现与注册



我们相对于消费者,中介公司相对于提供者





Eureka 组件




 Eureka Server

Eureka Server 提供服务注册中心,各个节点启动后,会将自己的 IP 和端口等网络信息注册到 Eureka Server 中,这样 Eureka Server 服务注册表中将会存储所有可用服务节点的信息,在Eureka 的图形化界面可以看到所有注册的节点信息。



Eureka Client



Eureka Client 是一个 java 客户端,在应用启动后Eureka 客户端将会向 Eureka Server 端发送心跳,默认周期是 30s,如果 Eureka Server 在多个心跳周期内没有接收到某个节点的心跳,Eureka Server 将会从服务注册表中把这个服务节点移除 (默认 90 秒)



Eureka Client 分为两个角色,分别是 Application Service 和 Application Client



  • Application Service 是服务提供方,是注册到 Eureka Server 中的服务。
  • Application Client 是服务消费方,通过 Eureka Server 发现其他服务并消费。


SpringCloud 组件 服务发现与注册组件 Eureka_微服务

服务注册与发现


在微服务架构中,服务发现组件是一个非常关键的组件。

SpringCloud 组件 服务发现与注册组件 Eureka_客户端_02

服务提供者、服务消费者、服务发现组件这三者之间的关系大致如下:

(1) 各个微服务在启动时,将自己的网络地址等信息注册到服务发现组件中,服务发现组件会存储这些信息;

(2) 服务消费者可从服务发现组件查询服务提供者的网络地址,并使用该地址调用服务提供者的接口;

(3) 各个微服务与服务发现组件使用一定机制(例如心跳)通信。服务发现组件如长时间无法与某微服务实例通信,就会注销该实例;

(4) 微服务网络地址发生变更(例如实例增减或者IP端口发生变化等)时,会重新注册到服务发现组件。使用这种方式,服务消费者就无需人工修改提供者的网络地址了。

Eureka 架构原理


SpringCloud 组件 服务发现与注册组件 Eureka_微服务_03

  • Register(服务注册)∶当 Eureka 客户端向 Eureka Server 注册时,会把自己的 IP、端口、运行状况等信息注册给 Eureka Server。"
  • Renew(服务续约∶ Eureka 客户端会每隔 30s 发送一次心跳来续约,通过续约来告诉Eureka Server 自己正常,没有出现问题。正常情况下,如果 Eureka Server 在 90 秒没有收到 Eureka 客户的续约,它会将实例从其注册表中删除。
  • Cancel(服务下线)∶Eureka 客户端在程序关闭时向 Eureka 服务器发送取消请求。 发送请求后,该客户端实例信息将从服务器的实例注册表中删除,防止 consumer 调用到不存在的服务。该下线请求不会自动完成,它需要调用以下内容DiscoveryManager.getInstance).shutdownComponent()
  • GET Register(获取服务注册列表):获取其他服务列表。
  • Replicate(集群中数据同步)∶ eureka 集群中的数据复制与同步。
  • Make Remote Call(远程调用):完成服务的远程调用

Eureak组件核心三大功能


SpringCloud 组件 服务发现与注册组件 Eureka_服务发现_04