美文网首页
Eureka服务发现

Eureka服务发现

作者: java_飞 | 来源:发表于2018-12-26 10:26 被阅读23次

    Eureka服务发现

    服务发现概述

    • 服务发现机制是为了解决硬网络编码问题,服务消费者使用这种机制获取服务提供者网络信息,当微服务网络地址发生变更(例如IP或端口),会重新注册到服务发现组件,而服务消费者就无须人工修改网络地址了。
    • 服务提供者、服务消费者、服务发现之间的关系如下:
      • 微服务在启动时,将自己的网络地址等信息注入到服务发现组件中,服务发现组件会存储这些信息
      • 服务消费者可以从服务发现组件查询服务提供者的网络地址,并使用该地址调用服务提供者的接口
      • 各个微服务与服务发现组件使用一定的机制(心跳)通信,服务组件如长时间无法与某微服务实例通信,就会注销该实例
    • 服务发现组件功能:
      • 服务注册表:是服务发现组件的核心,用来记录微服务信息,如名称、IP、端口等,提供查询和管理API,注册和注销
      • 服务注册与服务发现:服务注册是指服务在启动时将自己信息发送到服务注册组件上,服务发现是指查询可用微服务列表及网络地址的机制
      • 服务检查:服务发现组件检测已注册的服务,若某一个服务长时间无法访问则移除该实例

    Eureka Demo

    pom引入

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

    启动类

    @SpringBootApplication
    @EnableEurekaServer
    public class EurekaApplication {
        public static void main(String[] args) {
            SpringApplication.run(EurekaApplication.class, args);
        }
    }
    

    application配置

    server:
      port: 8761                  #配置端口
    eureka:
      client:
        register-with-eureka: false   #是否向服务端注册自己,它本身就是Eureka Server,所以为false
        fetch-registry: false         #表示是否从Eureka Server获取信息,因为这是一个单节点,不需要同步其它Eureka Server的数据,所以为 false
        service-url:
          defaultZone: http://localhost:8761/eureka/    #设置 Eureka Client 与 Eureka Server 同步的地址,注册、查询服务都要使用该地址,多个地址可用逗号分隔
    

    启动服务后,访问 http://localhost:8761/ 则可看到 Eureka 后台

    Eureka高可用

    1.利用上面的demo,创建两个配置文件:

    第一个application-eureka1.yml:

    server:
      port: 20001
    eureka:
      instance:
        hostname: eureka1
      client:
        ## 是否向注册中心注册自己
        register-with-eureka: true
        ## 是否去检索其他的服务,因为服务注册中心本身的职责就是维护服务实例,它也不需要去检索其他服务
        fetch-registry: true
        service-url:
          defaultZone: http://eureka2:20002/eureka/
    

    第二个application-eureka2.yml:

    server:
      port: 20002
    eureka:
      instance:
        hostname: eureka2
      client:
        ## 是否向注册中心注册自己
        register-with-eureka: true
        ## 是否去检索其他的服务,因为服务注册中心本身的职责就是维护服务实例,它也不需要去检索其他服务
        fetch-registry: true
        service-url:
          defaultZone: http://eureka1:20001/eureka/
    

    注意:记得在本机电脑host配置文件中配置,eureka1和eureka2的地址映射

    192.168.1.214 eureka1
    127.0.0.1 eureka2
    

    注意:

    1.两个映射必须配置成不一样的,否则在web管理页面将看不到replicas,也就是集群配置无法生效

    2.配置文件中register-with-eureka和fetch-registry两个参数必须设置为true,否在集群配置生效但是不可用

    相关文章

      网友评论

          本文标题:Eureka服务发现

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