美文网首页
Eureka——微服务的注册与发现

Eureka——微服务的注册与发现

作者: JacobY | 来源:发表于2018-01-13 21:23 被阅读0次

    1 Eureka 简介

    Eureka 是Netflix 开源的服务发现组件, Spring Cloud 将其集成在 Spring Cloud Netflix 中,实现服务的注册和发现。Eureka 主要包含两个组件: Eureka Server 和 Eureka Client。 两者的作用如下:

    • Eureka Server 提供服务发现的功能, 各个微服务会将自己的信息注册到Eureka Server。
    • Eureka Client 即服务提供者,将其信息注册到Eureka Server上面。
    • 微服务会周期性(默认30秒)地向Eureka Server 发送心跳以维持自己的注册状态,如果Eureka Server 在一定时间(默认90秒)没有接受到某个微服务实例的心跳,Eureka Server 将会注销该实例。
    • 默认情况下,Eureka Server 同时也是 Client, 多个Eureka Server 实例之间可以通过复制的方法, 来实现服务注册表数据的同步。
    • Eureka Client 会缓存服务注册表中的信息,所以 Eureka Client 无须每次调用微服务都要先查询Eureka Server,能有效地缓解Eureka Server的压力,而且即使所有的Eureka Server节点都宕掉,Client 依然可以根据缓存中信息找到服务提供者。

    2 创建Eureka Server

    创建一个Eureka Server 的步骤主要如下(用Maven构建的Spring Boot项目):

    1. 添加如下依赖:
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-eureka-server</artifactId>
            </dependency>
    
    1. 在启动类使用@EnableEurekaServer声明该应用为Eureka Server
    @EnableEurekaServer
    @SpringBootApplication
    public class EurekaServerDemoApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(EurekaServerDemoApplication.class, args);
        }
    }
    

    到这里,其实该Eureka Server 已经可以启动使用。不过为了更好地使用,可以添加下面的配置。

    1. 添加配置:
    server:
      port: 8001
    eureka:
      client:
        register-with-eureka: false
        fetch-registry: false
    
    • eureka.client.register-with-eureka 属性表示是否将自己注册到Eureka Server, 默认为true。 由于当前应用就是Eureka Server, 因此设为 false;
    • eureka.client.fetch-registry 表示是否从Eureka Server获取注册信息,默认为true。 如果这是一个单点的 Eureka Server,不需要同步其他节点的数据,可以设为false。

    3 创建Eureka Client

    1. 添加Maven依赖:
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-eureka</artifactId>
            </dependency>
    
    1. 在启动类使用@EnableDiscoveryClient或者@EnableEurekaClient声明该应用为Eureka Client
    @EnableDiscoveryClient
    @SpringBootApplication
    public class EurekaClientDemoApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(EurekaClientDemoApplication.class, args);
        }
    }
    

    @EnableDiscoveryClient或者@EnableEurekaClient的区别在于前者是后者的抽象。在Spring Cloud 中,服务发现组件有多种,@EnableDiscoveryClient为各种服务组件提供了支持,而@EnableEurekaClient则只能与Eureka一起工作。在Edgware版本之后,不再需要添加该注解。

    1. 添加配置:
    server:
      port: 8002
    spring:
      application:
        name: eureka-client-demo
    eureka:
      client:
        service-url:
          defaultZone: http://localhost:8001/eureka/
    

    eureka.client.service-url.defaultZone 用于设置与Eureka Server 交互的地址

    相关文章

      网友评论

          本文标题:Eureka——微服务的注册与发现

          本文链接:https://www.haomeiwen.com/subject/pmfhoxtx.html