Eureka [juˈriːkə]

1 注册中心概述

假如我们的服务提供者user-service部署了多个实例,如下图
image.png

试想

  1. order-service在发起远程调用的时候,该如何得知user-service实例的ip地址和端口
  2. 有多个user-service实例地址,order-service调用时该如何选择
  3. order-service如何得知某个user-service实例是否依然健康,是不是已经宕机

上述问题都需要利用SpringCloud中的注册中心来解决

2 Eureka的结构和作用

  • Eureka流程图

Eureka是最广为人知的注册中心,其结构如下
image.png
一个微服务,既可以是服务提供者,又可以是服务消费者,因此eureka将服务注册、服务发现等功能统一封装到了eureka-client端

使用了Eureka后就可以回答之前的问题

  1. order-service如何得知user-service实例地址

获取地址信息的流程如下

  1. user-service服务实例启动后,将自己的信息注册到eureka-server,该过程为服务注册
  2. eureka-server保存服务名称到服务实例地址的映射关系,一个服务名称对应一个服务实例地址列表
  3. order-service根据服务名称,拉取服务实例地址列表,该过程叫服务发现或服务拉取
    1. order-service如何从多个user-service实例中选择具体的实例
  • order-service从实例列表中利用负载均衡算法选中一个实例地址
    1. order-service如何得知某个user-service实例是否依然健康,是不是已经宕机
  • user-service会每隔一段时间(默认30秒)向eureka-server发起请求,报告自己状态,称为心跳
  • 当超过一定时间没有发送心跳时,eureka-server会认为微服务实例故障,将该实例从服务列表中剔除
  • order-service拉取服务时,就能将故障实例排除了

Demo

cloud_demo