Spring Cloud 注册中心 Eureka

Eureka分为 Eureka Server、 Eureka Client。

1.服务提供者作为客户端,在启动时,会将自己的信息(元数据:ip、port、服务名等等)传送给服务端。

服务端会将此信息保存到map中。服务提供者会每隔30s向服务端发送心跳检测,如果90s内服务端没有收到客户端的心跳,就会将该实例剔除。

2.服务消费者会从注册中心拉取对应服务的信息,并存入本地做缓存。如果对应服务的信息发生改变,注册中心会重新通知消费者重新拉取。

3.服务端一般是集群化,来保证高可用。每当服务端收到注册信息后,会在集群和分区内进行数据同步。

在这里插入图片描述

元数据

Eureka的元数据有两种:标准元数据和⾃定义元数据。

  • 标准元数据: 主机名、 IP地址、端⼝号等信息,这些信息都会被发布在服务注册表
    中,⽤于服务之间的调⽤。
  • ⾃定义元数据: 可以使⽤eureka.instance.metadata-map配置,符合KEY/VALUE的
    存储格式。这 些元数据可以在远程客户端中访问。

客户端

服务提供者(也是Eureka客户端)要向EurekaServer注册服务,并完成服务续约等⼯作。

服务注册

1)当我们导⼊了eureka-client依赖坐标,配置Eureka服务注册中⼼地址
2)服务在启动时会向注册中⼼发起注册请求,携带服务元数据信息
3) Eureka注册中⼼会把服务的信息保存在Map中

服务续约(服务提供者)

服务每隔30秒(默认)会向注册中心续约(心跳)一次,如果没有续约,租约在90秒后到期,然后服务会被失效。

此过程被称为心跳检测。

获取服务列表(服务消费者

每个30秒服务会从注册中心中拉取一份服务列表,这个时间可以通过配置修改。

  • 服务消费启动时,从EurekaServer服务列表获取只读备份,缓存到本地。(获取元数据?)
  • 每隔30秒,会重新获取并更新数据

服务端

服务下线
1)当服务正常关闭操作时,会发送服务下线的REST请求给EurekaServer。
2)服务中⼼接受到请求后,将该服务置为下线状态

失效剔除

服务端会定时(可配置)进行检查,当服务端在一定时间(90s)内没有收到实例的心跳,会注销此实例。

自我保护机制

当⽹络分区故障发⽣时,微服务与Eureka Server之间⽆法正常通信,⽽微服务本身是正常运⾏的,此时不应该移除
这个微服务,所以引⼊了⾃我保护机制 。

此时:

  • 不会剔除任何服务实例(可能是服务提供者和EurekaServer之间⽹络问题),保证了⼤多数服务依然可⽤
  • Eureka Server仍然能够接受新服务的注册和查询请求,但是不会被同步到其它节点上,保证当前节点依然可⽤,当⽹络稳定时,当前Eureka Server新的注册信息会被同步到其它节点中
  • 可配置是否开启自我保护机制,默认是打开。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值