博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
01-Eureka是什么?
阅读量:3949 次
发布时间:2019-05-24

本文共 1897 字,大约阅读时间需要 6 分钟。

要了解Eureka就要了解Spring Cloud Netflix项目

一.Spring Cloud Netflix是什么?

Spring Cloud Netflix是,Spring Cloud旗下一个独立项目。为 Spring Boot 应用程序提供集成。通过一些简单的注解,你可以在应用程序中快速启用和配置通用模式,并使用经过实际应用的 Netflix 组件构建大型分布式系统。提供的模式包括服务发现(Eureka)、断路器(Hystrix)、智能路由(Zuul)和客户端负载平衡(Ribbon)。

二.Eureka是什么?

Eurake是netflix的核心模块之一,基于REST的服务,用来实现分布式系统的服务治理。在传统的rpc远程调用框架中,需要对复杂的依赖和调用关系经行管理。Eureka可以实现服务调用、容错等,服务发现与注册。Eureka遵循的是AP原则。在 Spring Cloud 微服务架构中通常用作注册中心。我们称这个服务为 Eureka Server,还有一个与之交互的客户端称之为 Eureka Client

2.1——什么是服务注册与发现?

在服务注册与发现中,有一个注册中心,当服务器启动的时候,生产者会把当前服务注册到注册中心,消费者以服务名或其他的方式获取服务,然后实现本地rpc远程调用框架核心设计思想;在于注册中心,因为使用注册中心管理每个服务与服务之间得一个依赖关系(服务治理概念),在任何rpc远程框架中,都会有一个注册中心(存放服务地址相关信息(接口地址))

在这里插入图片描述
Eureka采用C/S的设计架构,Eureka包含两个组件:Eureka ServerEureka Client
Eureka server 是服务注册中心。而系统中的其他微服务,使用Eureka Server并维持心跳连接,这样系统的维护人员通过Eureka Server来监控系统中各个微服务是否正常运行。

小结
  1. Eureka:就是服务注册中心(可以是一个集群),对外暴露自己的地址 提供者:启动后向Eureka注册自己信息(地址,提供什么服务)
  2. 消费者:向Eureka订阅服务,Eureka会将对应服务的所有提供者地址列表发送给消费者,并且定期更新
  3. 心跳(续约):提供者定期通过http方式向Eureka刷新自己的状态

2.2——Eureka 客户端与服务端之间如何通信

服务发现有两种模式:一种是客户端发现模式,一种是服务端发现模式。Eureka采用的是客户端发现模式。

  1. 第一步服务注册(Register)
    Eureka客户端将关于运行实例的信息注册到Eureka服务器。注册发生在第一次心跳。
    application.yml配置如下
eureka:  instance:    instance-id: provider_8001  client: #客户端    register-with-eureka: true #表示是否想eureka注册中心注册自己#    fetch-registry: false #为false表示自己是注册中心    service-url: #eureka自带的监控页面      defaultZone: http://localhost:7001/eureka/
  1. Renew(更新/续借/维持心跳连接)
    Eureka客户端需要更新最新注册信息,通过每30秒发送一次心跳。更新通知是为了告诉Eureka服务器改服务仍然存活。如果服务器在90秒内没有收到心跳,它会进入我保护模式。
    在这里插入图片描述
  2. 客户端获取注册信息
    Eureka客户端从服务器获取注册表信息并在本地缓存。之后,客户端使用这些信息来查找对应的服务。这些信息会定期更新(每30秒更新一次)。获取的时候可能返回相同的实例。Eureka客户端自动处理重复信息。

2.3——Eureka的自我保护模式

如果 Eureka 服务器检测到超过预期数量的注册客户端以一种不优雅的方式终止了连接,并且同时正在等待被驱逐,那么它们将进入自我保护模式。这样做是为了确保灾难性网络事件不会擦除eureka注册表数据,并将其向下传播到所有客户端。

任何客户端,如果连续3次心跳更新失败,那么它将被视为非正常终止,病句将被剔除。当超过当前注册实例15%的客户端都处于这种状态,那么自我保护将被开启。

当自我保护开启以后,eureka服务器将停止剔除所有实例,直到:

它看到的心跳续借的数量回到了预期的阈值之上,或者

自我保护被禁用
默认情况下,自我保护是启用的,并且,默认的阈值是要大于当前注册数量的15%

转载地址:http://wqrwi.baihongyu.com/

你可能感兴趣的文章
解决Cannot resolve method 'onMethod_'
查看>>
VMware 虚拟机NAT模式如何设置网络连接
查看>>
cloud2020
查看>>
@bean和@component的理解
查看>>
spring注解@Primary与@Qualifier
查看>>
annotation之@Autowired、@Inject、@Resource三者区别
查看>>
idea启动微服务找不到配置文件
查看>>
Java通过反射机制调用某个类的方法
查看>>
字节跳到面试题
查看>>
Linux查看物理CPU个数
查看>>
Linux学习之网络IO,磁盘io
查看>>
ES7.6.2安装
查看>>
查看jar依赖树
查看>>
idea运行gradle项目
查看>>
es安装ltr插件
查看>>
es插件使用之ltr插件demo体验
查看>>
开源ltr-es-7.6.2代码到本地idea打开出现各种错误总结
查看>>
Requests实践详解&& python通过连接开启https的elasticsearch7 服务器
查看>>
ES查询流程源码解析
查看>>
ldaps与ldap over TLS
查看>>