• 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架构对比

    在这里插入图片描述

  • 相关阅读:
    Python基础语法(三)—— 函数的定义和使用
    L54.linux命令每日一练 -- 第八章 Linux磁盘与文件系统管理命令 -- umount和df
    Eureka快速入门
    JVM复习
    【深度学习】高速神经网络(Highway Network)
    Win32 简单日志实现
    【LeetCode-中等题】904. 水果成篮
    【深度学习】UniControl 一个统一的扩散模型用于可控的野外视觉生成
    【JavaScript数据网格】上海道宁51component为你带来企业JS开发人员首选的数据网格——AG Grid
    MySQL索引下推
  • 原文地址:https://blog.csdn.net/csnz123123/article/details/125343236