微服务组件——Eureka组件的安装与使用指南

文章目录

  • 一、Eureka Server的安装与配置
    • 1、创建Spring Boot项目
    • 2、添加依赖
    • 3、配置Eureka Server
    • 4、启用Eureka Server
    • 5、启动并访问Dashboard
  • 二、Eureka Client的配置(服务注册)
    • 1、添加客户端依赖
    • 2、配置客户端
    • 3、启用服务发现
    • 4、启动服务
  • 三、服务发现与调用
    • 1、使用RestTemplate调用服务
    • 2、使用FeignClient(声明式调用)
  • 四、高可用配置(Eureka集群)
    • 1、配置多个Eureka Server节点
    • 2、客户端注册到集群
  • 五、常见问题与调优
    • 1、服务无法注册
    • 2、调整心跳与剔除时间
    • 3、关闭自我保护模式(开发环境)
  • 六、注意事项

Eureka是Netflix开源的服务发现组件,用于微服务架构中的服务注册与发现。以下是详细的安装和使用步骤:

一、Eureka Server的安装与配置

1、创建Spring Boot项目

  • 使用Spring Initializr创建项目,选择Spring Boot版本(如2.5.x)并添加依赖:
    • Spring Web(构建Web应用)
    • Eureka Server(服务端支持)

2、添加依赖

xml 复制代码
<!-- Maven依赖 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>

3、配置Eureka Server

  • 在application.yml中配置:
yaml 复制代码
server:
  port: 8761  # 默认端口

eureka:
  client:
    register-with-eureka: false  # 不注册自己
    fetch-registry: false        # 不拉取注册表
    service-url:
      defaultZone: http://localhost:8761/eureka  # 服务地址

4、启用Eureka Server

  • 在启动类添加注解:
java 复制代码
@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class, args);
    }
}

5、启动并访问Dashboard

二、Eureka Client的配置(服务注册)

1、添加客户端依赖

xml 复制代码
<!-- Maven依赖 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

2、配置客户端

  • 在application.yml中指定Eureka Server地址:
yaml 复制代码
spring:
  application:
    name: user-service  # 服务名称

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka

3、启用服务发现

  • 在启动类添加注解(可选,Spring Boot自动激活):
java 复制代码
@SpringBootApplication
@EnableEurekaClient  // 或 @EnableDiscoveryClient
public class UserServiceApplication {
    public static void main(String[] args) {
        SpringApplication.run(UserServiceApplication.class, args);
    }
}

4、启动服务

  • 客户端启动后,在Eureka Dashboard中查看注册状态。

三、服务发现与调用

1、使用RestTemplate调用服务

  • 启用负载均衡:
java 复制代码
@Bean
@LoadBalanced  // 通过服务名解析地址
public RestTemplate restTemplate() {
    return new RestTemplate();
}
  • 调用其他服务:
java 复制代码
String serviceUrl = "http://user-service/getUser/1";
ResponseEntity<String> response = restTemplate.getForEntity(serviceUrl, String.class);

2、使用FeignClient(声明式调用)

  • 添加依赖:
xml 复制代码
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
  • 启用Feign:
java 复制代码
@EnableFeignClients
@SpringBootApplication
public class OrderServiceApplication { ... }
  • 定义接口:
java 复制代码
@FeignClient(name = "user-service")
public interface UserServiceClient {
    @GetMapping("/getUser/{id}")
    String getUser(@PathVariable("id") Long id);
}

四、高可用配置(Eureka集群)

1、配置多个Eureka Server节点

  • 修改每个节点的application.yml,相互注册:
yaml 复制代码
# 节点1配置
eureka:
  client:
    service-url:
      defaultZone: http://node2:8762/eureka

2、客户端注册到集群

  • 客户端配置多个Server地址:
yaml 复制代码
eureka:
  client:
    service-url:
      defaultZone: http://node1:8761/eureka, http://node2:8762/eureka

五、常见问题与调优

1、服务无法注册

  • 检查客户端配置的defaultZone是否正确。
  • 确保Eureka Server已启动且网络可达。

2、调整心跳与剔除时间

yaml 复制代码
eureka:
  instance:
    lease-renewal-interval-in-seconds: 30   # 客户端心跳间隔(默认30秒)
    lease-expiration-duration-in-seconds: 90 # 服务端剔除时间(默认90秒)

3、关闭自我保护模式(开发环境)

yaml 复制代码
eureka:
  server:
    enable-self-preservation: false  # 关闭自我保护

六、注意事项

  • 版本兼容性:确保Spring Cloud与Spring Boot版本匹配(参考官方版本对照表)。
  • 生产环境建议:启用安全认证、配置集群以提高可用性。
  • 替代方案:Eureka已进入维护模式,可考虑Consul、Nacos等现代服务发现工具。

通过以上步骤,您可以在微服务架构中快速集成Eureka,实现服务的注册、发现与调用。

相关推荐
程序员 小柴4 小时前
docker的与使用
java·docker·eureka
码熔burning6 小时前
【Spring Cloud Alibaba】:Nacos 入门讲解
分布式·spring cloud·微服务
极客先躯17 小时前
高级java每日一道面试题-2025年3月22日-微服务篇[Nacos篇]-Nacos的主要功能有哪些?
java·开发语言·微服务
喵个咪1 天前
开箱即用的GO后台管理系统 Kratos Admin - 定时任务
后端·微服务·消息队列
liuhaoran___1 天前
介绍 Docker 的基本概念和优势,以及在应用程序开发中的实际应用及数组讲解
云原生·eureka
工业互联网专业1 天前
基于springcloud微服务架构的巡游出租管理平台
java·vue.js·spring cloud·微服务·毕业设计·源码·课程设计
陌言不会python1 天前
谷粒微服务高级篇学习笔记整理---thymeleaf
笔记·学习·微服务
极客先躯2 天前
高级java每日一道面试题-2025年3月21日-微服务篇[Nacos篇]-什么是Nacos?
java·开发语言·微服务
程序员ys2 天前
微前端是什么?
微服务·架构·前端框架