zoukankan      html  css  js  c++  java
  • 微服务的发现与注册--Eureka

    服务提供者、服务消费者、服务发现组件三者之间的关系

    1)各个微服务在启动时,将自己的网络地址等信息注册到服务发现组件中,服务发现组件会存储这些信息
    2)服务消费者可以从服务发现组件查询服务提供者的网络地址,并使用该地址调用服务提供者的接口
    3)各个微服务与服务发现组件使用一定机制(例如心跳)通信。服务发现组件如长时间无法与某微服务实例通信,就会注销该实例。

    4)微服务网络地址发生变更(如实例增减或者IP端口发生变化等)时,会重新注册到服务发现组件。使用这种方式,服务消费者就无须人工修改提供者的网络地址了。

    Eureka 简介

    Eureka是Netflix开源的服务发现组件,本身是一个基于REST的服务。它包含Server和Client两部分。
    Spring Clound将它集成在子项目Spring Cloud Netflix中,从而实现微服务的注册与发现。

    Eureka的Github地址:https://github.com/Netflix/Eureka

    Eureka Server

    提供服务发现的能力,各个微服务启动时,会向Eureka Server注册自己的信息(例如IP,端口,微服务名称等),Eureka Server会存储这些信息

    Eureka Client

    Eureka Client是一个java客户端,用于简化与Eureka Server的交互。微服务启动后,会周期性(默认30秒)地向Eureka Server发送心跳以续约自己的“租期”。
    如果Eureka Server在一定时间内没有接收到某个微服务实例的心跳,Eureka Server将会注销该实例(默认90秒)

    编写Eureka Server

    1)创建一个ArtifacId是Maven工程,添加以下依赖

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

    2)编写启动类,在启动类上添加@EnableEurekaServer注解,声明这是一个Eureka Server

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

    3)在配置文件application.yml中添加以下内容

    server: 
          port: 9999
    eureka:
           instance: 
               hostname: 127.0.0.1
           client: 
                registerWithEureka: false
                fetchRegistry: false
                serviceUrl: 
                         defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
    

    说明:
    registerWithEureka:表示是否将自己注册到Eureka Server,默认为true.
    fetchRegistry:表示是否从Eureka Server获取注册信息,默认为true.因为这是一个单点的Eureka Server,不需要同步其他的Eureka Server的数据,故设为false.
    defaultZone:设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。多个地址可用,分隔。

    这样一个Eureka Server就编写完成了。

    将微服务注册到Eureka Server

    1)在微服务项目里pom.xml添加以下依赖

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

    2)配置文件aplication.yml中添加以下配置

    spring:
      application:
        name: microservice-provider-user # 应用名
    eureka:
      client:
        service-url:
          defaultZone: http://localhost:9999/eureka
      instance:
        prefer-ip-address: true
    

    3)编写启动类,添加@EnableDiscoveryClient注解声明这是一个Eureka Client.

    @EnableDiscoveryClient
    @SpringBootApplication
    public class ProviderUserApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(LicenseApplication.class, args);
        }
    }
    
    关注公众号githubcn,免费获取更多学习视频教程

  • 相关阅读:
    K-Means原理及代码实现
    Windows 10安装Tomcat
    Maven笔记四:在Eclipse中创建java web项目
    Maven笔记三:使用Ecplise创建一个Maven项目
    Maven笔记二:Maven仓库
    Windows 10 安装Eclipse
    Maven笔记一:Maven安装与配置(Windows 10)
    Docker学习笔记五:Dockerfile
    Docker学习笔记五:docker简单实践(Docker部署Java应用)
    Zabbix笔记三:zabbix监控指标
  • 原文地址:https://www.cnblogs.com/bqh10086/p/Eureka.html
Copyright © 2011-2022 走看看