Eureka 服务的注册与发现

一、Eureka 简介

Spring Cloud Eureka 使用 Netflix Eureka 来实现服务注册与发现,它既包含了服务端组件,也包含了客户端组件:

  • Eureka 服务端 :服务的注册中心,负责维护注册的服务列表。
  • Eureka 客户端 : 在应用程序运行时,Eureka 客户端向注册中心注册自身提供的服务,并周期性地发送心跳来更新它的服务租约。同时它也能把从服务端查询到服务信息缓存到本地,并周期性地刷新服务状态。

二、项目结构

  • eureka-server 为服务注册中心,负责服务的管理;
  • eureka-client 为 Eureka 客户端。

三、三步搭建 Eureka 服务注册中心

3.1 服务端依赖

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

3.2 服务端配置

server:
  port: 8010
eureka:
  instance:
    hostname: localhost
  client:
    # 设置为 false,代表不向注册中心注册自己
    register-with-eureka: false
    # 注册中心主要用于维护服务,并不需要检索服务,所以设置为 false
    fetch-registry: false
    serviceUrl:
          defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

3.3 @EnableEurekaServer

在启动类上增加 @EnableEurekaServer 注解来激活 Eureka 服务端自动配置:

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

四、三步搭建 Eureka 客户端

4.1 客户端依赖

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

4.2 客户端配置

server:
  port: 8020
# 指定服务命名
spring:
  application:
    name: eureka-client
# 指定注册中心地址
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8010/eureka/

4.3 @EnableDiscoveryClient

在启动类上增加 @EnableDiscoveryClient 注解来激活 Eureka 客户端自动配置:

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

五、启动项目

进入注册中心控制台,查看服务注册情况: