Java教程

Eureka(服务注册中心)

本文主要是介绍Eureka(服务注册中心),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1、Eureka(服务注册中心)的基本介绍

1.1、服务注册中心的基本介绍

服务注册中心是用于管理微服务提供者的注册与发现的组件。在分布式微服务架构中,服务注册中⼼用于存储服务提供者的地址信息、服务发布相关的属性信息,消费者通过主动查询和被动通知的方式获取服务提供者的地址信息,不再需要通过硬编码⽅式得到提供者的地址信息。

对于任何⼀个微服务,原则上都应存在或者⽀持多个提供者(provider),这是由微服务的分布式属性决定的。所以为了⽀持弹性扩缩容特性,微服务的同一个提供者的数量和分布往往是动态变化的,也是无法预先确定的。这个时候就需要服务注册中心来管理微服务提供者的注册与发现了。服务注册中心本质上就是为了解耦服务提供者和服务消费者。

 

1.2、Eureka注册中心

Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的。

Eureka架构中的三个核心角色:

  • 服务注册中心(Eureka 服务端,即Eureka  Server):Eureka的服务端应用,提供服务注册和发现功能
  • 服务提供者(Eureka 客户端,即Eureka  client):提供服务的应用,可以是SpringBoot应用,也可以是其它任意技术实现,只要对外提供的是Rest风格服务即可
  • 服务消费者(Eureka 客户端,即Eureka  client):消费应用从注册中心获取服务列表,从而得知每个服务方的信息,知道去哪里调用服务方。

Eureka包含两个组件:Eureka Server和Eureka Client。Eureka客户端就是指我们的开发的服务,包括服务提供者和消费者。

Eureka Server提供服务注册服务,各个节点启动后,会在Eureka Server中进行注册,这样EurekaServer中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观的看到。

Eureka Client是一个java客户端,用于简化与Eureka Server的交互,客户端同时也就是一个内置的、使用轮询(round-robin)负载算法的负载均衡器。

 

1.2.1、Eureka的运行机制

Eureka 的整个运行机制大致如下:

  • 注册:Eureka client 一次次反复连接eureka,直到注册成功为止。
  • 拉取或订阅:消费者会把注册中心的整个注册表都全部拉取过来缓存到本地,会每隔30秒拉取一次注册表,更新注册信息。实际上服务消费者可以主动拉取可⽤的服务提供者清单,也可以由服务消费者订阅服务(当服务提供者有变化时,注册中⼼会主动推送更新后的服务清单给消费者。
  • 心跳:消费提供者每30秒发送一次心跳,Eureka 在每次收不到心跳后就会记一个数,如果3次没有收到心跳 eureka 会删除这个服务(将地址从注册表中删除)
  • 自我保护模式:特殊情况,由于网络不稳定15秒内85%服务器出现心跳异常(一次收不到就算心跳一次)。会保护所有的注册信息不删除,就算3次没有收到心跳的情况也不会删除,网络恢复后,可以自动退出保护模式,在开发测试期间,可以关闭保护模式。

服务提供方与Eureka之间通过“心跳”机制进行监控,当某个服务提供方出现问题,Eureka自然会把它从服务列表中剔除。这就实现了服务的自动注册、发现、状态监控。

原理图如下:

 

这篇关于Eureka(服务注册中心)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!