本系列代码地址:https://github.com/HashZhang/...

Eureka 目前 1.x 版本还在更新,然而应该不会更新新的性能了,只是对现有性能进行保护,降级并兼容所需的依赖。 Eureka 2.x 曾经胎死腹中了。然而,这也不代表 Eureka 就是不能用了。如果你须要一个简便易于部署的注册核心,Eureka 还是一个很好的抉择。云服务环境中,基本上所有实例地址和微服务名称都在一直变动,也并不太须要 Eureka 所短少的长久化个性。当你的集群属于中小规模的时候(节点小于 1000 个), Eureka 仍然是一个不错的抉择。当你的集群很大的时候,Eureka 的同步机制可能就限度了他的体现。

Eureka 的设计比拟玲珑,没有简单的同步机制(例如 Nacos 基于 Raft,Zookeeper 基于 Zab),也没有简单的长久化机制,集群关系只是简略的将收到的客户端申请转发到集群内的其余 Eureka 实例。Eureka 自身也只有注册核心的性能,不像其余品种的注册核心那样,将注册核心和配置核心合在一起,例如 Consul 和 nacos。

这里咱们疏忽所有的 AWS 相干的术语以及配置还有相干逻辑解决。

Eureka 中的术语:

  1. Eureka 实例:每个注册到 Eureka 下面的实例就是 Eureka 实例
  2. Eureka 实例状态:包含 UP(能够解决申请),DOWN(健康检查失败,不能失常解决申请),STARTING(启动中,不能解决申请),OUT_OF_SERVICE(人为下线,临时不解决申请),UNKNOWN(未知状态)。
  3. Eureka 服务器:作为注册核心运行,次要提供实例治理性能(解决实例注册(register)申请、解决实例登记(cancel)申请、解决实例心跳(renew)申请、外部解决实例过期(evict))、实例查问性能(各种查问实例信息的接口,例如通过 AppName 获取实例列表,通过实例 id 获取实例信息等等)
  4. Eureka 服务器集群:Eureka 服务器的集群,每个 Eureka 服务器都配置了区域以及可用区,Eureka 服务器收到的客户端申请会转发到同一区域内的其余 Eureka 服务器,能够配置优先发到同一可用区的 Eureka 服务器。非同一区域内 Eureka 服务器,通过定时拉取的形式进行同步。
  5. Eureka 客户端:申请 Eureka 服务器的客户端。封装发送实例注册(register)申请、实例登记(cancel)申请和实例心跳(renew)申请。
  6. VIP(或者是 Virtual Hostname): Eureka 中能够通过两种形式获取实例,一个是通过服务名称,另一种是通过 VIP。每个实例都有服务名称,以及 VIP。Eureka 服务器中的索引形式是以服务名称为 key 的索引,咱们也能够通过遍历所有实例信息的形式通过 VIP 字符串匹配获取相干的实例。在 Spring Cloud 体系中,一个实例的 VIP、SVIP(其实就是 Secure VIP,即 https 的地址)以及服务名称都是 spring.application.name 指定的服务名称。

首先,Service A 通过 Eureka Client 发送注册申请(Register)到同一可用区的 Eureka Server 1。之后通过发送心跳申请(Renew)到这个 Eureka Server 1. Eureka Server 1 收到这些申请的时候,会解决这些申请并将这些申请转发到其余的集群内的 Eureka Server 2 和 Eureka Server 3. Eureka Server 2 和 Eureka Server 3 不会再转发收到的 Eureka Server 1 转发过去的申请。而后,Service B 还有 Service C 通过 Eureka 获取到了 Service A 的地位,最初调用了 Service A。

对于本地没有查问到的微服务,Eureka Server 还会从近程 Region 的 Eureka Server 去获取,例如这里对于 Service D,本地没有查到,Eureka Server 会返回近程 Region 的 Service D 的实例。因为本地有 Service A,所以必定不会返回近程 Region 的 Service A 的实例。并且,本地是定时拉取的近程 Region 的 Service 列表,并不是每次查问的时候现查问的。

个别的,微服务之间的相互调用,并不通过 Eureka,也不会波及到 Eureka 客户端了,而是通过负载均衡器调用,这个咱们前面就会提到。

咱们这一节详细分析了 Eureka 的架构,以及其中的外围概念。下一节,咱们将开始介绍咱们微服务的注册核心 Eureka 的实例配置。

微信搜寻“我的编程喵”关注公众号,每日一刷,轻松晋升技术,斩获各种offer