SpringCloud之Eureka回顾

一 概述

位于微服务架构中服务的注册与发现包括两部分:一个是服务器端,另一个是客户端。

二 服务注册与发现的服务器端

Server是一个公共服务,为Client提供服务注册于发现的功能,维护注册到自身的Client的相关信息,同时提供接口给Client获取注册表中其他服务的信息,使得动态变化的Client能够进行服务间的相互调用。

三 服务注册与发现的客户端

Client将自己的服务信息通过一定的方式登记到Server上,并在正常范围内维护自己信息一致性,方便其他服务发现自己,同时可以通过Server获取到自己依赖的其他服务信息,完成服务调用。

四 服务注册与发现组件Spring Cloud Netflix Eureka

Eureka是Spring Cloud提供用于服务注册与发现的基础组件,是搭建Spring Cloud微服务的前提之一。Eureka作为一个开箱即用的基础组件,屏蔽了底层Server和Client交互的细节,使得开发者能够将精力更多地放在业务逻辑上,加快微服务架构的实施和项目的开发。

Eureka是一个RESTful风格的服务注册与发现的基础服务组件。Eureka由两个部分组成,一个是Eureka Server,另一个就是Eureka Client。

Eureka Server:它简化了客户端与服务端之间的交互。它既可以独立不部署,也可以进行集群部署,在集群部署的情况下,Eureka Server间会进行注册表信息同步的操作,这时被同步注册表信息的Eureka Server将会被其他同步注册表信息的Eureka Server称作为peer。通常来讲,一个EureKa Server也是一个Eureka Client,它会尝试注册自己,所以需要至少一个注册中心的Url来定位对等点peer。如果不提供这样一个注册端点,注册中心也能工作,但是会在日志中打印无法向peer注册自己的信息。在独立的(Standalone)Eureka Server的模式下,Eureka Server一般会关闭作为客户端注册自己的行为。

@SpringBootApplication
//注解EnableEurekaServer会为项目配置必要的配置类,标识该服务为注册中心
@EnableEurekaServer 
public class ServiceEurekaApplication {

    public static void main(String[] args) {
        SpringApplication.run(ServiceEurekaApplication.class, args);
    }

}

Eureka Client:会定时的将自己的信息注册到Eureka Server中,并从Server中发现其他服务,其中内置一个负载均衡器,用来进行基本的负载均衡。

Eureka Server 与 Eureka Client之间的联系主要通过心跳的方式实现。心跳(Heartbeat)即Eureka Client定时向Eureka Server汇报本服务实例当前的状态,维护本服务实例在注册表中  租约的有效性。

Eureka Server需要随时维持最新的服务实例信息,所以在注册表中的每个服务实例都需要定期发送心跳到Server中以使自己的注册保持最新的状态(数据一般直接保存在内存中)。为了避免Eureka Client在每次服务间调用都向注册中心请求依赖服务实例的信息,Eureka Client将定时从Eureka Server中拉取注册表中的信息,并将这些信息缓存到本地,用于服务发现。

五 服务发现原理

组件与行为

  • Applicaiton Service:是一个Eureka Client,扮演服务提供者的角色,提供业务服务,而Eureka Server注册和更新自己的信息,同时能从Eureka Server注册表中获取其他服务的信息。
  • Eureka Server:扮演服务注册中心的角色,提供服务注册和发现的功能。每个Eureka Client向Eureka Server注册自己的信息,也可以通过Eureka Server获取到其它服务的信息达到发现和调用其他服务的目的。
  • Application Client:是一个Eureka Client,扮演了服务消费者的角色,通过Eureka Server获取注册其上其他服务的信息,从而根据信息找到所需的服务发起远程调用。
  • Replicate:Eureka Server之间注册表信息的同步复制,使得Eureka Server集群中不同注册表中服务实例信息保持一致。
  • Make Remote Call:服务之间的远程调用。
  • Register:注册服务实例,Client端向Server端注册自身的元数据以提供服务发现。
  • Renew:续约,通过发送心跳到Server以维持和更新注册表中服务实例元数据的有效性。当在一定时长内,Server没有收到Client的心跳信息,将默认信息服务下线,会将服务实例的信息从注册表中删除。
  • cancel:服务下线,Client在关闭时主动向Server注销服务实例元数据,这时Client的服务实例数据就会从Server的注册表中删除。
  • Get Registry:获取注册表,Client向Server请求注册表信息,用于服务发现,从而发起服务间远程调用。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值