Spring Cloud Eureka服务注册中心详解

Eureka 服务治理

什么是 Eureka
        Eureka,这里是 Spring Cloud Eureka 的简称,是 Spring Cloud Netflix 组件之一。Spring Cloud Netflix 中核心的组件包括了服务治理(Eureka),服务容断(Hystrix),路由(Zuul)和客户端负载均衡(Ribbon)。在系列第三篇,服务消费者讲解会涉及到 Ribbon 的使用。
回到 Spring Cloud Eureka,是基于 Netflix Eureka (Netflix 是 Java 实现的开源软件)。服务治理(Eureka)包括服务注册、服务发现和服务检测监控等,自然本文介绍下 Eureka 作为服务注册中心。

Eureka 架构

Eureka 作为服务治理,必然满足下面几点:
– 服务本身不存在单点故障,
– 支持集群,即高可用性
– 服务与服务之间通过服务注册中心找到彼此实例

作为服务端(即服务注册中心),包括
– 管理服务实例
– 提供服务注册或下线
– 提供服务发现
– 提供服务注册表至两类客户端(即服务提供者和消费者)

作为客户端(即服务提供者和消费者),包括
– 连接服务注册中心
– 向服务注册中心注册或者下线服务实例
– 向服务注册中心或服务注册缓存列表查询服务

Eureka 集群架构如图所示:

Spring Cloud Eureka服务注册中心详解_第1张图片

上图是来自Eureka官方的架构图,大致描述了Eureka集群的工作过程。图中包含的组件非常多,可能比较难以理解,我们用通俗易懂的语言解释一下:

  • Application Service 相当于本书中的服务提供者,Application Client相当于本书中的服务消费者;
  • Make Remote Call,可以简单理解为调用RESTful API;
  • us-east-1c、us-east-1d等都是zone,它们都属于us-east-1这个region;

由图可知,Eureka包含两个组件:Eureka Server 和 Eureka Client,它们的作用如下:

  • Eureka Client是一个Java客户端,用于简化与Eureka Server的交互;
  • Eureka Server提供服务发现的能力,各个微服务启动时,会通过Eureka Client向Eureka Server进行注册自己的信息(例如网络信息),Eureka Server会存储该服务的信息;
  • 微服务启动后,会周期性地向Eureka Server发送心跳(默认周期为30秒)以续约自己的信息。如果Eureka Server在一定时间内没有接收到某个微服务节点的心跳,Eureka Server将会注销该微服务节点(默认90秒);
  • 每个Eureka Server同时也是Eureka Client,多个Eureka Server之间通过复制的方式完成服务注册表的同步;
  • Eureka Client会缓存Eureka Server中的信息。即使所有的Eureka Server节点都宕掉,服务消费者依然可以使用缓存中的信息找到服务提供者。

综上,Eureka通过心跳检测、健康检查和客户端缓存等机制,提高了系统的灵活性、可伸缩性和可用性。

https://github.com/JeffLi1993/springcloud-learning-example

你可能感兴趣的:(Spring,Cloud)