当前位置: 首页 > news >正文

微服务Eureka组件的介绍、安装、使用

微服务 Eureka 组件的介绍、安装与使用详解

在微服务架构中,服务注册与发现是至关重要的一环,而 Eureka 作为 Netflix 开源的服务注册中心,广泛应用于 Spring Cloud 微服务体系中。本文将带你全面了解 Eureka 的概念、安装及在 Spring Boot 中的使用方法。


1️⃣ Eureka 概念介绍

Eureka 是一个基于 REST 的服务注册与发现组件,主要用于微服务系统中:

  • 服务注册:微服务启动时向 Eureka Server 注册自己的信息(IP、端口、服务名等)。
  • 服务发现:微服务调用方从 Eureka Server 获取其他服务的实例信息,实现动态调用。
  • 健康检查:Eureka 会定期检测注册服务的状态,剔除不可用实例。

Eureka 角色:

  • Eureka Server:服务注册中心
  • Eureka Client:微服务客户端,既向 Server 注册,又能发现其他服务

2️⃣ Eureka 的特点

  1. 基于 REST 的轻量级注册中心
  2. 高可用:支持集群部署,自动复制注册信息
  3. 自我保护机制:当网络异常导致大量服务下线时,防止误剔除
  4. 与 Spring Cloud 完美集成:配置简单,开箱即用

3️⃣ Eureka Server 的安装与配置

假设我们使用 Spring Boot + Spring Cloud Netflix Eureka

3.1 新建 Spring Boot 项目

  • 添加依赖(Maven):
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.example</groupId><artifactId>eureka-server-demo</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.1.4</version><relativePath/></parent><properties><java.version>17</java.version><spring-cloud.version>2022.0.4</spring-cloud.version></properties><dependencies><!-- Eureka Server --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency><!-- Spring Boot Web --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies><dependencyManagement><dependencies><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>
</project>

3.2 启动类添加注解

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {public static void main(String[] args) {SpringApplication.run(EurekaServerApplication.class, args);}
}

3.3 配置 application.yml

server:port: 8761eureka:client:register-with-eureka: false # Server 不注册自己fetch-registry: false # Server 不需要获取注册表
spring:application:name: eureka-server-demo

启动后访问:

http://localhost:8761

你会看到 Eureka Server 的管理界面。


4️⃣ Eureka Client 的安装与使用

4.1 添加依赖

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

4.2 配置 application.yml

spring:application:name: javaquestion-service  # 服务名
server:port: 8081
eureka:client:service-url:defaultZone: http://localhost:8761/eureka/

4.3 启动类添加注解

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;@SpringBootApplication
@EnableDiscoveryClient
public class JavaQuestionServiceApplication {public static void main(String[] args) {SpringApplication.run(JavaQuestionServiceApplication.class, args);}
}

启动后,你可以在 Eureka Server 界面看到注册成功的服务。


5️⃣ 服务调用示例(Feign + Eureka)

5.1 添加依赖

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

5.2 创建 Feign 接口

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;@FeignClient(name = "javaquestion-service")
public interface JavaQuestionClient {@GetMapping("/javaquestion/list")String getQuestions();
}

5.3 使用 Feign 调用

@RestController
@RequestMapping("/api")
public class TestController {@Resourceprivate JavaQuestionClient javaQuestionClient;@GetMapping("/questions")public String getQuestions() {return javaQuestionClient.getQuestions();}
}

调用时无需关心服务实例的 IP 和端口,Eureka 会自动发现可用实例。


6️⃣ Eureka 集群部署

  • 多个 Eureka Server 互相注册,形成高可用集群
  • 配置示例(application.yml):
eureka:client:service-url:defaultZone: http://eureka1:8761/eureka/,http://eureka2:8761/eureka/

这样一个 Eureka Server 宕机,其他仍可提供服务注册和发现。


7️⃣ 总结

Eureka 作为微服务注册与发现组件,具有轻量、高可用、易集成的特点。
在 Spring Cloud 微服务中,它实现了:

  • 服务动态注册
  • 服务发现
  • 客户端负载均衡
  • 与 Feign 等组件无缝集成

通过 Eureka,你的微服务系统可以动态扩缩容,同时保证服务调用稳定可靠。

http://www.xdnf.cn/news/1385137.html

相关文章:

  • 编程与数学 03-004 数据库系统概论 06_需求分析
  • CMake xcode编译器属性设置技巧
  • PDF转图片工具实现
  • R 语言 + 卒中 Meta 分析(续):机器学习 Meta 与结构方程 Meta 完整实现
  • 生成式 AI 的下一个风口:从 “生成内容” 到 “生成工具”,如何落地产业场景?
  • android 不同分辨图片放错对应文件夹会怎样?
  • RxGalleryFinal:全能Android图片视频选择器
  • PHP的header()函数分析
  • 数字孪生技术为UI前端赋能:实现产品性能的实时监测与预警
  • 神经科学启发下的自然语言处理:迈向深层语义理解的探索
  • 从2M到G时代:WiFi如何重塑我们的生活?
  • 高德三维地图航线航点弹出框zMarkerLayer点击事件
  • ArcGIS Pro 地图打包与解包
  • 研究人员发现VS Code漏洞:攻击者可重新发布同名已删除扩展
  • 深入理解会话状态管理:多轮对话与API最佳实践
  • STM32的RTC模块及其应用场景
  • 【项目思维】编程思维学习路线(推荐)
  • Golang 面试题「中级」
  • GPT-5 模型 API 中转对接技术精讲:高性价比集成方案与深度性能优化实践
  • 交互设计 | 无人机控制系统的 UI 设计:从人机交互到任务管理
  • 电平移位器的原理
  • 179-183动画
  • Martin Fowler分享了他对大语言模型(LLM)与软件开发现状的一些思考
  • 基于互补素数与最小素因子性质的哥德巴赫猜想证明-陈墨仙
  • VSCODE vue 快速构建模板
  • 如何从 iCloud 存储中删除消息的 4 种方法
  • 【打包压缩】tar包和命令格式简介
  • leetcode算法刷题的第二十一天
  • C# 一个投资跟踪程序的设计与实现:面向对象与设计模式的深度解析
  • Ansys 19 Mechanical 流体密封分析