【一天一个进阶系列】- Spring Cloud之服务注册与发现Eureka篇 | 七日打卡

288 阅读4分钟

简介

  • 前言:在微服务架构中,原本的“巨石”应用按照业务被分割成相对独立的、提供特定功能的微服务,每一个微服务都可以通过集群或者其他方式进行动态扩展,每一个微服务实例的网络地址都可能动态变化,这使得原本通过硬编码地址的调用方式失去了作用 。 微服务架构中,服务地址的动态变化和数量变动,迫切需要系统建立一个中心化的组件对各个微服务实例信息进行登记和管理, 同时让各个微服务实例之间能够互相发现,从而达到互相调用的结果
  • Eureka 简介
    • 在Netflix中 ,Eureka是一个RESTful风格的服务注册与发现的基础服务组件
    • Eureka由两部分组成
        1. Eureka Server: 提供服务注册和发现功能,即我们上面所说的服务器端
        1. Eureka Client: 它简化了客户端与服务端之间的交互。Eureka Client会定时将自己的信息注册到Eureka Server中,并从 Server 中发现其他服务 。Eureka Client中内置一个负载均衡器,用来进行基本的负载均衡
  • 服务发现原理
    • Region 与 Availability Zone
      • Eureka 最初设计的目的是 AWS (亚马逊网络服务系统)中用于部署分布式系统,所以首先对AWS上的区域( Regin )和可用区( Avai lability Zone )进行简单的介绍
        • 区域:AWS根据地理位置把某个地区的基础设施服务集合称为一个区域,区域之间相对独立 。 在架构图上,us -east- 1 c 、us-east- 1 d 、us- east-1 巳表示 AWS 中的 三个设施服务区域,这些区域中分别部署了一个ureka集群
        • 可用区 : AWS 的每个区域都是由多个可用区组成的,而一个可用区一般都是由多个数据中心(简单理解成一个原子服务设施)组成的 。 可用区与可用区之间是相互独立的,有独立的网络和供电等,保证了应用程序的高可用性 。 在上述的架构图中, 一个可用区中可能部署了多个 Eureka , 一个区域中有多个可用区,这些 Eureka共同组成了一个 Eureka 集群
    • 组件与行为
      • Application Service :是一个 Eureka Client ,扮演服务提供者的角色,提供业务服务,向 Eureka Server 注册和更新自己的信息,同时能从 Eureka Server 注册表中获取到其他服务的信息
      • Eureka Server :扮演服务注册中心的角色,提供服务注册和发现的功能 。 每个Eureka Cient 向 Eureka Server 注册自己的信息,也可以通过 Eureka Server 获取到其他服务的信息达到发现和调用其他服务的目的
      • Application Client :是一个 Eureka Client ,扮演了服务消费者的角色,通过 Eureka Sever 获取注册到其上其他服务的信息,从而根据信息找到所需的服务发起远程调用
      • Replicate: Eureka Server 之间注册表信息的同步复制,使 Eureka Server 集群中不同注册表中服务实例信息保持一致 。
      • Make Remote Call :服务之间的远程调用 。
      • Register :注册服务实例, Client 端向 Server 端注册自身的元数据以供服务发现 。
      • Renew :续约,通过发送心跳到 S巳rver 以维持和更新注册表中服务实例元数据的有效性 。 当在一定时长内, Server 没有收到 Client 的心跳信息,将默认服务下线,会把服务实例的信息从注册表中删除 。
      • Cancel :服务下线, Client 在关闭时主动向 Server 注销服务实例元数据,这时 Client的服务实例数据将从 Server 的注册表中删除 。
      • Get Registry : 获取注册表, C lient 向 Server 请求注册表信息,用于服务发现,从而发起服务间远程调用
  • Eureka架构图
  • Eureka Client工作图

总结:EurekaSpringCloud提供了高可用的服务发现与注册组件,利用Eureka,Spring Cloud开发者能够更快地融入到微服务的开发中。Eureka Sever作为服务注册中心,为Eureka Client提供服务注册和服务发现的能力,它既可单机部署,也可以通过集群的方式进行部署,通过自我保护机制和集群同步复制机制保证Eureka的高可用性和网络分区容忍性,保Eureka Server集群的注册表数据的最终一致性;Eureka Client方便了与Eureka Server的交互,它与Eureka Servr的一切交互,包括服务注册、发送心跳续租、服务下线和服务发现,都是在后台自主完成的,简化了开发者的开发工作。当然Eureka也存在缺陷。由于集群间的同步复制是通过HTTP的方式进行,基于网络的不可靠性,集群中的Eureka Servr间的注册表信息难免存在不同步的时间节点,不满足CAP中的C(数据一致性),要求一致性的,可以考虑使用Zookeeper