精华内容
下载资源
问答
  • Eureka

    千次阅读 2019-02-16 22:23:26
    服务调用者无需自己寻找服务,而是把自己的需求告诉Eureka,然后Eureka会把符合你需求的服务告诉你。 同时,服务提供方与Eureka之间通过“心跳”机制进行监控,当某个服务提供方出现问题,Eureka自然会把它从服务...

    1.概念

    Eureka负责管理、记录服务提供者的信息。服务调用者无需自己寻找服务,而是把自己的需求告诉Eureka,然后Eureka会把符合你需求的服务告诉你。

    同时,服务提供方与Eureka之间通过“心跳”机制进行监控,当某个服务提供方出现问题,Eureka自然会把它从服务列表中剔除。

    这就实现了服务的自动注册、发现、状态监控。

    基本架构

    在这里插入图片描述

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

    2.案例

    1.创建eureka-demo的工程(这个是eureka服务的工程可集群)

    导入依赖:

    	<dependency>
    		<groupId>org.springframework.cloud</groupId>
    		<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
    	</dependency>
    

    2.编写启动类

    @SpringBootApplication
    @EnableEurekaServer // 声明这个应用是一个EurekaServer
    public class EurekaDemoApplication {
    
    	public static void main(String[] args) {
    		SpringApplication.run(EurekaDemoApplication.class, args);
    	}
    }
    

    3.编写配置文件

    server:
      port: 10086 # 端口
    spring:
      application:
        name: eureka-server # 应用名称,会在Eureka中显示
    eureka:
      client:
        register-with-eureka: false # 是否注册自己的信息到EurekaServer,默认是true
        fetch-registry: false # 是否拉取其它服务的信息,默认是true
        service-url: # EurekaServer的地址,现在是自己的地址,如果是集群,需要加上其它Server的地址。
          defaultZone: http://127.0.0.1:${server.port}/eureka
    

    启动服务,并访问:http://127.0.0.1:10086/eureka

    在这里插入图片描述

    在这里插入图片描述

    4.将服务注册到eureka

    <!-- Eureka客户端 -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>
    

    在启动类上开启Eureka客户端功能

    @SpringBootApplication
    @EnableDiscoveryClient // 开启EurekaClient功能
    public class UserServiceDemoApplication {
    	public static void main(String[] args) {
    		SpringApplication.run(UserServiceDemoApplication.class, args);
    	}
    }
    

    编写配置

    eureka:
      client:
        service-url: # EurekaServer地址
          defaultZone: http://127.0.0.1:10086/eureka
      instance:
        prefer-ip-address: true # 当调用getHostname获取实例的hostname时,返回ip而不是host名称
        ip-address: 127.0.0.1 # 指定自己的ip信息,不指定的话会自己寻找
    
    • 这里我们添加了spring.application.name属性来指定应用名称,将来会作为应用的id使用。
    • 不用指定register-with-eureka和fetch-registry,因为默认是true

    5.消费端

    <!-- Eureka客户端 -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>
    

    在启动类开启Eureka客户端

    eureka:
      client:
        service-url: # EurekaServer地址
          defaultZone: http://127.0.0.1:10086/eureka
      instance:
        prefer-ip-address: true # 当其它服务获取地址时提供ip而不是hostname
        ip-address: 127.0.0.1 # 指定自己的ip信息,不指定的话会自己寻找
    

    跟服务提供方基本差不多都是作为eureka的客户端

    3.高可用eureka

    我们假设要搭建两条EurekaServer的集群,端口分别为:10086和10087

    server:
      port: 10086 # 端口
    spring:
      application:
        name: eureka-server # 应用名称,会在Eureka中显示
    eureka:
      client:
        service-url: # 配置其他Eureka服务的地址,而不是自己,比如10087
          defaultZone: http://127.0.0.1:10087/eureka
    

    所谓的高可用注册中心,其实就是把EurekaServer自己也作为一个服务进行注册,这样多个EurekaServer之间就能互相发现对方,从而形成集群。因此我们做了以下修改:

    • 删除了register-with-eureka=false和fetch-registry=false两个配置。因为默认值是true,这样就会吧自己注册到注册中心了。
    • 把service-url的值改成了另外一台EurekaServer的地址,而不是自己

    另外一台配置恰好相反

    server:
      port: 10087 # 端口
    spring:
      application:
        name: eureka-server # 应用名称,会在Eureka中显示
    eureka:
      client:
        service-url: # 配置其他Eureka服务的地址,而不是自己,比如10087,有多个用','隔开
          defaultZone: http://127.0.0.1:10086/eureka
    

    4.几个概念

    服务注册

    服务提供者在启动时,会检测配置属性中的:eureka.client.register-with-erueka=true参数是否正确,事实上默认就是true。如果值确实为true,则会向EurekaServer发起一个Rest请求,并携带自己的元数据信息,Eureka Server会把这些信息保存到一个双层Map结构中。第一层Map的Key就是服务名称,第二层Map的key是服务的实例id。

    服务续约

    在注册服务完成以后,服务提供者会维持一个心跳(定时向EurekaServer发起Rest请求),告诉EurekaServer:“我还活着”。这个我们称为服务的续约(renew);

    有两个重要参数可以修改服务续约的行为:

    eureka:
    instance:
    lease-expiration-duration-in-seconds: 90
    lease-renewal-interval-in-seconds: 30

    • lease-renewal-interval-in-seconds:服务续约(renew)的间隔,默认为30秒
    • lease-expiration-duration-in-seconds:服务失效时间,默认值90秒
      也就是说,默认情况下每个30秒服务会向注册中心发送一次心跳,证明自己还活着。如果超过90秒没有发送心跳,EurekaServer就会认为该服务宕机,会从服务列表中移除,这两个值在生产环境不要修改,默认即可。

    但是在开发时,这个值有点太长了,经常我们关掉一个服务,会发现Eureka依然认为服务在活着。所以我们在开发阶段可以适当调小。

    eureka:
      instance:
        lease-expiration-duration-in-seconds: 10 # 10秒即过期
        lease-renewal-interval-in-seconds: 5 # 5秒一次心跳
    

    服务消费者

    当服务消费者启动是,会检测eureka.client.fetch-registry=true参数的值,如果为true,则会从Eureka Server服务的列表只读备份,然后缓存在本地。并且每隔30秒会重新获取并更新数据。我们可以通过下面的参数来修改:

    eureka:
      client:
        registry-fetch-interval-seconds: 5
    

    生产环境中,我们不需要修改这个值。

    但是为了开发环境下,能够快速得到服务的最新状态,我们可以将其设置小一点。

    失效剔除

    有些时候,我们的服务提供方并不一定会正常下线,可能因为内存溢出、网络故障等原因导致服务无法正常工作。Eureka Server需要将这样的服务剔除出服务列表。因此它会开启一个定时任务,每隔60秒对所有失效的服务(超过90秒未响应)进行剔除。

    可以通过eureka.server.eviction-interval-timer-in-ms参数对其进行修改,单位是毫秒,生成环境不要修改。

    这个会对我们开发带来极大的不变,你对服务重启,隔了60秒Eureka才反应过来。开发阶段可以适当调整,比如10S

    自我保护

    我们关停一个服务,就会在Eureka面板看到一条警告:

    在这里插入图片描述

    这是触发了Eureka的自我保护机制。当一个服务未按时进行心跳续约时,Eureka会统计最近15分钟心跳失败的服务实例的比例是否超过了85%。在生产环境下,因为网络延迟等原因,心跳失败实例的比例很有可能超标,但是此时就把服务剔除列表并不妥当,因为服务可能没有宕机。Eureka就会把当前实例的注册信息保护起来,不予剔除。生产环境下这很有效,保证了大多数服务依然可用。

    但是这给我们的开发带来了麻烦, 因此开发阶段我们都会关闭自我保护模式:

    eureka:
      server:
        enable-self-preservation: false # 关闭自我保护模式(缺省为打开)
        eviction-interval-timer-in-ms: 1000 # 扫描失效服务的间隔时间(缺省为60*1000ms)
    
    展开全文
  • 这是eureka的注册服务直接打包而成
  • 下载压缩包解压后有两个文件夹static和templates,把这两个文件夹放在项目...如果需要汉化成其他文字可以修改templates下的ftl文件,css文件在static下,这两个文件夹在spring-cloud-netflix-eureka-server.jar里面
  • eureka架包

    2019-02-18 11:41:07
    Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的。SpringCloud将它集成在其子项目spring-cloud-netflix中,以...
  • 主要介绍了Idea导入eureka源码实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 主要介绍了详解SpringCloud eureka服务状态监听,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 本篇文章主要介绍了详解Spring boot Admin 使用eureka监控服务,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 主要介绍了详解通过docker和docker-compose实现eureka高可用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 尤里卡(Eureka)是功能丰富且高度可定制的主题。 使用Eureka,您可以轻松快捷地自定义和部署网站。 试试尤里卡 尤里卡(Eureka)致力于为提供一个优雅,功能丰富且高度可定制的主题。 如果这个项目对您有帮助,您...
  • eureka注册中心

    2018-08-10 17:55:11
    创建一个名为particle-common-eureka的maven项目,继承particle-commonservice,具体的pom.xml配置文件如下:
  • 该项目主要包含了一个springcloud框架中的服务注册与服务发现的常用框架的eureka的实例,共包含eureka-client和eureka-server两个模块,打开项目,先启动eureka-server项目,通过localhost:端口便可访问eureka-...
  • eureka配置详解

    2018-06-26 17:14:07
    springcloud中eureka的配置的详细中文介绍,可以在appliaction中进行配置
  • 主要介绍了细说Springcloud eureka的几种主动下线服务的方式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • eureka-server.rar

    2019-08-30 18:12:20
    eureka注册中心搭建,已集成了spring-security用于提升注册中心的安全性,解压导入idea即可运行
  • 一、创建此spring cloud 项目一共有四个模块,包括公用资源模块,eureka注册中心模块,提供者模块和消费者模块 本人也是刚开始学习spring cloud,写了此笔记,大家耐心看一下,我们共同学习,有不足的地方欢迎各位...
  • eureka-0.0.1-SNAPSHOT.jar

    2020-12-22 16:06:27
    eureka的jar包
  • spring cloud Eureka管理页面,添加详情、删除、上线、下线等功能。使用说明 1.找到spring cloud Eureak项目,将解压后将static放到main.java目录,templates目录放到main.resources目录 2.访问http://localhost:8260...
  • Eureka注册中心Server端

    2018-11-25 23:14:46
    Eureka是Netflix开源的一款提供服务注册和发现的产品,它提供了完整的Service Registry和Service Discovery实现。也是springcloud体系中最重要最核心的组件之一。此压缩文件是Eureka简易注册中心,并非高可用类型,
  • eureka注册中心jar包【本地测试专用】
  • 本地eureka 服务搭建

    2018-10-23 16:49:23
    一键搭建测试本地eureka服务。包含可运行bat 文件 端口为8761
  • Eureka常用问题总结

    2018-09-04 14:17:15
    Eureka常用问题总结,配置参数解析。引导优化Eureka性能配置。
  • Spring Cloud微服务,Eureka整合Ribbon做负载均衡, 此项目需要配合文章使用.....
  • Eureka部署包

    2018-11-05 17:30:05
    Eureka部署包,利用悬挂命令直接可以调用启用,端口号7517,希望可以帮到大家
  • eureka.png

    2020-05-27 22:31:12
    Spring Cloud Eureka是Spring Cloud Netflix微服务套件中的一部分,它基于Netflix Eureka做了二次封装,主要负责完成微服务架构中的服务治理功能。Spring Cloud通过为Eureka增加了Spring Boot风格的自动化配置,我们...
  • springcloud整合Eureka的demo
  • spring cloud之Eureka Server搭建,最简洁的环境搭建,帮助新手快速搭建起Eureka Server! 安装流程参考 http://lib.csdn.net/article/linux/39639
  • eureka双节点实例

    2018-06-10 20:22:24
    该压缩包内含有eureka注册中心,生产者和消费者demo,解压后请先查看根目录下的README.md,有助于使用。
  • eureka-server启动包

    2018-08-27 13:51:55
    微服务框架注册中心之eureka-server,使用版本为最新eureka版本
  • 在本例中,我们将介绍如何通过Zuul和Eureka一起使用来实现负载均衡。 我们将请求路由到注册在Spring Cloud Eureka,并通过Zuul Proxy来发现的REST服务。
  • 非Spring Boot Web项目 注册节点到Eureka Server并提供服务-附件资源

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 153,196
精华内容 61,278
关键字:

eureka