当前位置:   article > 正文

Spring Cloud Eureka 是什么?_spring cloud eureka是什么

spring cloud eureka是什么

本文内容如有错误、不足之处,欢迎技术爱好者们一同探讨,在本文下面讨论区留言,感谢。

简述

Spring Cloud Eureka 是 Spring Cloud Netflix 组件之一,是基于 Netflix Eureka 实现的。Eureka 包括服务注册、服务发现和服务检测监控等。

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

基本概念

Eureka 主要作用是服务治理,服务治理包含下面两个概念:

  • 服务注册:每个服务单元向注册中心注册自身所提供的服务,注册的信息含括:主机与端口号、版本号、通信协议,服务名等。服务中心会维护一个服务清单,同时使用心跳的方式检测清单中的服务是否可用,若不可用则需要从服务清单中剔除,以达到排除故障服务的效果。
  • 服务发现:服务消费者消费服务是通过服务中介去发现对应点服务提供者。微服务下的服务治理框架下,服务之间的相互调用不再通过具体的实例地址进行直接调用,而是通过向服务名发起请求调用实现。
Eureka服务治理体系

下面是一张经典治理体系示意图:
在这里插入图片描述

对象动作说明
服务提供者服务注册发送REST请求的方式将自己注册到Eureka Server
服务提供者服务同步当服务提供者发送注册请求到一个服务注册中心时,它会将请求转发给集群中相连的其他注册中心,从而实现注册中心之间的服务同步。
服务提供者服务续约在注册完服务之后,服务提供者会维护一个心跳用来维持自身状态,让 Eureka Server 感知到服务本身可以调用
服务消费者获取服务发送一个REST请求给服务注册中心,来获取上面注册的服务清单。
服务消费者服务调用服务消费者在获取服务清单后,通过服务名可以获得具体提供服务的实例名和该实例的元数据信息,进行调用。
服务消费者服务下线服务实例执行关闭操作时,将触发服务下线请求给 Eureka Server。服务端在接收到请求之后,将该服务状态设置为下线,并把该下线事件传播出去。
服务注册中心失效剔除从服务列表中将剔除这些无法提供服务的实例。
服务注册中心自我保护Eureka Server 在运行期间,会统计心跳失败的比例在15分钟之内低于85%,如果出现低于的情况,Eureka Server 会将当前的实例信息保护起来,让这些实例不会过期,尽可能保护这些注册信息。
使用
  1. pom.xml 引入 Eureka 依赖
<dependencies>
    <!-- 引入eureka server依赖 -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-eureka-server</artifactId>
    </dependency>
</dependencies>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  1. 创建启动类
/**
 * 
 * @EnableEurekaServer
 * 用来指定该项目为Eureka的服务注册中心
 */
@EnableEurekaServer
@SpringBootApplication
public class EurekaApp {

    public static void main(String[] args) {
        SpringApplication.run(EurekaApp.class, args);
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  1. 配置 application.properties
#设置tomcat服务端口号
server.port=9090
#设置服务名称
spring.application.name=eureka-service

eureka.instance.hostname=localhost
#注册中心不需要注册自己
eureka.client.register-with-eureka=false
#注册中心不需要去发现服务
eureka.client.fetch-registry=false
#设置服务注册中心的URL
eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
基本原理

在这里插入图片描述

Eureka 分为 Eureka ServerEureka ClientEureka Server 作为注册中心属于服务端,而服务提供者和服务消费者相对于注册中心是客户端。同时 Eureka Server 在启动时默认会自己注册自己,自身作为一个服务,因此 Eureka Server 也是一个客户端,这是搭建 Eureka 集群的基础。

服务提供者向注册中心注册服务,隔30秒(默认时间,可以通过配置文件进行修改 )发送一次心跳,,如果 Eureka Server 在90秒(默认时间,可以通过配置文件进行修改 )后还未收到服务提供者发来的心跳时,那么它就会认定该服务已经死亡就会注销这个服务。
注意:这里注销并不是立即注销,而是会在60秒以后对在这个之间段内“死亡”的服务集中注销,原因是,集中处理可以避免 Eureka 出现极大的负担。
此外,Eureka 还有自我保护机制,如果在15分钟内超过85%的节点都没有正常的心跳,那么 Eureka 就认为客户端与注册中心出现了网络故障,所以不会再接收心跳,也不会删除服务。

客户端消费者会向注册中心拉取服务列表,因为一个服务器的承载量是有限的,所以同一个服务会部署在多个服务器上,每个服务器上的服务都会去注册中心注册服务,他们会有相同的服务名称但有不同的实例id,所以拉取的是服务列表。最终通过负载均衡来获取一个服务,这样可以均衡各个服务器上的服务。

结论

本文简单介绍了 Spring Cloud Eureka 的基本作用和简单引用,通过这篇文章,了解一下 Eureka 的设计思路。

参考资料

Eureka原理理解和Eureka集群搭建

Eureka源码解析(Eureka工作原理进阶)

Eureka工作原理

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/一键难忘520/article/detail/1000277
推荐阅读
相关标签
  

闽ICP备14008679号