Eureka 一些简单概念

什么是Eureka:

和Consul、ZooKeeper类似,Eureka是一个用于服务注册和发现的组件。
Eureka分为Eureka Server(Eureka服务注册中心) 和 Eureka Client(Eureka 客户端)。

Eureka的基本架构:

在这里插入图片描述
Eureka的基本架构如图所示,其中包括以下3种角色。
1.Register Service: 服务注册中心,它是一个Eureka Service,提供服务注册和发现的功能。
2.Provider Service: 服务提供者,它是一个Eureka Client,提供服务。
3.Consumer Service: 服务消费者,它是一个Eureka Client, 消费服务。

服务消费的基本过程:
首先需要一个服务注册中心Eureka Server,服务提供者Eureka Client 向服务注册中心Eureka Server 注册,将自己的信息(如服务吗、IP、地址等)通过REST API的形式提交给服务注册中心Eureka Server。
同样,服务消费者Eureka Client 也需要向服务注册中心Eureka Server 注册,同时服务消费者会获取一个服务注册列表的信息,该列表包含了所有向服务注册中心Eureka Server注册的服务信息。
获取服务注册列表信息之后,服务消费者就知道服务提供者的IP地址和端口等信息,可以通过HTTP 的REST API 或者 MQ 远程调度来消费服务提供者的服务。

服务注册与发现:

1.服务注册:
向服务注册中心注册一个服务实例,服务提供者将自己的服务信息(如服务名、IP、地址等)通过REST API 的形式提交给服务注册中心Eureka Server。

2.服务发现:
服务消费者需要消费另外一个服务时,服务注册中心Eureka Server能够告知服务消费者它所需要消费服的实例信息(如服务名、IP、地址等)。

3.通常情况下,一个服务既是服务提供者,也是服务消费者。

4.服务消费者一般使用HTTP种的REST API协议或者中间件MQ来进行服务消费。

5.服务注册中心Eureka Server会提供服务的健康检查方案(心跳,30秒一次),检查被注册的服务是否可用。通常一个服务实例注册后,会定时向服务注册中心发送心跳,以表明它还是可用的。当不再发送心跳,服务注册中心会认为这个该服务挂了,从而在列表中剔除。如果这个被剔除的服务过一段时间后继续向服务注册中心发送心跳,那么服务注册中心会将该服务从新加入列表中。

Eureka源码的一些概念:

1.Register-服务注册
服务注册中心启动成功后,每当有Eureka Client上线,都会向Eueka Server注册,Eureka Client会提供自身的ip地址,服务名等信息,反正这些信息要能唯一识别Eureka Client,这样之后进行远程过程调用的时候才不会找错服务。

2.Renew-服务续约
Eureka Client默认情况下,每隔30秒会向Eueka Server发送一次心跳来告诉Eueka Server自己的服务是正常的,依旧是可用的,没有出现故障,这就是服务续约。而在正常的情况下,要是Eueka Server间隔了90秒还没有收到该 Eureka Client发送的心跳,Eueka Server就会将这个 Eureka Client实例从服务注册列表删除。一般来说,官网是不建议修改服务续约的间隔时间。

3.Fetch Registries-获取服务注册列表的信息
每个Eureka Client即是服务消费者,也是服务生产者。而每个Eureka Client要能够消费其他的Eureka Client服务,自然要先知道其他Eureka Client的地址才行。所以Eureka Client会从Eueka Server上拉取服务注册列表,缓存在本地,服务注册列表每隔30秒更新一次,Eureka Client自己也会做更新,默认情况下,Eureka Client使用json格式来获取服务注册列表信息。

4.Cancel-服务下线
Eureka Client程序在关闭时可以向Eueka Server发送下线请求,Eueka Server收到请求后,会将这个Eureka Client的实例从服务注册列表里删除。

5.Eviction-服务剔除
要是90秒内,Eureka Client没有向Eueka Server发送心跳进行服务续约,那么Eueka Server就会将该Eureka Client从服务注册列表剔除。

6.Eureka的自我保护机制
当网络出现故障时,我们Eureka Client的实例没有办法及时和Eueka Server进行服务续约
,那按照之前的逻辑90秒内要是没有收到服务续约的请求,Eueka Server会自动剔除该实例,而其实这个Eureka Client实例是正常的,能够提供服务,把该实体剔除后,除非你重启这个实例的服务,不然是不会向Eueka Server重新注册的,那这个服务就不能访问了,所以这时需要Eureka的自我保护机制。
如果只是少量的Eureka Client实例没有发送心跳续约,Eueka Server则认为是Eureka Client自身的问题,如果是大量的Eureka Client实例没有续约,Eueka Server会认为是自身出了问题,那么他就会开启自我保护机制,不去剔除服务实例,当然不排除其实这个实例确实是下线了,但是因为保护机制导致他还存在于服务注册列表,那么这时我们可以通过ssh发送命令等方式来手动剔除服务

下个学习SpringCloud 编写Eureka

发布了33 篇原创文章 · 获赞 42 · 访问量 3175

猜你喜欢

转载自blog.csdn.net/weixin_40991408/article/details/103395051
今日推荐