Eureka——服务注册与发现



前言

Eureka是Netflix开发的服务发现框架,主要提供服务发现功能。SpringCloud将它集成在其子项目Spring-Cloud-Netflix中,以实现SpringCloud的服务发现功能。其包含Eureka ServerEureka Client两部分,服务端提供服务注册,当客户端服务启动的时候,会主动向服务端进行注册,服务端会存储所有已经注册服务节点信息。虽然Eureka已经停更了,人们目前讨论更多是Nacos,但是任然有许多公司沿用。

环境准备

  • Windows7
  • JDK: 8
  • Maven:3.6.1
  • SpringCloud:Hoxton.SR4
  • SpringBoot:2.2.2.RELEASE

工程搭建

工程目录

此文只需关注红框所示部分

C:\Users\user\AppData\Roaming\Typora\typora-user-images

创建父工程

  1. 父POM文件内容

     
        <!-- 统一管理jar包版本 -->
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <maven.compiler.source>1.8</maven.compiler.source>
            <maven.compiler.target>1.8</maven.compiler.target>
            <spring.boot.version>2.2.2.RELEASE</spring.boot.version>
            <spring.cloud.version>Hoxton.SR4</spring.cloud.version>
        </properties>
    
    
    <!-- 子模块继承之后,提供作用:锁定版本 + 子module不用谢groupId和version -->
        <dependencyManagement>
            <dependencies>
                <!--spring boot 2.2.2-->
                <dependency>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-dependencies</artifactId>
                    <version>${spring.boot.version}</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
                <!--spring cloud Hoxton.SR4-->
                <dependency>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-dependencies</artifactId>
                    <version>${spring.cloud.version}</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
            </dependencies>
        </dependencyManagement>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    

创建Eureka Server

创建名称为cloud-eureka-sever7001的模块工程

  1. POM文件内容

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
    </dependency>
    
  2. 主启动类

    @SpringBootApplication
    @EnableEurekaServer   //启用Euerka注册中心功能
    public class EurekaServer7001 {
        public static void main(String[] args) {
            SpringApplication.run(EurekaServer7001.class, args);
        }
    }
    
    
  3. application.yml文件

# 指定运行端口
server:
  port: 7001

# 指定服务名称
spring:
  application:
    name: EUREKA-SERVER-7001

# 指定主机地址
eureka:
  instance:
    hostname: localhost
  client:
    # 指定是否从注册中心获取服务(注册中心不需要开启)
    fetch-registry: false
    # 指定是否将服务注册到注册中心(注册中心不需要开启)
    register-with-eureka: false
    service-url:
      defaultZone: http://localhost:7001/eureka/ # 配置注册中心地址 不搭建集群,即单机模式则指向自己

创建Eureka Client

创建名称为cloud-consumer-order的模块工程

  1. POM文件内容
 <dependencies>
        <!--eureka-server-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
  </dependencies>
  1. 主启动类
@EnableDiscoveryClient   //表明是一个Eureka客户端
@SpringBootApplication
public class EurekaClientApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaClientApplication.class, args);
    }
}

  1. application.yml文件
# 指定运行端口
server:
  port: 8001

# 指定服务名称
spring:
  application:
    name: CONSUMER-SERVICE-8001 

eureka:
  client:
    register-with-eureka: true #表示向注册中心注册自己 默认为true
    fetch-registry: true #是否从EurekaServer抓取已有的注册信息,默认为true,单节点无所谓,集群必须设置为true才能配合ribbon使用负载均衡
    service-url:
      # 配置注册中心地址
      defaultZone: http://localhost:7001/eureka
#Eureka服务列表名称显示设置      
instance:
  instance-id: ORDER-8001   #实例名称
  prefer-ip-address: true #显示访问路径的ip地址

测试

  • 启动cloud-eureka-server7001cloud-consumer-order工程,端口分别为7001和8001;

  • 访问http://localhost:7001

在这里插入图片描述

搭建双注册中心

工程搭建

创建Eureka Server集群
  • 将cloud-eureka-server7001模块复制一份

  • 修改模块工程名为创cloud-eureka-sever7002

  • 由于集群环境在本机,配置hosts文件,通过主机名区分两个Eureka Server

    进入C:\Windows\System32\drivers\etc

在这里插入图片描述

在hosts文件中添加以下内容:

 #Eureka Start
 127.0.0.1 eureka01.com
 127.0.0.1 eureka02.com
 #Eureka End
  • 修改配置文件内容

    7001工程application.yml文件内容:

      server:
        port: 7001
    
      eureka:
        instance:
          hostname: eureka01.com #eureka服务端实例名称
        client:
          register-with-eureka: false #表示不向注册中心注册自己
          fetch-registry: false #false表示自己就是注册中心,我的职责就是维护服务实例,并不区检索服务
          service-url:
    #        defaultZone: http://localhost:7001/eureka/ # 不搭建集群 单机 指向自己
            defaultZone: http://eureka02.com:7002/eureka/,http://eureka01.com:7001/eureka/ # 搭建集群 集群是指向其他eureka
    

    7002工程配置文件内容

      server:
        port: 7002
    
      eureka:
        instance:
          hostname: eureka02.com #eureka服务端实例名称
        client:
          register-with-eureka: false #表示不向注册中心注册自己
          fetch-registry: false #false表示自己就是注册中心,我的职责就是维护服务实例,并不区检索服务
          service-url:
    #        defaultZone: http://localhost:7001/eureka/ # 不搭建集群 单机 指向自己
            defaultZone: http://eureka02.com:7002/eureka/,http://eureka02.com:7001/eureka/ # 搭建集群 集群是指向其他eureka
    
测试
  • 启动这两个工程,端口分别为7001,7002;
  • 访问http://eureka01:7001

在这里插入图片描述

  • 访问http://eureka02:7002

在这里插入图片描述


参考代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值