Version: Next

Eureka 基础知识

提示

到目前为止,我们的两个微服务之间组成了下面的框架

  • 在此基础上,逐渐融入 Spring Cloud 的各个组件

服务治理

什么是 服务治理

  • Spring Cloud 封装了 Netfix 公司开发的 Eureka 模块来实现服务治理
  • 在传统的 rpc 远程调用框架中,管理每个服务于服务之间依赖关系比较复杂,管理也复杂,所以需要使用 服务治理 ,管理服务于服务之间的依赖关系,可以实现 服务调用负载均衡容错 等,实现 服务发现与注册

服务发现与注册

什么是 服务发现与注册

  • Eureka 采用了 CS 设计架构
  • Eureka Server: 作为服务注册功能的 服务器,是服务注册中心
  • 系统中的其他微服务:使用 Eureka Client 连接到 Eureka Server 并维持心跳
  • 系统维护人员可以通过 Eureka Server 监控系统中各个微服务是否正常运行

注册中心

  • 当服务器启动时,将自己的服务器信息,如 服务地址通讯地址 等以 别名 的方式注册到注册中心
  • 另一方服务器(通常为消费者),以该 别名 的方式去注册中心获取其 实际服务通信地址,再通过本地 RPC 功能,底层利用 HttpClient 实现远程调用
  • 消费者获取服务地址后,将其缓存在本地 JVM 内存中,默认每间隔 30 秒更新一次服务调用地址
  • RPC 远程调用框架的核心设计思想在于注册中心:
    • 注册中心管理每个服务于服务之间的一种依赖关系 (服务治理概念)
    • 在任何 RPC 远程框架中,都会有一个注册中心,用以存放服务地址相关信息
    • 本质:存储 key-value 数据, key 为服务器名,value 为调用地址

Eureka 的两个组件

Eureka Server 提供服务注册服务

  • 各个微服务节点通过配置启动后,会在 Eureka Server 中进行注册,这样 Eureka Server 中的服务注册表将会存储所有可访问服务节点的信息,服务节点的信息可以再界面中直观的查看

Eureka Client 通过注册中心进行访问

  • 是一个 Java 客户端,用于简化 Eureka Server 的交互,客户端同时也具备一个内置的、使用轮询 (Round-Robin) 负载算法的负载均衡器
  • 应用启动后,将会向 Eureka Server 发送心跳,默认周期为 30
  • 如果 Eureka Server 在多个心跳周期内没有收到某个节点的心跳,Eureka Server 将会从服务注册表中把这个节点 移除 ,默认 90