SpringCloud的服务发现框架 — Eureka入门

目标:

了解 Eureka 服务注册与发现


学习步骤:

1、何为Eureka?
2、什么是服务治理?
3、什么是服务注册与发现?
4、了解 服务注册与发现过程的三种角色
5、服务发现过程描述
6、Eureka的两个组件 Eureka Server 和 Eureka Client
7、Netflix 官方 Eureka 架构图
8、Eureka 架构与Dubbo架构对比

一、何为Eureka?

上百度百科

Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的。

SpringCloud将它集成在其子项目spring-cloud-netflix中,以实现SpringCloud的服务发现功能

Eureka是 Netflix 的一个子模块,也是核心模块之一,它的功能类似于Dubbo的注册中心,比如 Zookeeper。

可以充当服务发现的组件有很多:Zookeeper ,Consul , Eureka 等

二、什么是服务治理?

SpringCloud 封装了 Netflix 公司开发的 Eureka 模块来实现服务治理

在传统的RPC远程调用框架中,每个服务与服务之间的依赖关系比较复杂,管理起来也比较复杂,所以服务治理出现了,服务之间依赖关系,可以实现服务调用、负载均衡、容错等,实现服务发现与注册

三、什么是服务注册与发现?

Eureka 采用了 CS 的设计架构,Eureka Server 作为服务注册功能的服务器,它是服务注册中心。

而系统中的其他微服务,使用 Eureka 的客户端连接到 Eureka Server 并维持心跳连接,这样 系统的维护人员就可以通过 Eureka Server 来监控系统中各个微服务是否正常运行。

在服务注册与发现中,有一个注册中心,当服务器启动的时候,会把当前自己服务器的信息 比如 服务地址通讯地址等以别名的方式注册到注册中心上,而 消费者或者服务提供者,就会以 该别名的方式去注册中心上获取到实际的服务通讯地址,然后再实现本地RPC调用

RPC远程调用框架核心设计思想:

在于注册中心,因为使用注册中心管理每个服务与服务之间的一个依赖关系(服务治理概念)。
在任何RPC远程框架中,都会有一个注册中心存放服务地址相关信息(类似接口地址)

四、 服务发现的过程的三种角色

  • 服务提供者:
    - 就是提供一些自己能够执行的一些服务给外界。

  • 服务消费者:
    - 就是需要使用一些服务的“用户”。

  • 服务中介:
    - 其实就是服务提供者和服务消费者之间的“桥梁”,服务提供者可以把自己注册到服务中介那里,而服务消费者如需要消费一些服务(使用一些功能)就可以在服务中介中寻找注册在服务中介的服务提供者。

五、服务发现过程描述

1、服务注册 Register:

当 Eureka 客户端向 Eureka Server 注册时,它提供自身的元数据,比如 IP 地址、端口,运行状况指示符 URL,主页等。

2、服务续约 Renew:

Eureka 客户会每隔 30 秒(默认情况下)发送一次心跳来续约
通过续约来告知 Eureka Server 该 Eureka 客户仍然存在,没有出现问题。
正常情况下,如果 Eureka Server 在 90 秒没有收到 Eureka 客户的续约,它会将实例从其注册表中删除。

3、获取注册列表信息 Fetch Registries:

Eureka 客户端从服务器获取注册表信息,并将其缓存在本地。
客户端会使用该信息查找其他服务,从而进行远程调用。
该注册列表信息定期(每 30 秒钟)更新一次。
每次返回注册列表信息可能与 Eureka 客户端的缓存信息不同, Eureka 客户端自动处理。
如果由于某种原因导致注册列表信息不能及时匹配,Eureka 客户端则会重新获取整个注册表信息。 Eureka 服务器缓存注册列表信息,整个注册表以及每个应用程序的信息进行了压缩,压缩内容和没有压缩的内容完全相同。
Eureka 客户端和 Eureka 服务器可以使用 JSON / XML 格式进行通讯。
在默认的情况下 Eureka 客户端使用压缩 JSON 格式来获取注册列表的信息。

4、服务下线 Cancel:

Eureka 客户端在程序关闭时向 Eureka 服务器发送取消请求。
发送请求后,该客户端实例信息将从服务器的实例注册表中删除。
该下线请求不会自动完成,它需要调用以下内容:DiscoveryManager.getInstance().shutdownComponent();

5、服务剔除 Eviction:

在默认的情况下,当 Eureka 客户端连续 90 秒 (3 个续约周期) 没有向 Eureka 服务器发送服务续约,即心跳,Eureka 服务器会将该服务实例从服务注册列表删除,即服务剔除。

六、Eureka包含的两个组件:Eureka Server 和 Eureka Client

Eureka Server 提供服务注册服务

各个节点启动后,会在Eureka Server中进行注册
这样EurekaServer中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观的看到。

Eureka Client 是一个java客户端,它通过注册中心进行访问

它用于简化与Eureka Server的交互,客户端同时也就是一个内置的、使用轮询(round-robin)负载算法的负载均衡器。

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

Eureka Server之间通过复制的方式完成数据的同步,Eureka还提供了客户端缓存机制。
即使所有的Eureka Server都挂掉,客户端依然可以利用缓存中的信息消费其他服务的API。
综上,Eureka通过心跳检查、客户端缓存等机制,确保了系统的高可用性、灵活性和可伸缩性。

当 Eureka 客户端向 Eureka Server 注册时,它提供自身的元数据,比如 IP 地址、端口,运行状况指示符 URL,主页等

七、Netflix 官方 Eureka 架构图

在这里插入图片描述

八、Eureka 架构与Dubbo架构对比

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值