三分钟带你了解Eureka

Eureka注册中心是入门Spring Cloud微服务架构的必学组件,是学习所有其他组件的基础和基石。

1、什么是 Eureka?

Eureka,这里是 Spring Cloud Eureka 的简称,是 Spring Cloud Netflix 组件之一。服务治理(Eureka)包括服务注册、服务发现和服务检测监控等。

Eureka架构图如下:

三分钟带你了解Eureka

 

从图中我们可以看出,Eureka 组件分为两部分:Eureka server和 Eureka client。

而客户端又分为 Application Service 客户端和 Application Client 客户端两种。

Eureka 的工作机制每个 region 都有自己的 Eureka 服务器集群,每个 zone 至少要有一个 Eureka 服务器以应对 zone 瘫痪。

简要描述了Eureka的基本架构,由3个角色组成:

1、Eureka Server

提供服务注册和发现

2、Service Provider

服务提供方将自身服务注册到Eureka,从而使服务消费方能够找到

3、Service Consumer

服务消费方从Eureka获取注册服务列表,从而能够消费服务

 

2、微服务为什么需要注册中心?

举个现实生活中的例子,比如说,我们手机中的通讯录的两个使用场景,

1、当我想给张三打电话时,那我需要在通讯录中按照名字找到张三,然后就可以找到他的手机号拨打电话。

2、李四办了手机号,那么他把手机号告诉我,我把李四的号码存进通讯录,后续,我就可以从通讯录找到他。

3、上述两个场景就是我们在微服务架构中常常提到的:

服务发现服务注册在微服务架构中,由于每一个服务的粒度相对传统SOA来说要小的多,所以服务的数量会成倍增加。这时如果有效管理服务的注册信息就尤为重要。

在分布式系统中,我们不仅仅是需要在注册中心找到服务和服务地址的映射关系这么简单,我们还需要考虑更多更复杂的问题:

服务注册后,如何被及时发现
服务宕机后,如何及时下线
服务如何有效的水平扩展
服务发现时,如何进行路由
服务异常时,如何进行降级


注册中心如何实现自身的高可用这里问题的解决都依赖于注册中心。我们对服务注册中心的期望主要有以下几条:

1、简单易用:最好对开发者透明
2、高可用:几台注册中心坏掉不会导致整个服务瘫痪,注册服务整体持续可用
3、避免跨越机房调用:最好调用优先同一个机房的服务以减少网络延迟
4、跨语言:允许开发者使用多种编程语言构建微服务

2.1、什么是注册中心?

服务中心又称注册中心,是微服务架构非常重要的一个组件,管理各种服务功能包括服务的注册、发现、熔断、负载、降级等。可以说是微服务架构中的”通讯录“,它记录了服务和服务地址的映射关系。在分布式架构中,服务会注册到这里,当服务需要调用其它服务时,就到这里找到服务的地址,进行调用。

先介绍一下基本术语:

三分钟带你了解Eureka

 

注册中心一般包含如下几个功能:

1、服务发现:服务注册/反注册:保存服务提供者和服务调用者的信息服务订阅/取消订阅:服务调用者订阅服务提供者的信息,最好有实时推送的功能服务路由(可选):具有筛选整合服务提供者的能力。

2、服务配置(不包括其它无关配置): 配置订阅:服务提供者和服务调用者订阅微服务相关的配置配置下发(可选):主动将配置推送给服务提供者和服务调用者

3、服务健康检测检测服务提供者的健康情况

2.2、常见的注册中心

常见的注册中心有两类,无中心节点的代表为Dubbo和无中心节点的Eureka。

Dubbo的注册中心

三分钟带你了解Eureka

节点角色说明:

三分钟带你了解Eureka

 

调用关系说明:

服务容器负责启动,加载,运行服务提供者。服务提供者在启动时,向注册中心注册自己提供的服务。服务消费者在启动时,向注册中心订阅自己所需的服务。注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。Eureka注册中心

Eureka注册中心架构

这个官方提供的架构图,我们用通俗易懂的语言解释一下:

三分钟带你了解Eureka

1、Application Service 相当于服务提供者,Application Client相当于服务消费者;
2、Make Remote Call,可以简单理解为调用RESTful API;
3、us-east-1c、us-east-1d等都是zone,它们组成us-east-1这个服务注册中心

由图可知,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节点都宕掉,服务消费者依然可以使用缓存中的信息找到服务提供者。