微服务组件——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,实现服务的注册、发现与调用。

相关推荐
rKWP8gKv717 分钟前
Java微服务性能监控:Prometheus与Grafana集成方案
java·微服务·prometheus
aXin_ya3 小时前
微服务第八天 Sentinel 四种分布式事务模式
java·数据库·微服务
该昵称用户已存在6 小时前
以开源筑基,架构先行——深度拆解 MyEMS 微服务能源管理系统的技术内核
微服务·架构·开源
身如柳絮随风扬8 小时前
多数据源切换实战:从业务场景到3种实现方案全解析
java·分布式·微服务
日取其半万世不竭12 小时前
PeerTube 部署指南:自建视频托管平台
云原生·eureka·音视频
空中海13 小时前
Docker入门到精通
java·docker·eureka
aXin_ya14 小时前
微服务第九天 分布式缓存(Redis)
分布式·缓存·微服务
phltxy14 小时前
告别繁琐URL!Spring Cloud OpenFeign 优雅实现微服务远程调用
spring·spring cloud·微服务
bzmK1DTbd14 小时前
微服务架构设计:Spring Cloud Gateway与Nacos集成
java·spring·微服务
村头的猫14 小时前
JWT 令牌的工作原理,结构和签名验证
前端·数据库·经验分享·微服务